public function testResolveForNewData() { $customFieldsInstructionData = new CustomFieldsInstructionData(); $instructionsData[CustomFieldsInstructionData::ADD_MISSING_VALUES] = array('a', 'b', 'c'); $instructionsData[CustomFieldsInstructionData::MAP_MISSING_VALUES] = array('d' => 'dx', 'e' => 'ex', 'f' => 'fx'); $customFieldsInstructionData->addByInstructionsDataAndColumnName($instructionsData, 'column_0'); $newCustomFieldsInstructionData = new CustomFieldsInstructionData(); $instructionsData[CustomFieldsInstructionData::ADD_MISSING_VALUES] = array('a2', 'b', 'c2'); $instructionsData[CustomFieldsInstructionData::MAP_MISSING_VALUES] = array('d2' => 'd2x', 'e' => 'ex', 'f2' => 'f2x'); $newCustomFieldsInstructionData->addByInstructionsDataAndColumnName($instructionsData, 'column_0'); $customFieldsInstructionData->resolveForNewData($newCustomFieldsInstructionData); $compareData = array('column_0' => array('a', 'b', 'c', 'a2', 'c2')); $this->assertEquals($compareData, $customFieldsInstructionData->getMissingValuesToAdd()); $compareData = array('column_0' => array('d' => 'dx', 'd2' => 'd2x', 'e' => 'ex', 'f' => 'fx', 'f2' => 'f2x')); $this->assertEquals($compareData, $customFieldsInstructionData->getMissingValuesToMap()); $this->assertTrue($customFieldsInstructionData->hasDataByColumnName('column_0')); $this->assertFalse($customFieldsInstructionData->hasDataByColumnName('column_1')); $compareData = array(CustomFieldsInstructionData::ADD_MISSING_VALUES => array('a', 'b', 'c', 'a2', 'c2'), CustomFieldsInstructionData::MAP_MISSING_VALUES => array('d' => 'dx', 'd2' => 'd2x', 'e' => 'ex', 'f' => 'fx', 'f2' => 'f2x')); $this->assertEquals($compareData, $customFieldsInstructionData->getDataByColumnName('column_0')); }
/** * Given an array of import instructions data, merge this data into the mapping data. * @param array $mappingData * @param CustomFieldsInstructionData $customFieldsInstructionData */ protected static function resolveMappingData(&$mappingData, CustomFieldsInstructionData $customFieldsInstructionData) { assert('is_array($mappingData)'); foreach ($customFieldsInstructionData->getMissingValuesToAdd() as $columnName => $columnData) { foreach ($columnData as $missingValueToAdd) { if (!isset($mappingData[$columnName])) { $mappingData[$columnName] = array(); } if (!isset($mappingData[$columnName]['customFieldsInstructionData'])) { $mappingData[$columnName]['customFieldsInstructionData'] = array(); } if (!isset($mappingData[$columnName]['customFieldsInstructionData'][CustomFieldsInstructionData::ADD_MISSING_VALUES])) { $mappingData[$columnName]['customFieldsInstructionData'][CustomFieldsInstructionData::ADD_MISSING_VALUES] = array(); } if (!in_array($missingValueToAdd, $mappingData[$columnName]['customFieldsInstructionData'][CustomFieldsInstructionData::ADD_MISSING_VALUES])) { $mappingData[$columnName]['customFieldsInstructionData'][CustomFieldsInstructionData::ADD_MISSING_VALUES][] = $missingValueToAdd; } } } foreach ($customFieldsInstructionData->getMissingValuesToMap() as $columnName => $columnData) { foreach ($columnData as $missingValueToMap => $mapToValue) { if (!isset($mappingData[$columnName])) { $mappingData[$columnName] = array(); } if (!isset($mappingData[$columnName]['customFieldsInstructionData'])) { $mappingData[$columnName]['customFieldsInstructionData'] = array(); } if (!isset($mappingData[$columnName]['customFieldsInstructionData'][CustomFieldsInstructionData::MAP_MISSING_VALUES])) { $mappingData[$columnName]['customFieldsInstructionData'][CustomFieldsInstructionData::MAP_MISSING_VALUES] = array(); } if (!isset($mappingData[$columnName]['customFieldsInstructionData'][CustomFieldsInstructionData::MAP_MISSING_VALUES][$missingValueToMap])) { $mappingData[$columnName]['customFieldsInstructionData'][CustomFieldsInstructionData::MAP_MISSING_VALUES][$missingValueToMap] = $mapToValue; } } } }
/** * Appends missingValuesToAdd and missingValuesToMap with new data * @param CustomFieldsInstructionData $newInstructionsData */ public function resolveForNewData(CustomFieldsInstructionData $newInstructionsData) { foreach ($newInstructionsData->getMissingValuesToAdd() as $columnName => $columnData) { foreach ($columnData as $missingValueToAdd) { $this->resolveMissingValueToAdd($missingValueToAdd, $columnName); } } foreach ($newInstructionsData->getMissingValuesToMap() as $columnName => $columnData) { foreach ($columnData as $missingValueToMap => $mapToValue) { $this->resolveMissingValueToMap($missingValueToMap, $mapToValue, $columnName); } } }