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