protected static function resolveCustomFieldsInstructionDataIntoImportAndSaveImport(ImportDataAnalyzer $importDataAnalyzer, Import $import) { $adapter = new ImportToCustomFieldsInstructionDataAdapter($import); $adapter->appendCustomFieldsInstructionData($importDataAnalyzer->getCustomFieldsInstructionData()); $saved = $import->save(); if (!$saved) { throw new FailedToSaveModelException(); } }
/** * @depends testAppendCustomFieldsInstructionDataForAddMissingValues */ public function testAppendCustomFieldsInstructionDataForMapMissingValues() { $import = new Import(); $customFieldsInstructionData = new CustomFieldsInstructionData(); $this->assertNull($import->serializedData); $missingCustomFieldValues = array(CustomFieldsInstructionData::MAP_MISSING_VALUES => array('a' => 'b2', 'b' => 'b2', 'c' => 'c2')); $customFieldsInstructionData->addByInstructionsDataAndColumnName($missingCustomFieldValues, 'column_0'); $adapter = new ImportToCustomFieldsInstructionDataAdapter($import); $adapter->appendCustomFieldsInstructionData($customFieldsInstructionData); $compareData = array('column_0' => array('customFieldsInstructionData' => array(CustomFieldsInstructionData::MAP_MISSING_VALUES => array('a' => 'b2', 'b' => 'b2', 'c' => 'c2')))); $unserializedData = unserialize($import->serializedData); $this->assertEquals($compareData, $unserializedData['mappingData']); //Now append the existing and that it doesn't duplicate existing values $customFieldsInstructionData = new CustomFieldsInstructionData(); $missingCustomFieldValues = array(CustomFieldsInstructionData::MAP_MISSING_VALUES => array('a' => 'a2', 'd' => 'd2')); $customFieldsInstructionData->addByInstructionsDataAndColumnName($missingCustomFieldValues, 'column_0'); $adapter = new ImportToCustomFieldsInstructionDataAdapter($import); $adapter->appendCustomFieldsInstructionData($customFieldsInstructionData); $compareData = array('column_0' => array('customFieldsInstructionData' => array(CustomFieldsInstructionData::MAP_MISSING_VALUES => array('a' => 'b2', 'b' => 'b2', 'c' => 'c2', 'd' => 'd2')))); $unserializedData = unserialize($import->serializedData); $this->assertEquals($compareData, $unserializedData['mappingData']); }