Security update for Core, with self-updated composer
[yaffs-website] / web / core / modules / field / tests / src / Kernel / Migrate / d7 / MigrateFieldInstanceWidgetSettingsTest.php
1 <?php
2
3 namespace Drupal\Tests\field\Kernel\Migrate\d7;
4
5 use Drupal\Core\Entity\Display\EntityFormDisplayInterface;
6 use Drupal\Core\Entity\Entity\EntityFormDisplay;
7 use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;
8
9 /**
10  * Migrate field widget settings.
11  *
12  * @group field
13  */
14 class MigrateFieldInstanceWidgetSettingsTest extends MigrateDrupal7TestBase {
15
16   /**
17    * Modules to enable.
18    *
19    * @var array
20    */
21   public static $modules = [
22     'comment',
23     'datetime',
24     'field',
25     'file',
26     'image',
27     'link',
28     'node',
29     'taxonomy',
30     'telephone',
31     'text',
32     'menu_ui',
33   ];
34
35   /**
36    * {@inheritdoc}
37    */
38   protected function setUp() {
39     parent::setUp();
40
41     $this->installEntitySchema('node');
42     $this->installEntitySchema('comment');
43     $this->installEntitySchema('taxonomy_term');
44     $this->installConfig(static::$modules);
45
46     $this->executeMigrations([
47       'd7_node_type',
48       'd7_comment_type',
49       'd7_taxonomy_vocabulary',
50       'd7_field',
51       'd7_field_instance',
52       'd7_field_instance_widget_settings',
53     ]);
54   }
55
56   /**
57    * Asserts various aspects of a form display entity.
58    *
59    * @param string $id
60    *   The entity ID.
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.
65    */
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());
72   }
73
74   /**
75    * Asserts various aspects of a particular component of a form display.
76    *
77    * @param string $display_id
78    *   The form display ID.
79    * @param string $component_id
80    *   The component ID.
81    * @param string $widget_type
82    *   The expected widget type.
83    * @param string $weight
84    *   The expected weight of the component.
85    */
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']);
91   }
92
93   /**
94    * Test that migrated view modes can be loaded using D8 APIs.
95    */
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);
104
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);
114
115     $this->assertEntity('node.blog.default', 'node', 'blog');
116     $this->assertComponent('node.blog.default', 'body', 'text_textarea_with_summary', -4);
117
118     $this->assertEntity('node.book.default', 'node', 'book');
119     $this->assertComponent('node.book.default', 'body', 'text_textarea_with_summary', -4);
120
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);
124
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);
144
145     $this->assertEntity('user.user.default', 'user', 'user');
146     $this->assertComponent('user.user.default', 'field_file', 'file_generic', 8);
147
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);
151
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);
154   }
155
156 }