/** * @dataProvider snaksProvider */ public function testSnakSerializationRoundtrips(Statement $statement) { $serializerFactory = new SerializerFactory(new DataValueSerializer()); $deserializerFactory = new DeserializerFactory(new DataValueDeserializer(), new BasicEntityIdParser()); $serialization = $serializerFactory->newStatementSerializer()->serialize($statement); $newStatement = $deserializerFactory->newStatementDeserializer()->deserialize($serialization); $this->assertEquals($statement->getHash(), $newStatement->getHash()); }
/** * @dataProvider rankProvider */ public function testRankSerialization($rank) { $statement = new Statement(new PropertyNoValueSnak(new PropertyId('P42'))); $statement->setRank($rank); $factory = new SerializerFactory(new DataValueSerializer()); $statementSerializer = $factory->newStatementSerializer(); $serialization = $statementSerializer->serialize($statement); $rankSerializer = new StatementRankSerializer(); $this->assertEquals($rank, $rankSerializer->deserialize($serialization['rank']), 'Roundtrip between rank serialization and unserialization 1'); $this->assertEquals($serialization['rank'], $rankSerializer->serialize($rank), 'Roundtrip between rank serialization and unserialization 2'); }
/** * Get serialized claim and add it to result * * @param Statement $statement * * @since 0.5 */ public function addStatement(Statement $statement) { $serializer = $this->serializerFactory->newStatementSerializer(); //TODO: this is currently only used to add a Claim as the top level structure, // with a null path and a fixed name. Would be nice to also allow claims // to be added to a list, using a path and a id key or index. $value = $serializer->serialize($statement); $value = $this->getArrayWithAlteredClaims($value); if ($this->addMetaData) { $value = $this->getClaimsArrayWithMetaData($value); } $value = $this->modifier->modifyUsingCallback($value, 'mainsnak', $this->callbackFactory->getCallbackToAddDataTypeToSnak($this->dataTypeLookup)); $this->setValue(null, 'claim', $value); }
/** * @param Statement|array $statement Native or serialized statement object. * @param ItemId $itemId * @param int $expectedCount * @param string $requestLabel A label to identify requests that are made in errors. * @param int|null $index * @param int|null $baserevid * @param string|null $error */ private function makeRequest($statement, ItemId $itemId, $expectedCount, $requestLabel, $index = null, $baserevid = null, $error = null) { $serializerFactory = new SerializerFactory(new DataValueSerializer()); $statementSerializer = $serializerFactory->newStatementSerializer(); $statementDeserializer = WikibaseRepo::getDefaultInstance()->getStatementDeserializer(); if ($statement instanceof Statement) { $serialized = $statementSerializer->serialize($statement); } else { $serialized = $statement; $statement = $statementDeserializer->deserialize($serialized); } $params = array('action' => 'wbsetclaim', 'claim' => FormatJson::encode($serialized)); if (!is_null($index)) { $params['index'] = $index; } if (!is_null($baserevid)) { $params['baserevid'] = $baserevid; } $resultArray = $this->assertApiRequest($params, $error); if ($resultArray) { $this->assertValidResponse($resultArray); $this->assertStatementWasSet($statement, $itemId, $expectedCount, $requestLabel); } }