Yaffs site version 1.1
[yaffs-website] / web / modules / contrib / migrate_plus / tests / src / Kernel / MigrateTableTest.php
diff --git a/web/modules/contrib/migrate_plus/tests/src/Kernel/MigrateTableTest.php b/web/modules/contrib/migrate_plus/tests/src/Kernel/MigrateTableTest.php
new file mode 100755 (executable)
index 0000000..56c8b7a
--- /dev/null
@@ -0,0 +1,136 @@
+<?php
+
+namespace Drupal\Tests\migrate_plus\Kernel;
+
+use Drupal\Core\Database\Database;
+use Drupal\migrate\MigrateExecutable;
+use Drupal\migrate\Plugin\MigrationInterface;
+use Drupal\Tests\migrate\Kernel\MigrateTestBase;
+
+/**
+ * Tests migration destination table.
+ *
+ * @group migrate
+ */
+class MigrateTableTest extends MigrateTestBase {
+
+  const TABLE_NAME = 'migrate_test_destination_table';
+
+  /**
+   * @var \Drupal\Core\Database\Connection
+   */
+  protected $connection;
+
+  public static $modules = ['migrate_plus'];
+
+  protected function setUp() {
+    parent::setUp();
+
+    $this->connection = Database::getConnection();
+
+    $this->connection->schema()->createTable(static::TABLE_NAME, [
+      'description' => 'Test table',
+      'fields' => [
+        'data' => [
+          'type' => 'varchar',
+          'length' => '32',
+          'not null' => TRUE,
+        ],
+        'data2' => [
+          'type' => 'varchar',
+          'length' => '32',
+          'not null' => TRUE,
+        ],
+        'data3' => [
+          'type' => 'varchar',
+          'length' => '32',
+          'not null' => TRUE,
+        ],
+      ],
+      'primary key' => ['data'],
+    ]);
+  }
+
+  protected function tearDown() {
+    $this->connection->schema()->dropTable(static::TABLE_NAME);
+    parent::tearDown();
+  }
+
+  protected function getTableDestinationMigration() {
+    // Create a minimally valid migration with some source data.
+    $definition = [
+      'id' => 'migration_table_test',
+      'migration_tags' => ['Testing'],
+      'source' => [
+        'plugin' => 'embedded_data',
+        'data_rows' => [
+          ['data' => 'dummy value', 'data2' => 'dummy2 value', 'data3' => 'dummy3 value'],
+          ['data' => 'dummy value2', 'data2' => 'dummy2 value2', 'data3' => 'dummy3 value2'],
+          ['data' => 'dummy value3', 'data2' => 'dummy2 value3', 'data3' => 'dummy3 value3'],
+        ],
+        'ids' => [
+          'data' => ['type' => 'string'],
+        ],
+      ],
+      'destination' => [
+        'plugin' => 'table',
+        'table_name' => static::TABLE_NAME,
+        'id_fields' => ['data' => ['type' => 'string']],
+      ],
+      'process' => [
+        'data' => 'data',
+        'data2' => 'data2',
+        'data3' => 'data3',
+      ],
+    ];
+    return $definition;
+  }
+
+  /**
+   * Tests table destination.
+   */
+  public function testTableDestination() {
+    $migration = \Drupal::service('plugin.manager.migration')->createStubMigration($this->getTableDestinationMigration());
+
+    $executable = new MigrateExecutable($migration, $this);
+    $executable->import();
+
+    $values = $this->connection->select(static::TABLE_NAME)
+      ->fields(static::TABLE_NAME)
+      ->execute()
+      ->fetchAllAssoc('data');
+
+    $this->assertEquals('dummy value', $values['dummy value']->data);
+    $this->assertEquals('dummy2 value', $values['dummy value']->data2);
+    $this->assertEquals('dummy2 value2', $values['dummy value2']->data2);
+    $this->assertEquals('dummy3 value3', $values['dummy value3']->data3);
+    $this->assertEquals(3, count($values));
+  }
+
+  public function testTableRollback() {
+    $this->testTableDestination();
+
+    /** @var MigrationInterface $migration */
+    $migration = \Drupal::service('plugin.manager.migration')->createStubMigration($this->getTableDestinationMigration());
+    $executable = new MigrateExecutable($migration, $this);
+    $executable->import();
+
+    $values = $this->connection->select(static::TABLE_NAME)
+      ->fields(static::TABLE_NAME)
+      ->execute()
+      ->fetchAllAssoc('data');
+
+    $this->assertEquals('dummy value', $values['dummy value']->data);
+    $this->assertEquals(3, count($values));
+
+    // Now rollback.
+    $executable->rollback();
+    $values = $this->connection->select(static::TABLE_NAME)
+      ->fields(static::TABLE_NAME)
+      ->execute()
+      ->fetchAllAssoc('data');
+
+    $this->assertEquals(0, count($values));
+  }
+
+}