public function testFieldToDb() { $csvField = new CsvField(['name' => 'blah', 'type' => 'string']); $result = $this->fhf->fieldToDb($csvField); $this->assertTrue(is_array($result), "fieldToDb() method does not return an array"); $this->assertFalse(empty($result), "fieldToDb() method returns an empty array"); }
/** * Method that converts csv action fields to database fields and returns their names. * * @param array $fields action fields * @param Event $event Event instance * @return array */ protected function _databaseFields(array $fields, Event $event) { $result = []; $migrationFields = $this->_getMigrationFields($event->subject()->request); if (empty($migrationFields)) { return $result; } $fhf = new FieldHandlerFactory(); foreach ($fields as $field) { if (!array_key_exists($field, $migrationFields)) { $result[] = $field; continue; } $csvField = new CsvField($migrationFields[$field]); foreach ($fhf->fieldToDb($csvField) as $dbField) { $result[] = $dbField->getName(); } } $virtualFields = $event->subject()->{$event->subject()->name}->getVirtualFields(); if (empty($virtualFields)) { return $result; } // handle virtual fields foreach ($fields as $k => $field) { if (!isset($virtualFields[$field])) { continue; } // remove virtual field unset($result[$k]); // add db fields $result = array_merge($result, $virtualFields[$field]); } return $result; }