Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\migrate\Kernel;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\language\Entity\ConfigurableLanguage;
|
Chris@0
|
6 use Drupal\migrate\MigrateExecutable;
|
Chris@0
|
7 use Drupal\node\Entity\NodeType;
|
Chris@0
|
8
|
Chris@0
|
9 /**
|
Chris@0
|
10 * Tests migrating non-Drupal translated content.
|
Chris@0
|
11 *
|
Chris@0
|
12 * Ensure it's possible to migrate in translations, even if there's no nid or
|
Chris@0
|
13 * tnid property on the source.
|
Chris@0
|
14 *
|
Chris@0
|
15 * @group migrate
|
Chris@0
|
16 */
|
Chris@0
|
17 class MigrateExternalTranslatedTest extends MigrateTestBase {
|
Chris@0
|
18
|
Chris@0
|
19 /**
|
Chris@0
|
20 * {@inheritdoc}
|
Chris@0
|
21 */
|
Chris@0
|
22 public static $modules = ['system', 'user', 'language', 'node', 'field', 'migrate_external_translated_test'];
|
Chris@0
|
23
|
Chris@0
|
24 /**
|
Chris@0
|
25 * {@inheritdoc}
|
Chris@0
|
26 */
|
Chris@0
|
27 public function setUp() {
|
Chris@0
|
28 parent::setUp();
|
Chris@0
|
29 $this->installSchema('system', ['sequences']);
|
Chris@0
|
30 $this->installSchema('node', ['node_access']);
|
Chris@0
|
31 $this->installEntitySchema('user');
|
Chris@0
|
32 $this->installEntitySchema('node');
|
Chris@0
|
33
|
Chris@0
|
34 // Create some languages.
|
Chris@0
|
35 ConfigurableLanguage::createFromLangcode('en')->save();
|
Chris@0
|
36 ConfigurableLanguage::createFromLangcode('fr')->save();
|
Chris@0
|
37 ConfigurableLanguage::createFromLangcode('es')->save();
|
Chris@0
|
38
|
Chris@0
|
39 // Create a content type.
|
Chris@0
|
40 NodeType::create([
|
Chris@0
|
41 'type' => 'external_test',
|
Chris@0
|
42 'name' => 'Test node type',
|
Chris@0
|
43 ])->save();
|
Chris@0
|
44 }
|
Chris@0
|
45
|
Chris@0
|
46 /**
|
Chris@0
|
47 * Test importing and rolling back our data.
|
Chris@0
|
48 */
|
Chris@0
|
49 public function testMigrations() {
|
Chris@0
|
50 /** @var \Drupal\Core\Entity\ContentEntityStorageInterface $storage */
|
Chris@0
|
51 $storage = $this->container->get('entity.manager')->getStorage('node');
|
Chris@0
|
52 $this->assertEquals(0, count($storage->loadMultiple()));
|
Chris@0
|
53
|
Chris@0
|
54 // Run the migrations.
|
Chris@0
|
55 $migration_ids = ['external_translated_test_node', 'external_translated_test_node_translation'];
|
Chris@0
|
56 $this->executeMigrations($migration_ids);
|
Chris@0
|
57 $this->assertEquals(3, count($storage->loadMultiple()));
|
Chris@0
|
58
|
Chris@0
|
59 $node = $storage->load(1);
|
Chris@0
|
60 $this->assertEquals('en', $node->language()->getId());
|
Chris@0
|
61 $this->assertEquals('Cat', $node->title->value);
|
Chris@0
|
62 $this->assertEquals('Chat', $node->getTranslation('fr')->title->value);
|
Chris@0
|
63 $this->assertEquals('Gato', $node->getTranslation('es')->title->value);
|
Chris@0
|
64
|
Chris@0
|
65 $node = $storage->load(2);
|
Chris@0
|
66 $this->assertEquals('en', $node->language()->getId());
|
Chris@0
|
67 $this->assertEquals('Dog', $node->title->value);
|
Chris@0
|
68 $this->assertEquals('Chien', $node->getTranslation('fr')->title->value);
|
Chris@0
|
69 $this->assertFalse($node->hasTranslation('es'), "No spanish translation for node 2");
|
Chris@0
|
70
|
Chris@0
|
71 $node = $storage->load(3);
|
Chris@0
|
72 $this->assertEquals('en', $node->language()->getId());
|
Chris@0
|
73 $this->assertEquals('Monkey', $node->title->value);
|
Chris@0
|
74 $this->assertFalse($node->hasTranslation('fr'), "No french translation for node 3");
|
Chris@0
|
75 $this->assertFalse($node->hasTranslation('es'), "No spanish translation for node 3");
|
Chris@0
|
76
|
Chris@0
|
77 $this->assertNull($storage->load(4), "No node 4 migrated");
|
Chris@0
|
78
|
Chris@0
|
79 // Roll back the migrations.
|
Chris@0
|
80 foreach ($migration_ids as $migration_id) {
|
Chris@0
|
81 $migration = $this->getMigration($migration_id);
|
Chris@0
|
82 $executable = new MigrateExecutable($migration, $this);
|
Chris@0
|
83 $executable->rollback();
|
Chris@0
|
84 }
|
Chris@0
|
85
|
Chris@0
|
86 $this->assertEquals(0, count($storage->loadMultiple()));
|
Chris@0
|
87 }
|
Chris@0
|
88
|
Chris@0
|
89 }
|