Yaffs site version 1.1
[yaffs-website] / web / modules / contrib / migrate_plus / tests / src / Kernel / MigrateTableTest.php
1 <?php
2
3 namespace Drupal\Tests\migrate_plus\Kernel;
4
5 use Drupal\Core\Database\Database;
6 use Drupal\migrate\MigrateExecutable;
7 use Drupal\migrate\Plugin\MigrationInterface;
8 use Drupal\Tests\migrate\Kernel\MigrateTestBase;
9
10 /**
11  * Tests migration destination table.
12  *
13  * @group migrate
14  */
15 class MigrateTableTest extends MigrateTestBase {
16
17   const TABLE_NAME = 'migrate_test_destination_table';
18
19   /**
20    * @var \Drupal\Core\Database\Connection
21    */
22   protected $connection;
23
24   public static $modules = ['migrate_plus'];
25
26   protected function setUp() {
27     parent::setUp();
28
29     $this->connection = Database::getConnection();
30
31     $this->connection->schema()->createTable(static::TABLE_NAME, [
32       'description' => 'Test table',
33       'fields' => [
34         'data' => [
35           'type' => 'varchar',
36           'length' => '32',
37           'not null' => TRUE,
38         ],
39         'data2' => [
40           'type' => 'varchar',
41           'length' => '32',
42           'not null' => TRUE,
43         ],
44         'data3' => [
45           'type' => 'varchar',
46           'length' => '32',
47           'not null' => TRUE,
48         ],
49       ],
50       'primary key' => ['data'],
51     ]);
52   }
53
54   protected function tearDown() {
55     $this->connection->schema()->dropTable(static::TABLE_NAME);
56     parent::tearDown();
57   }
58
59   protected function getTableDestinationMigration() {
60     // Create a minimally valid migration with some source data.
61     $definition = [
62       'id' => 'migration_table_test',
63       'migration_tags' => ['Testing'],
64       'source' => [
65         'plugin' => 'embedded_data',
66         'data_rows' => [
67           ['data' => 'dummy value', 'data2' => 'dummy2 value', 'data3' => 'dummy3 value'],
68           ['data' => 'dummy value2', 'data2' => 'dummy2 value2', 'data3' => 'dummy3 value2'],
69           ['data' => 'dummy value3', 'data2' => 'dummy2 value3', 'data3' => 'dummy3 value3'],
70         ],
71         'ids' => [
72           'data' => ['type' => 'string'],
73         ],
74       ],
75       'destination' => [
76         'plugin' => 'table',
77         'table_name' => static::TABLE_NAME,
78         'id_fields' => ['data' => ['type' => 'string']],
79       ],
80       'process' => [
81         'data' => 'data',
82         'data2' => 'data2',
83         'data3' => 'data3',
84       ],
85     ];
86     return $definition;
87   }
88
89   /**
90    * Tests table destination.
91    */
92   public function testTableDestination() {
93     $migration = \Drupal::service('plugin.manager.migration')->createStubMigration($this->getTableDestinationMigration());
94
95     $executable = new MigrateExecutable($migration, $this);
96     $executable->import();
97
98     $values = $this->connection->select(static::TABLE_NAME)
99       ->fields(static::TABLE_NAME)
100       ->execute()
101       ->fetchAllAssoc('data');
102
103     $this->assertEquals('dummy value', $values['dummy value']->data);
104     $this->assertEquals('dummy2 value', $values['dummy value']->data2);
105     $this->assertEquals('dummy2 value2', $values['dummy value2']->data2);
106     $this->assertEquals('dummy3 value3', $values['dummy value3']->data3);
107     $this->assertEquals(3, count($values));
108   }
109
110   public function testTableRollback() {
111     $this->testTableDestination();
112
113     /** @var MigrationInterface $migration */
114     $migration = \Drupal::service('plugin.manager.migration')->createStubMigration($this->getTableDestinationMigration());
115     $executable = new MigrateExecutable($migration, $this);
116     $executable->import();
117
118     $values = $this->connection->select(static::TABLE_NAME)
119       ->fields(static::TABLE_NAME)
120       ->execute()
121       ->fetchAllAssoc('data');
122
123     $this->assertEquals('dummy value', $values['dummy value']->data);
124     $this->assertEquals(3, count($values));
125
126     // Now rollback.
127     $executable->rollback();
128     $values = $this->connection->select(static::TABLE_NAME)
129       ->fields(static::TABLE_NAME)
130       ->execute()
131       ->fetchAllAssoc('data');
132
133     $this->assertEquals(0, count($values));
134   }
135
136 }