You are here

oracle.test in Migrate 7.2

Tests for the Oracle source plugin.

File

tests/plugins/sources/oracle.test
View source
<?php

/**
 * @file
 * Tests for the Oracle source plugin.
 */

/**
 * Test migration from Oracle.
 *
 * NOTE: Test won't run correctly due to http://drupal.org/node/362373, enable
 * when that is fixed.
 */
class MigrateOracleUnitTest extends DrupalWebTestCase {
  public static function getInfo() {
    return array(
      'name' => 'Oracle migration',
      'description' => 'Test migration from an Oracle source',
      'group' => 'Migrate',
    );
  }
  function setUp() {
    global $conf;
    if (empty($conf['oracle_db']) || empty($conf['oracle_db']['username']) || empty($conf['oracle_db']['password']) || empty($conf['oracle_db']['connection_string'])) {
      parent::setUp();
    }
    else {
      parent::setUp('features', 'migrate', 'migrate_example_oracle');
    }

    // Make sure the migrations are registered.
    migrate_static_registration();
  }
  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'));
  }

}

Classes

Namesort descending Description
MigrateOracleUnitTest Test migration from Oracle.