3 namespace Drupal\Tests\field\Kernel\Migrate\d7;
5 use Drupal\Core\Entity\Display\EntityFormDisplayInterface;
6 use Drupal\Core\Entity\Entity\EntityFormDisplay;
7 use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;
10 * Migrate field widget settings.
14 class MigrateFieldInstanceWidgetSettingsTest extends MigrateDrupal7TestBase {
21 public static $modules = [
38 protected function setUp() {
41 $this->installEntitySchema('node');
42 $this->installEntitySchema('comment');
43 $this->installEntitySchema('taxonomy_term');
44 $this->installConfig(static::$modules);
46 $this->executeMigrations([
49 'd7_taxonomy_vocabulary',
52 'd7_field_instance_widget_settings',
57 * Asserts various aspects of a form display entity.
61 * @param string $expected_entity_type
62 * The expected entity type to which the display settings are attached.
63 * @param string $expected_bundle
64 * The expected bundle to which the display settings are attached.
66 protected function assertEntity($id, $expected_entity_type, $expected_bundle) {
67 /** @var \Drupal\Core\Entity\Display\EntityFormDisplayInterface $entity */
68 $entity = EntityFormDisplay::load($id);
69 $this->assertTrue($entity instanceof EntityFormDisplayInterface);
70 $this->assertIdentical($expected_entity_type, $entity->getTargetEntityTypeId());
71 $this->assertIdentical($expected_bundle, $entity->getTargetBundle());
75 * Asserts various aspects of a particular component of a form display.
77 * @param string $display_id
78 * The form display ID.
79 * @param string $component_id
81 * @param string $widget_type
82 * The expected widget type.
83 * @param string $weight
84 * The expected weight of the component.
86 protected function assertComponent($display_id, $component_id, $widget_type, $weight) {
87 $component = EntityFormDisplay::load($display_id)->getComponent($component_id);
88 $this->assertTrue(is_array($component));
89 $this->assertIdentical($widget_type, $component['type']);
90 $this->assertIdentical($weight, $component['weight']);
94 * Test that migrated view modes can be loaded using D8 APIs.
96 public function testWidgetSettings() {
97 $this->assertEntity('node.page.default', 'node', 'page');
98 $this->assertComponent('node.page.default', 'body', 'text_textarea_with_summary', -4);
99 $this->assertComponent('node.page.default', 'field_text_plain', 'string_textfield', -2);
100 $this->assertComponent('node.page.default', 'field_text_filtered', 'text_textfield', 0);
101 $this->assertComponent('node.page.default', 'field_text_long_plain', 'string_textarea', 4);
102 $this->assertComponent('node.page.default', 'field_text_long_filtered', 'text_textarea', 6);
103 $this->assertComponent('node.page.default', 'field_text_sum_filtered', 'text_textarea_with_summary', 12);
105 $this->assertEntity('node.article.default', 'node', 'article');
106 $this->assertComponent('node.article.default', 'body', 'text_textarea_with_summary', -4);
107 $this->assertComponent('node.article.default', 'field_tags', 'entity_reference_autocomplete', -4);
108 $this->assertComponent('node.article.default', 'field_image', 'image_image', -1);
109 $this->assertComponent('node.article.default', 'field_text_plain', 'string_textfield', 11);
110 $this->assertComponent('node.article.default', 'field_text_filtered', 'text_textfield', 12);
111 $this->assertComponent('node.article.default', 'field_text_long_plain', 'string_textarea', 14);
112 $this->assertComponent('node.article.default', 'field_text_long_filtered', 'text_textarea', 15);
113 $this->assertComponent('node.article.default', 'field_text_sum_filtered', 'text_textarea_with_summary', 18);
115 $this->assertEntity('node.blog.default', 'node', 'blog');
116 $this->assertComponent('node.blog.default', 'body', 'text_textarea_with_summary', -4);
118 $this->assertEntity('node.book.default', 'node', 'book');
119 $this->assertComponent('node.book.default', 'body', 'text_textarea_with_summary', -4);
121 $this->assertEntity('node.forum.default', 'node', 'forum');
122 $this->assertComponent('node.forum.default', 'body', 'text_textarea_with_summary', 1);
123 $this->assertComponent('node.forum.default', 'taxonomy_forums', 'options_select', 0);
125 $this->assertEntity('node.test_content_type.default', 'node', 'test_content_type');
126 $this->assertComponent('node.test_content_type.default', 'field_boolean', 'boolean_checkbox', 1);
127 $this->assertComponent('node.test_content_type.default', 'field_date', 'datetime_default', 2);
128 $this->assertComponent('node.test_content_type.default', 'field_date_with_end_time', 'datetime_default', 3);
129 $this->assertComponent('node.test_content_type.default', 'field_email', 'email_default', 4);
130 $this->assertComponent('node.test_content_type.default', 'field_file', 'file_generic', 5);
131 $this->assertComponent('node.test_content_type.default', 'field_float', 'number', 7);
132 $this->assertComponent('node.test_content_type.default', 'field_images', 'image_image', 8);
133 $this->assertComponent('node.test_content_type.default', 'field_integer', 'number', 9);
134 $this->assertComponent('node.test_content_type.default', 'field_link', 'link_default', 10);
135 $this->assertComponent('node.test_content_type.default', 'field_integer_list', 'options_buttons', 12);
136 $this->assertComponent('node.test_content_type.default', 'field_long_text', 'text_textarea_with_summary', 13);
137 $this->assertComponent('node.test_content_type.default', 'field_phone', 'telephone_default', 6);
138 $this->assertComponent('node.test_content_type.default', 'field_term_reference', 'entity_reference_autocomplete', 14);
139 $this->assertComponent('node.test_content_type.default', 'field_node_entityreference', 'entity_reference_autocomplete', 16);
140 $this->assertComponent('node.test_content_type.default', 'field_user_entityreference', 'options_buttons', 17);
141 $this->assertComponent('node.test_content_type.default', 'field_term_entityreference', 'entity_reference_autocomplete_tags', 18);
142 $this->assertComponent('node.test_content_type.default', 'field_text', 'string_textfield', 15);
143 $this->assertComponent('node.test_content_type.default', 'field_text_list', 'options_select', 11);
145 $this->assertEntity('user.user.default', 'user', 'user');
146 $this->assertComponent('user.user.default', 'field_file', 'file_generic', 8);
148 $this->assertEntity('comment.comment_node_test_content_type.default', 'comment', 'comment_node_test_content_type');
149 $this->assertComponent('comment.comment_node_test_content_type.default', 'comment_body', 'text_textarea', 0);
150 $this->assertComponent('comment.comment_node_test_content_type.default', 'field_integer', 'number', 2);
152 $this->assertEntity('taxonomy_term.test_vocabulary.default', 'taxonomy_term', 'test_vocabulary');
153 $this->assertComponent('comment.comment_node_test_content_type.default', 'field_integer', 'number', 2);