$expected_result = [
[
'sourceid1' => 'source_value',
- 'source_ids_hash' => $this->getIdMap()->getSourceIDsHash($source),
+ 'source_ids_hash' => $this->getIdMap()->getSourceIdsHash($source),
'destid1' => 2,
] + $this->idMapDefaults(),
];
$id_map->saveIdMapping($row, ['destination_id_property' => 3]);
$expected_result[] = [
'sourceid1' => 'source_value_1',
- 'source_ids_hash' => $this->getIdMap()->getSourceIDsHash($source),
+ 'source_ids_hash' => $this->getIdMap()->getSourceIdsHash($source),
'destid1' => 3,
] + $this->idMapDefaults();
$this->queryResultTest($this->getIdMapContents(), $expected_result);
$id_map->saveIdMapping($row, $destination, $status);
$expected_results[] = [
'sourceid1' => 'source_value_' . $status,
- 'source_ids_hash' => $this->getIdMap()->getSourceIDsHash($source),
+ 'source_ids_hash' => $this->getIdMap()->getSourceIdsHash($source),
'destid1' => 'destination_value_' . $status,
'source_row_status' => $status,
'rollback_action' => MigrateIdMapInterface::ROLLBACK_DELETE,
$row = [
'sourceid1' => 'source_id_value_1',
'sourceid2' => 'source_id_value_2',
- 'source_ids_hash' => $this->getIdMap()->getSourceIDsHash(['source_id_property' => 'source_id_value_1']),
+ 'source_ids_hash' => $this->getIdMap()->getSourceIdsHash(['source_id_property' => 'source_id_value_1']),
'destid1' => 'destination_id_value_1',
] + $this->idMapDefaults();
$this->saveMap($row);
$row = [
'sourceid1' => 'source_id_value_3',
'sourceid2' => 'source_id_value_4',
- 'source_ids_hash' => $this->getIdMap()->getSourceIDsHash(['source_id_property' => 'source_id_value_3', 'sourceid2' => 'source_id_value_4']),
+ 'source_ids_hash' => $this->getIdMap()->getSourceIdsHash(['source_id_property' => 'source_id_value_3', 'sourceid2' => 'source_id_value_4']),
'destid1' => 'destination_id_value_2',
] + $this->idMapDefaults();
$this->saveMap($row);
$expected_result[] = "destination_id_value_$i";
$this->destinationIds["destination_id_property_$i"] = [];
}
- $row['source_ids_hash'] = $this->getIdMap()->getSourceIDsHash($source_id_values);
+ $row['source_ids_hash'] = $this->getIdMap()->getSourceIdsHash($source_id_values);
$this->saveMap($row);
$id_map = $this->getIdMap();
// Test for a valid hit.
foreach ($rows as $row) {
$values = array_combine($db_keys, $row);
$source_values = array_slice($row, 0, count($source_keys));
- $values['source_ids_hash'] = $this->getIdMap()->getSourceIDsHash($source_values);
+ $values['source_ids_hash'] = $this->getIdMap()->getSourceIdsHash($source_values);
$this->saveMap($values);
}
$this->assertEquals([[101, 'en'], [101, 'fr'], [101, 'de']], $id_map->lookupDestinationIds(['nid' => 1]));
$this->assertEquals([[102, 'en']], $id_map->lookupDestinationIds(['nid' => 2]));
$this->assertEquals([], $id_map->lookupDestinationIds(['nid' => 99]));
+ $this->assertEquals([[101, 'en'], [101, 'fr'], [101, 'de']], $id_map->lookupDestinationIds(['nid' => 1, 'language' => NULL]));
+ $this->assertEquals([[102, 'en']], $id_map->lookupDestinationIds(['nid' => 2, 'language' => NULL]));
// Out-of-order partial associative list.
$this->assertEquals([[101, 'en'], [102, 'en']], $id_map->lookupDestinationIds(['language' => 'en']));
$this->assertEquals([[101, 'fr']], $id_map->lookupDestinationIds(['language' => 'fr']));
$this->fail('Too many source IDs should throw');
}
catch (MigrateException $e) {
- $this->assertEquals("Extra unknown items in source IDs", $e->getMessage());
+ $this->assertEquals("Extra unknown items in source IDs: array (\n 0 => 3,\n)", $e->getMessage());
}
try {
$id_map->lookupDestinationIds(['nid' => 1, 'aaa' => '2']);
$this->fail('Unknown source ID key should throw');
}
catch (MigrateException $e) {
- $this->assertEquals("Extra unknown items in source IDs", $e->getMessage());
+ $this->assertEquals("Extra unknown items in source IDs: array (\n 'aaa' => '2',\n)", $e->getMessage());
}
// Verify that we are looking up by source_id_hash when all source IDs are
$row = [
'sourceid1' => 'source_id_value_1',
'sourceid2' => 'source_id_value_2',
- 'source_ids_hash' => $this->getIdMap()->getSourceIDsHash(['source_id_property' => 'source_id_value_1']),
+ 'source_ids_hash' => $this->getIdMap()->getSourceIdsHash(['source_id_property' => 'source_id_value_1']),
'destid1' => 'destination_id_value_1',
] + $this->idMapDefaults();
$this->saveMap($row);
$row = [
'sourceid1' => 'source_id_value_3',
'sourceid2' => 'source_id_value_4',
- 'source_ids_hash' => $this->getIdMap()->getSourceIDsHash(['source_id_property' => 'source_id_value_3']),
+ 'source_ids_hash' => $this->getIdMap()->getSourceIdsHash(['source_id_property' => 'source_id_value_3']),
'destid1' => 'destination_id_value_2',
] + $this->idMapDefaults();
$this->saveMap($row);
}
/**
- * Data provider for testLookupSourceIDMapping().
+ * Data provider for testLookupSourceIdMapping().
*
* Scenarios to test (for both hits and misses) are:
* - Single-value destination ID to single-value source ID.
* @return array
* An array of data values.
*/
- public function lookupSourceIDMappingDataProvider() {
+ public function lookupSourceIdMappingDataProvider() {
return [
[1, 1],
[2, 2],
* @param int $num_destination_fields
* Number of destination fields to test.
*
- * @dataProvider lookupSourceIDMappingDataProvider
+ * @dataProvider lookupSourceIdMappingDataProvider
*/
- public function testLookupSourceIDMapping($num_source_fields, $num_destination_fields) {
+ public function testLookupSourceIdMapping($num_source_fields, $num_destination_fields) {
// Adjust the migration configuration according to the number of source and
// destination fields.
$this->sourceIds = [];
$nonexistent_id_values["destination_id_property_$i"] = "nonexistent_destination_id_value_$i";
$this->destinationIds["destination_id_property_$i"] = [];
}
- $row['source_ids_hash'] = $this->getIdMap()->getSourceIDsHash($source_ids_values);
+ $row['source_ids_hash'] = $this->getIdMap()->getSourceIdsHash($source_ids_values);
$this->saveMap($row);
$id_map = $this->getIdMap();
// Test for a valid hit.
- $source_id = $id_map->lookupSourceID($destination_id_values);
+ $source_id = $id_map->lookupSourceId($destination_id_values);
$this->assertSame($expected_result, $source_id);
// Test for a miss.
- $source_id = $id_map->lookupSourceID($nonexistent_id_values);
+ $source_id = $id_map->lookupSourceId($nonexistent_id_values);
$this->assertSame(0, count($source_id));
}
for ($i = 0; $i < 5; $i++) {
$row = $this->idMapDefaults();
$row['sourceid1'] = "source_id_value_$i";
- $row['source_ids_hash'] = $this->getIdMap()->getSourceIDsHash(['source_id_property' => $row['sourceid1']]);
+ $row['source_ids_hash'] = $this->getIdMap()->getSourceIdsHash(['source_id_property' => $row['sourceid1']]);
$row['destid1'] = "destination_id_value_$i";
$row['source_row_status'] = MigrateIdMapInterface::STATUS_IMPORTED;
$this->saveMap($row);
for (; $i < 5 + $num_update_rows; $i++) {
$row = $this->idMapDefaults();
$row['sourceid1'] = "source_id_value_$i";
- $row['source_ids_hash'] = $this->getIdMap()->getSourceIDsHash(['source_id_property' => $row['sourceid1']]);
+ $row['source_ids_hash'] = $this->getIdMap()->getSourceIdsHash(['source_id_property' => $row['sourceid1']]);
$row['destid1'] = "destination_id_value_$i";
$row['source_row_status'] = MigrateIdMapInterface::STATUS_NEEDS_UPDATE;
$this->saveMap($row);
for ($i = 0; $i < 5; $i++) {
$row = $this->idMapDefaults();
$row['sourceid1'] = "source_id_value_$i";
- $row['source_ids_hash'] = $this->getIdMap()->getSourceIDsHash(['source_id_property' => $row['sourceid1']]);
+ $row['source_ids_hash'] = $this->getIdMap()->getSourceIdsHash(['source_id_property' => $row['sourceid1']]);
$row['destid1'] = "destination_id_value_$i";
$row['source_row_status'] = MigrateIdMapInterface::STATUS_IMPORTED;
$this->saveMap($row);
for (; $i < 5 + $num_error_rows; $i++) {
$row = $this->idMapDefaults();
$row['sourceid1'] = "source_id_value_$i";
- $row['source_ids_hash'] = $this->getIdMap()->getSourceIDsHash(['source_id_property' => $row['sourceid1']]);
+ $row['source_ids_hash'] = $this->getIdMap()->getSourceIdsHash(['source_id_property' => $row['sourceid1']]);
$row['destid1'] = "destination_id_value_$i";
$row['source_row_status'] = MigrateIdMapInterface::STATUS_FAILED;
$this->saveMap($row);
$id_map->saveIdMapping($row, $destination, $status);
$expected_results[] = [
'sourceid1' => 'source_value_' . $status,
- 'source_ids_hash' => $this->getIdMap()->getSourceIDsHash($source),
+ 'source_ids_hash' => $this->getIdMap()->getSourceIdsHash($source),
'destid1' => 'destination_value_' . $status,
'source_row_status' => $status,
'rollback_action' => MigrateIdMapInterface::ROLLBACK_DELETE,
for ($i = 0; $i < 3; $i++) {
$row = $this->idMapDefaults();
$row['sourceid1'] = "source_id_value_$i";
- $row['source_ids_hash'] = $this->getIdMap()->getSourceIDsHash(['source_id_property' => $row['sourceid1']]);
+ $row['source_ids_hash'] = $this->getIdMap()->getSourceIdsHash(['source_id_property' => $row['sourceid1']]);
$row['destid1'] = "destination_id_value_$i";
$row['source_row_status'] = MigrateIdMapInterface::STATUS_IMPORTED;
$expected_results[serialize(['sourceid1' => $row['sourceid1']])] = ['destid1' => $row['destid1']];
return $contents;
}
+ /**
+ * Tests the delayed creation of the "map" and "message" migrate tables.
+ */
+ public function testMapTableCreation() {
+ $id_map = $this->getIdMap();
+ $map_table_name = $id_map->mapTableName();
+ $message_table_name = $id_map->messageTableName();
+
+ // Check that tables names do exist.
+ $this->assertEquals('migrate_map_sql_idmap_test', $map_table_name);
+ $this->assertEquals('migrate_message_sql_idmap_test', $message_table_name);
+
+ // Check that tables don't exist.
+ $this->assertFalse($this->database->schema()->tableExists($map_table_name));
+ $this->assertFalse($this->database->schema()->tableExists($message_table_name));
+
+ $id_map->getDatabase();
+
+ // Check that tables do exist.
+ $this->assertTrue($this->database->schema()->tableExists($map_table_name));
+ $this->assertTrue($this->database->schema()->tableExists($message_table_name));
+ }
+
}