'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'); } } 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')); } }