You are here

function MigrateOracleUnitTest::testOracleImport in Migrate 7.2

File

tests/plugins/sources/oracle.test, line 38
Tests for the Oracle source plugin.

Class

MigrateOracleUnitTest
Test migration from Oracle.

Code

function testOracleImport() {
  global $conf;
  if (empty($conf['oracle_db'])) {
    $this
      ->pass(t('To run the Oracle test, you need to defined $conf[\'oracle_db\']
        in settings.php - see migrate_example_oracle.migrate.inc.'));
  }
  $migration = Migration::getInstance('MigrateExampleOracle');
  $result = $migration
    ->processImport();
  $this
    ->assertEqual($result, Migration::RESULT_COMPLETED, t('Region term import returned RESULT_COMPLETED'));

  // Gather destination nodes, and their corresponding input data
  $rawnodes = node_load_multiple(FALSE, array(
    'type' => 'migrate_example_oracle',
  ), TRUE);
  $data = migrate_example_oracle_sample_data();
  $this
    ->assertEqual(count($rawnodes), count($data), t('Counts of nodes and input rows match'));

  // Index nodes by title
  $nodes = array();
  foreach ($rawnodes as $node) {
    $nodes[$node->title] = $node;
  }

  // Test each value
  foreach ($data as $row) {
    $node = $nodes[$row['title']];
    if (!$this
      ->assertEqual($node->title, $row['title'], 'Titles match')) {
      $this
        ->error(t('Source title !source does not match node title !destination', array(
        '!source' => $row['title'],
        '!destination' => $node->title,
      )));
    }
    if (!$this
      ->assertEqual($node->body[LANGUAGE_NONE][0]['value'], $row['body'], 'Bodies match')) {
      $this
        ->error(t('Source body !source does not match node body !destination', array(
        '!source' => $row['body'],
        '!destination' => $node->body,
      )));
    }
    $created = format_date($node->created, 'custom', 'Y/m/d H:i:s');
    if (!$this
      ->assertEqual($created, $row['created'], 'Created timestamps match')) {
      $this
        ->error(t('Source created !source does not match node created !destination', array(
        '!source' => $row['created'],
        '!destination' => $created,
      )));
    }
    $updated = format_date($node->changed, 'custom', 'Y/m/d H:i:s');
    if (!$this
      ->assertEqual($updated, $row['updated'], 'Updated timestamps match')) {
      $this
        ->error(t('Source updated !source does not match node changed !destination', array(
        '!source' => $row['updated'],
        '!destination' => $updated,
      )));
    }
  }

  // Test rollback
  $result = $migration
    ->processRollback();
  $this
    ->assertEqual($result, Migration::RESULT_COMPLETED, t('Node rollback returned RESULT_COMPLETED'));
  $rawnodes = node_load_multiple(FALSE, array(
    'type' => 'migrate_example_oracle',
  ), TRUE);
  $this
    ->assertEqual(count($rawnodes), 0, t('All nodes deleted'));
  $count = db_select('migrate_map_migrateexampleoracle', 'map')
    ->fields('map', array(
    'sourceid1',
  ))
    ->countQuery()
    ->execute()
    ->fetchField();
  $this
    ->assertEqual($count, 0, t('Map cleared'));
  $count = db_select('migrate_message_migrateexampleoracle', 'msg')
    ->fields('msg', array(
    'sourceid1',
  ))
    ->countQuery()
    ->execute()
    ->fetchField();
  $this
    ->assertEqual($count, 0, t('Messages cleared'));
}