You are here

public function SqlBaseTest::testConnectionTypes in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/migrate/src/Tests/SqlBaseTest.php \Drupal\migrate\Tests\SqlBaseTest::testConnectionTypes()

Test different connection types.

File

core/modules/migrate/src/Tests/SqlBaseTest.php, line 23
Contains \Drupal\migrate\Tests\SqlBaseTest.

Class

SqlBaseTest
Test the functionality of SqlBase.

Namespace

Drupal\migrate\Tests

Code

public function testConnectionTypes() {
  $sql_base = new TestSqlBase();

  // Check the default values.
  $sql_base
    ->setConfiguration([]);
  $this
    ->assertIdentical($sql_base
    ->getDatabase()
    ->getTarget(), 'default');
  $this
    ->assertIdentical($sql_base
    ->getDatabase()
    ->getKey(), 'migrate');
  $target = 'test_db_target';
  $key = 'test_migrate_connection';
  $config = array(
    'target' => $target,
    'key' => $key,
  );
  $sql_base
    ->setConfiguration($config);
  Database::addConnectionInfo($key, $target, Database::getConnectionInfo('default')['default']);

  // Validate we've injected our custom key and target.
  $this
    ->assertIdentical($sql_base
    ->getDatabase()
    ->getTarget(), $target);
  $this
    ->assertIdentical($sql_base
    ->getDatabase()
    ->getKey(), $key);

  // Now test we can have SqlBase create the connection from an info array.
  $sql_base = new TestSqlBase();
  $target = 'test_db_target2';
  $key = 'test_migrate_connection2';
  $database = Database::getConnectionInfo('default')['default'];
  $config = array(
    'target' => $target,
    'key' => $key,
    'database' => $database,
  );
  $sql_base
    ->setConfiguration($config);

  // Call getDatabase() to get the connection defined.
  $sql_base
    ->getDatabase();

  // Validate the connection has been created with the right values.
  $this
    ->assertIdentical(Database::getConnectionInfo($key)[$target], $database);

  // Now, test this all works when using state to store db info.
  $target = 'test_state_db_target';
  $key = 'test_state_migrate_connection';
  $config = [
    'target' => $target,
    'key' => $key,
  ];
  $database_state_key = 'migrate_sql_base_test';
  \Drupal::state()
    ->set($database_state_key, $config);
  $sql_base
    ->setConfiguration([
    'database_state_key' => $database_state_key,
  ]);
  Database::addConnectionInfo($key, $target, Database::getConnectionInfo('default')['default']);

  // Validate we've injected our custom key and target.
  $this
    ->assertIdentical($sql_base
    ->getDatabase()
    ->getTarget(), $target);
  $this
    ->assertIdentical($sql_base
    ->getDatabase()
    ->getKey(), $key);

  // Now test we can have SqlBase create the connection from an info array.
  $sql_base = new TestSqlBase();
  $target = 'test_state_db_target2';
  $key = 'test_state_migrate_connection2';
  $database = Database::getConnectionInfo('default')['default'];
  $config = [
    'target' => $target,
    'key' => $key,
    'database' => $database,
  ];
  $database_state_key = 'migrate_sql_base_test2';
  \Drupal::state()
    ->set($database_state_key, $config);
  $sql_base
    ->setConfiguration([
    'database_state_key' => $database_state_key,
  ]);

  // Call getDatabase() to get the connection defined.
  $sql_base
    ->getDatabase();

  // Validate the connection has been created with the right values.
  $this
    ->assertIdentical(Database::getConnectionInfo($key)[$target], $database);
}