3 namespace Drupal\Tests\migrate_plus\Kernel;
5 use Drupal\Core\Database\Database;
6 use Drupal\migrate\MigrateExecutable;
7 use Drupal\migrate\Plugin\MigrationInterface;
8 use Drupal\Tests\migrate\Kernel\MigrateTestBase;
11 * Tests migration destination table.
15 class MigrateTableTest extends MigrateTestBase {
17 const TABLE_NAME = 'migrate_test_destination_table';
20 * @var \Drupal\Core\Database\Connection
22 protected $connection;
24 public static $modules = ['migrate_plus'];
26 protected function setUp() {
29 $this->connection = Database::getConnection();
31 $this->connection->schema()->createTable(static::TABLE_NAME, [
32 'description' => 'Test table',
50 'primary key' => ['data'],
54 protected function tearDown() {
55 $this->connection->schema()->dropTable(static::TABLE_NAME);
59 protected function getTableDestinationMigration() {
60 // Create a minimally valid migration with some source data.
62 'id' => 'migration_table_test',
63 'migration_tags' => ['Testing'],
65 'plugin' => 'embedded_data',
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'],
72 'data' => ['type' => 'string'],
77 'table_name' => static::TABLE_NAME,
78 'id_fields' => ['data' => ['type' => 'string']],
90 * Tests table destination.
92 public function testTableDestination() {
93 $migration = \Drupal::service('plugin.manager.migration')->createStubMigration($this->getTableDestinationMigration());
95 $executable = new MigrateExecutable($migration, $this);
96 $executable->import();
98 $values = $this->connection->select(static::TABLE_NAME)
99 ->fields(static::TABLE_NAME)
101 ->fetchAllAssoc('data');
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));
110 public function testTableRollback() {
111 $this->testTableDestination();
113 /** @var MigrationInterface $migration */
114 $migration = \Drupal::service('plugin.manager.migration')->createStubMigration($this->getTableDestinationMigration());
115 $executable = new MigrateExecutable($migration, $this);
116 $executable->import();
118 $values = $this->connection->select(static::TABLE_NAME)
119 ->fields(static::TABLE_NAME)
121 ->fetchAllAssoc('data');
123 $this->assertEquals('dummy value', $values['dummy value']->data);
124 $this->assertEquals(3, count($values));
127 $executable->rollback();
128 $values = $this->connection->select(static::TABLE_NAME)
129 ->fields(static::TABLE_NAME)
131 ->fetchAllAssoc('data');
133 $this->assertEquals(0, count($values));