MigrateFieldGroupTest.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. namespace Drupal\Tests\field_group_migrate\Kernel\Migrate\d7;
  3. use Drupal\Core\Entity\Display\EntityDisplayInterface;
  4. use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;
  5. /**
  6. * Tests field group migration.
  7. *
  8. * @group field_group
  9. */
  10. class MigrateFieldGroupTest extends MigrateDrupal7TestBase {
  11. static $modules = [
  12. 'field_group',
  13. 'field_group_migrate',
  14. 'comment',
  15. 'datetime',
  16. 'image',
  17. 'link',
  18. 'node',
  19. 'taxonomy',
  20. 'telephone',
  21. 'text',
  22. ];
  23. /**
  24. * {@inheritdoc}
  25. */
  26. protected function setUp() {
  27. parent::setUp();
  28. $this->loadFixture(__DIR__ . '/../../../../fixtures/drupal7.php');
  29. $this->installConfig(static::$modules);
  30. $this->executeMigrations([
  31. 'd7_node_type',
  32. 'd7_comment_type',
  33. 'd7_view_modes',
  34. 'd7_field',
  35. 'd7_field_instance',
  36. 'd7_field_formatter_settings',
  37. 'd7_field_group',
  38. ]);
  39. }
  40. /**
  41. * Asserts various aspects of a migrated field group.
  42. *
  43. * @param $id
  44. * The id of the entity display to which the field group applies.
  45. * @param $type
  46. * The destination type.
  47. * @param $group_name
  48. * The name of the field group.
  49. * @param $expected_label
  50. * The expected label.
  51. * @param int $expected_weight
  52. * The expected label.
  53. * @param array $expected_format_settings
  54. * The expected format settings.
  55. * @param string $expected_format_type
  56. * The expected format type.
  57. * @param array $expected_children
  58. * The expected children.
  59. * @param string $expected_parent_name
  60. * The expected parent name.
  61. */
  62. protected function assertEntity($id, $type, $group_name, $expected_label, $expected_weight = 0, $expected_format_settings = [], $expected_format_type = 'tabs', $expected_children = [], $expected_parent_name = '') {
  63. /** @var EntityDisplayInterface $entity */
  64. $entity = \Drupal::entityTypeManager()
  65. ->getStorage($type)
  66. ->load($id);
  67. $field_group_settings = $entity->getThirdPartySettings('field_group');
  68. $this->assertNotEmpty($field_group_settings);
  69. $this->assertArrayHasKey($group_name, $field_group_settings);
  70. $field_group = $field_group_settings[$group_name];
  71. $this->assertEquals($expected_label, $field_group['label']);
  72. $this->assertEquals($expected_format_settings, $field_group['format_settings']);
  73. $this->assertEquals($expected_children, $field_group['children']);
  74. $this->assertEquals($expected_parent_name, $field_group['parent_name']);
  75. $this->assertEquals($expected_weight, $field_group['weight']);
  76. $this->assertEquals($expected_format_type, $field_group['format_type']);
  77. }
  78. /**
  79. * Test field group migration from Drupal 7 to 8.
  80. */
  81. public function testFieldGroup() {
  82. $this->assertEntity('node.page.default', 'entity_view_display', 'group_page', 'Node group', 0, ['direction' => 'horizontal']);
  83. $this->assertEntity('user.user.default', 'entity_view_display', 'group_user', 'User group parent', 1, ['element' => 'div'], 'html_element');
  84. $this->assertEntity('user.user.default', 'entity_view_display', 'group_user_child', 'User group child', 99, ['direction' => 'vertical', 'label' => 'User group child', 'classes' => 'user-group-child', 'id' => 'group_article_node_article_teaser'], 'tabs', ['user_picture'], 'group_user');
  85. $this->assertEntity('node.article.teaser', 'entity_view_display', 'group_article', 'htab group', 2, ['classes' => 'htab-group'], 'tab', ['field_image']);
  86. // Check an entity_view_display without a field group.
  87. /** @var EntityDisplayInterface $entity */
  88. $entity = \Drupal::entityTypeManager()
  89. ->getStorage('entity_view_display')
  90. ->load('node.page.teaser');
  91. $field_group_settings = $entity->getThirdPartySettings('field_group');
  92. $this->assertEmpty($field_group_settings);
  93. $this->assertEntity('node.page.default', 'entity_form_display', 'group_page', 'Node form group', 0, ['direction' => 'horizontal']);
  94. $this->assertEntity('node.article.default', 'entity_form_display', 'group_article', 'htab form group', 2, [], 'tab', ['field_image']);
  95. // Check an entity_form_display without a field group.
  96. $entity = \Drupal::entityTypeManager()
  97. ->getStorage('entity_form_display')
  98. ->load('node.blog.default');
  99. $field_group_settings = $entity->getThirdPartySettings('field_group');
  100. $this->assertEmpty($field_group_settings);
  101. }
  102. }