X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=web%2Fcore%2Fmodules%2Flayout_builder%2Ftests%2Fsrc%2FKernel%2FLayoutBuilderInstallTest.php;fp=web%2Fcore%2Fmodules%2Flayout_builder%2Ftests%2Fsrc%2FKernel%2FLayoutBuilderInstallTest.php;h=fa646df1c91b10564a04df86110ec6e9fcd80d20;hb=af6d1fb995500ae68849458ee10d66abbdcfb252;hp=0000000000000000000000000000000000000000;hpb=680c79a86e3ed402f263faeac92e89fb6d9edcc0;p=yaffs-website diff --git a/web/core/modules/layout_builder/tests/src/Kernel/LayoutBuilderInstallTest.php b/web/core/modules/layout_builder/tests/src/Kernel/LayoutBuilderInstallTest.php new file mode 100644 index 000000000..fa646df1c --- /dev/null +++ b/web/core/modules/layout_builder/tests/src/Kernel/LayoutBuilderInstallTest.php @@ -0,0 +1,90 @@ +assertFieldAttributes($this->entity, $expected_fields); + + $this->installLayoutBuilder(); + + // Without using Layout Builder for an override, the result has not changed. + $this->assertFieldAttributes($this->entity, $expected_fields); + + // Add a layout override. + $this->entity->get('layout_builder__layout')->appendSection(new Section('layout_onecol')); + $this->entity->save(); + + // The rendered entity has now changed. The non-configurable field is shown + // outside the layout, the configurable field is not shown at all, and the + // layout itself is rendered (but empty). + $new_expected_fields = [ + 'field field--name-name field--type-string field--label-hidden field__item', + 'clearfix text-formatted field field--name-test-display-non-configurable field--type-text field--label-above', + 'clearfix text-formatted field field--name-test-display-multiple field--type-text field--label-above', + ]; + $this->assertFieldAttributes($this->entity, $new_expected_fields); + $this->assertNotEmpty($this->cssSelect('.layout--onecol')); + + // Removing the layout restores the original rendering of the entity. + $this->entity->get('layout_builder__layout')->removeSection(0); + $this->entity->save(); + $this->assertFieldAttributes($this->entity, $expected_fields); + + // Test that adding a new field after Layout Builder has been installed will + // add the new field to the default region of the first section. + $field_storage = FieldStorageConfig::create([ + 'entity_type' => 'entity_test_base_field_display', + 'field_name' => 'test_field_display_post_install', + 'type' => 'text', + ]); + $field_storage->save(); + FieldConfig::create([ + 'field_storage' => $field_storage, + 'bundle' => 'entity_test_base_field_display', + 'label' => 'FieldConfig with configurable display', + ])->save(); + + $this->entity = $this->reloadEntity($this->entity); + $this->entity->test_field_display_post_install = 'Test string'; + $this->entity->save(); + + $this->display = $this->reloadEntity($this->display); + $this->display + ->setComponent('test_field_display_post_install', ['weight' => 50]) + ->save(); + $new_expected_fields = [ + 'field field--name-name field--type-string field--label-hidden field__item', + 'field field--name-test-field-display-configurable field--type-boolean field--label-above', + 'clearfix text-formatted field field--name-test-display-configurable field--type-text field--label-above', + 'clearfix text-formatted field field--name-test-field-display-post-install field--type-text field--label-above', + 'clearfix text-formatted field field--name-test-display-non-configurable field--type-text field--label-above', + 'clearfix text-formatted field field--name-test-display-multiple field--type-text field--label-above', + ]; + $this->assertFieldAttributes($this->entity, $new_expected_fields); + $this->assertNotEmpty($this->cssSelect('.layout--onecol')); + $this->assertText('Test string'); + } + +}