3 namespace Drupal\Tests\migrate_plus\Kernel;
5 use Drupal\Core\Database\Database;
6 use Drupal\migrate\MigrateExecutable;
7 use Drupal\Tests\migrate\Kernel\MigrateTestBase;
10 * Tests migration destination table.
14 class MigrateTableTest extends MigrateTestBase {
16 const TABLE_NAME = 'migrate_test_destination_table';
19 * The database connection.
21 * @var \Drupal\Core\Database\Connection
23 protected $connection;
25 public static $modules = ['migrate_plus'];
30 protected function setUp() {
33 $this->connection = Database::getConnection();
35 $this->connection->schema()->createTable(static::TABLE_NAME, [
36 'description' => 'Test table',
54 'primary key' => ['data'],
61 protected function tearDown() {
62 $this->connection->schema()->dropTable(static::TABLE_NAME);
67 * Create a minimally valid migration with some source data.
70 * The migration definition.
72 protected function getTableDestinationMigration() {
74 'id' => 'migration_table_test',
75 'migration_tags' => ['Testing'],
77 'plugin' => 'embedded_data',
80 'data' => 'dummy value',
81 'data2' => 'dummy2 value',
82 'data3' => 'dummy3 value',
85 'data' => 'dummy value2',
86 'data2' => 'dummy2 value2',
87 'data3' => 'dummy3 value2',
90 'data' => 'dummy value3',
91 'data2' => 'dummy2 value3',
92 'data3' => 'dummy3 value3',
96 'data' => ['type' => 'string'],
101 'table_name' => static::TABLE_NAME,
102 'id_fields' => ['data' => ['type' => 'string']],
114 * Tests table destination.
116 public function testTableDestination() {
117 $migration = \Drupal::service('plugin.manager.migration')->createStubMigration($this->getTableDestinationMigration());
119 $executable = new MigrateExecutable($migration, $this);
120 $executable->import();
122 $values = $this->connection->select(static::TABLE_NAME)
123 ->fields(static::TABLE_NAME)
125 ->fetchAllAssoc('data');
127 $this->assertEquals('dummy value', $values['dummy value']->data);
128 $this->assertEquals('dummy2 value', $values['dummy value']->data2);
129 $this->assertEquals('dummy2 value2', $values['dummy value2']->data2);
130 $this->assertEquals('dummy3 value3', $values['dummy value3']->data3);
131 $this->assertEquals(3, count($values));
135 * Tests table rollback.
137 public function testTableRollback() {
138 $this->testTableDestination();
140 /** @var \Drupal\migrate\Plugin\MigrationInterface $migration */
141 $migration = \Drupal::service('plugin.manager.migration')->createStubMigration($this->getTableDestinationMigration());
142 $executable = new MigrateExecutable($migration, $this);
143 $executable->import();
145 $values = $this->connection->select(static::TABLE_NAME)
146 ->fields(static::TABLE_NAME)
148 ->fetchAllAssoc('data');
150 $this->assertEquals('dummy value', $values['dummy value']->data);
151 $this->assertEquals(3, count($values));
154 $executable->rollback();
155 $values = $this->connection->select(static::TABLE_NAME)
156 ->fields(static::TABLE_NAME)
158 ->fetchAllAssoc('data');
160 $this->assertEquals(0, count($values));