/**
  * @dataProvider snaksProvider
  */
 public function testSnakSerializationRoundtrips(StatementList $statements)
 {
     $serializerFactory = new SerializerFactory(new DataValueSerializer());
     $deserializerFactory = new DeserializerFactory(new DataValueDeserializer(), new BasicEntityIdParser());
     $serialization = $serializerFactory->newStatementListSerializer()->serialize($statements);
     $newStatements = $deserializerFactory->newStatementListDeserializer()->deserialize($serialization);
     $this->assertEquals($statements, $newStatements);
 }
 /**
  * @param string[] $params
  * @param Statement[] $statements
  */
 public function doTestValidRequest(array $params, array $statements)
 {
     $statements = new StatementList($statements);
     $serializer = $this->serializerFactory->newStatementListSerializer();
     $expected = $serializer->serialize($statements);
     list($resultArray, ) = $this->doApiRequest($params);
     $this->assertInternalType('array', $resultArray, 'top level element is an array');
     $this->assertArrayHasKey('claims', $resultArray, 'top level element has a claims key');
     // Assert that value mainsnaks have a datatype added
     foreach ($resultArray['claims'] as &$claimsByProperty) {
         foreach ($claimsByProperty as &$claimArray) {
             $this->assertArrayHasKey('datatype', $claimArray['mainsnak']);
             unset($claimArray['mainsnak']['datatype']);
         }
     }
     $this->assertEquals($expected, $resultArray['claims']);
 }
Пример #3
0
 /**
  * Get serialized claims and add them to result
  *
  * @since 0.5
  *
  * @param Statement[] $statements the labels to set in the result
  * @param array|string $path where the data is located
  * @param array|string $props a list of fields to include, or "all"
  */
 public function addStatements(array $statements, $path, $props = 'all')
 {
     $serializer = $this->serializerFactory->newStatementListSerializer();
     $values = $serializer->serialize(new StatementList($statements));
     if (is_array($props) && !in_array('references', $props)) {
         $values = $this->modifier->modifyUsingCallback($values, '*/*', function ($array) {
             unset($array['references']);
             return $array;
         });
     }
     $values = $this->getArrayWithAlteredClaims($values, '*/*/');
     if ($this->addMetaData) {
         $values = $this->getClaimsArrayWithMetaData($values, '*/*/');
         $values = $this->modifier->modifyUsingCallback($values, null, $this->callbackFactory->getCallbackToSetArrayType('kvp', 'id'));
         $values = $this->modifier->modifyUsingCallback($values, '*', $this->callbackFactory->getCallbackToIndexTags('claim'));
     }
     $values = $this->modifier->modifyUsingCallback($values, '*/*/mainsnak', $this->callbackFactory->getCallbackToAddDataTypeToSnak($this->dataTypeLookup));
     if ($this->addMetaData) {
         ApiResult::setArrayType($values, 'kvp', 'id');
     }
     $this->setList($path, 'claims', $values, 'property');
 }