/** * @covers \caption_record::serializeYAML */ public function testSerializeYAML() { foreach (self::$DI['record_1']->get_databox()->get_meta_structure() as $databox_field) { $n = $databox_field->is_multi() ? 3 : 1; for ($i = 0; $i < $n; $i++) { \caption_Field_Value::create(self::$DI['app'], $databox_field, self::$DI['record_1'], \random::generatePassword()); } } $parser = new Yaml(); $yaml = $parser->parse(self::$DI['app']['serializer.caption']->serialize($this->object, CaptionSerializer::SERIALIZE_YAML)); foreach (self::$DI['record_1']->get_caption()->get_fields() as $field) { if ($field->get_databox_field()->is_multi()) { $tagname = $field->get_name(); $retrieved = []; foreach ($yaml["record"]["description"][$tagname] as $value) { $retrieved[] = (string) $value; } $values = $field->get_values(); $this->assertEquals(count($values), count($retrieved)); foreach ($values as $val) { $this->assertTrue(in_array($val->getValue(), $retrieved)); } } else { $tagname = $field->get_name(); $data = $field->get_values(); $value = array_pop($data); $this->assertEquals($value->getValue(), (string) $yaml["record"]["description"][$tagname]); } } }
/** * * @todo move this function to caption_record * @param Array $params An array containing three keys : meta_struct_id (int) , meta_id (int or null) and value (Array) * @return record_adapter */ protected function set_metadata(array $params, databox $databox) { $mandatoryParams = ['meta_struct_id', 'meta_id', 'value']; foreach ($mandatoryParams as $param) { if (!array_key_exists($param, $params)) { throw new Exception_InvalidArgument(sprintf('Invalid metadata, missing key %s', $param)); } } if (!is_scalar($params['value'])) { throw new Exception('Metadata value should be scalar'); } $databox_field = databox_field::get_instance($this->app, $databox, $params['meta_struct_id']); $caption_field = new caption_field($this->app, $databox_field, $this); $vocab = $vocab_id = null; if (isset($params['vocabularyId']) && $databox_field->getVocabularyControl()) { try { $vocab = $databox_field->getVocabularyControl(); $vocab_id = $params['vocabularyId']; $vocab->validate($vocab_id); } catch (\Exception $e) { $vocab = $vocab_id = null; } } if (trim($params['meta_id']) !== '') { $tmp_val = trim($params['value']); $caption_field_value = $caption_field->get_value($params['meta_id']); if ($tmp_val === '') { $caption_field_value->delete(); unset($caption_field_value); } else { $caption_field_value->set_value($params['value']); if ($vocab && $vocab_id) { $caption_field_value->setVocab($vocab, $vocab_id); } } } else { $caption_field_value = caption_Field_Value::create($this->app, $databox_field, $this, $params['value'], $vocab, $vocab_id); } $this->caption_record = null; return $this; }
public function tearDown() { ACLProvider::purge(); \collection::purge(); \databox::purge(); \caption_field::purge(); \caption_Field_Value::purge(); \databox_field::purge(); \databox_status::purge(); \thesaurus_xpath::purge(); /** * Kris Wallsmith pro-tip * @see http://kriswallsmith.net/post/18029585104/faster-phpunit */ $refl = new ReflectionObject($this); foreach ($refl->getProperties() as $prop) { if (!$prop->isStatic() && 0 !== strpos($prop->getDeclaringClass()->getName(), 'PHPUnit_') && 0 !== strpos($prop->getDeclaringClass()->getName(), 'Phraseanet')) { $prop->setAccessible(true); $prop->setValue($this, null); } } $refl = null; parent::tearDown(); //In case some executed script modify 'max_execution_time' ini var //Initialize set_time_limit(0) which is the default value for PHP CLI set_time_limit(0); }
public function testSet_record_metadatas() { $databox = self::$DI['record_1']->get_databox(); $request = new Request(["salut" => "salut c'est la fete"], [], [], [], [], ['HTTP_Accept' => 'application/json']); $result = $this->object->set_record_metadatas($request, self::$DI['record_1']->get_sbas_id(), self::$DI['record_1']->get_record_id()); $this->assertEquals(400, $result->get_http_code()); $request = new Request(["metadatas" => "salut c'est la fete"], [], [], [], [], ['HTTP_Accept' => 'application/json']); $this->object->set_record_metadatas($request, self::$DI['record_1']->get_sbas_id(), self::$DI['record_1']->get_record_id()); $this->assertEquals(400, $result->get_http_code()); if (sizeof(self::$DI['record_1']->get_caption()->get_fields()) == 0) { $caption_field_value = caption_Field_Value::create(self::$DI['app'], databox_field::get_instance(self::$DI['app'], $databox, 1), self::$DI['record_1'], 'my value'); } $metadatas = []; foreach (self::$DI['record_1']->get_databox()->get_meta_structure()->get_elements() as $field) { try { $values = self::$DI['record_1']->get_caption()->get_field($field->get_name())->get_values(); $value = array_pop($values); $meta_id = $value->getId(); } catch (\Exception $e) { $meta_id = null; } $metadatas[] = ['meta_id' => $meta_id, 'meta_struct_id' => $field->get_id(), 'value' => 'poOM POOM TCHOK ' . $field->get_id()]; } $request = new Request(["metadatas" => $metadatas], [], [], [], [], ['HTTP_Accept' => 'application/json']); $result = $this->object->set_record_metadatas($request, self::$DI['record_1']->get_sbas_id(), self::$DI['record_1']->get_record_id()); $response = json_decode($result->format(), true); $this->assertEquals($response['meta']['http_code'], 200); $this->checkResponseField($result, "record_metadatas", 'array'); }
public static function purge() { self::$localCache = []; }
/** * Retrieve information about a caption field * * @param caption_field $field * * @return array */ private function list_record_caption_field(\caption_Field_Value $value, \caption_field $field) { return ['meta_id' => $value->getId(), 'meta_structure_id' => $field->get_meta_struct_id(), 'name' => $field->get_name(), 'labels' => ['fr' => $field->get_databox_field()->get_label('fr'), 'en' => $field->get_databox_field()->get_label('en'), 'de' => $field->get_databox_field()->get_label('de'), 'nl' => $field->get_databox_field()->get_label('nl')], 'value' => $value->getValue()]; }