Skip to content

Commit 2640b4c

Browse files
committed
Rewrite EntitySerializationRoundtripTest
1 parent 3b67125 commit 2640b4c

1 file changed

Lines changed: 60 additions & 38 deletions

File tree

tests/integration/EntitySerializationRoundtripTest.php

Lines changed: 60 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
use DataValues\Serializers\DataValueSerializer;
77
use Wikibase\DataModel\DeserializerFactory;
88
use Wikibase\DataModel\Entity\BasicEntityIdParser;
9-
use Wikibase\DataModel\Entity\EntityDocument;
109
use Wikibase\DataModel\Entity\Item;
1110
use Wikibase\DataModel\Entity\ItemId;
1211
use Wikibase\DataModel\Entity\Property;
@@ -16,56 +15,79 @@
1615
/**
1716
* @license GPL-2.0+
1817
* @author Thomas Pellissier Tanon
18+
* @author Thiemo Mättig
1919
*/
2020
class EntitySerializationRoundtripTest extends \PHPUnit_Framework_TestCase {
2121

22-
/**
23-
* @dataProvider entityProvider
24-
*/
25-
public function testEntitySerializationRoundtrips( EntityDocument $entity ) {
26-
$serializerFactory = new SerializerFactory( new DataValueSerializer() );
27-
$deserializerFactory = new DeserializerFactory(
28-
new DataValueDeserializer(),
29-
new BasicEntityIdParser()
30-
);
31-
32-
$serialization = $serializerFactory->newEntitySerializer()->serialize( $entity );
33-
$newEntity = $deserializerFactory->newEntityDeserializer()->deserialize( $serialization );
34-
$this->assertTrue( $entity->equals( $newEntity ) );
22+
public function itemProvider() {
23+
$empty = new Item( new ItemId( 'Q42' ) );
24+
25+
$withLabels = new Item();
26+
$withLabels->setLabel( 'en', 'Nyan Cat' );
27+
$withLabels->setLabel( 'fr', 'Nyan Cat' );
28+
29+
$withDescriptions = new Item();
30+
$withDescriptions->setDescription( 'en', 'Nyan Cat' );
31+
$withDescriptions->setDescription( 'fr', 'Nyan Cat' );
32+
33+
$withAliases = new Item();
34+
$withAliases->setAliases( 'en', [ 'Cat', 'My cat' ] );
35+
$withAliases->setAliases( 'fr', [ 'Cat' ] );
36+
37+
$withStatements = new Item();
38+
$withStatements->getStatements()->addNewStatement( new PropertyNoValueSnak( 42 ), null, null, 'guid' );
39+
40+
$withSiteLinks = new Item();
41+
$withSiteLinks->getSiteLinkList()->addNewSiteLink( 'enwiki', 'Nyan Cat' );
42+
43+
return [
44+
[ $empty ],
45+
[ $withLabels ],
46+
[ $withDescriptions ],
47+
[ $withAliases ],
48+
[ $withStatements ],
49+
[ $withSiteLinks ],
50+
];
3551
}
3652

37-
public function entityProvider() {
38-
$entities = [];
53+
/**
54+
* @dataProvider itemProvider
55+
*/
56+
public function testItemSerializationRoundtrips( Item $item ) {
57+
$serializer = $this->newSerializerFactory()->newItemSerializer();
58+
$deserializer = $this->newDeserializerFactory()->newItemDeserializer();
3959

40-
$entity = new Item( new ItemId( 'Q42' ) );
41-
$entities[] = [ $entity ];
60+
$serialization = $serializer->serialize( $item );
61+
$newEntity = $deserializer->deserialize( $serialization );
4262

43-
$entity = new Item();
44-
$entity->setLabel( 'en', 'Nyan Cat' );
45-
$entity->setLabel( 'fr', 'Nyan Cat' );
46-
$entities[] = [ $entity ];
63+
$this->assertTrue( $item->equals( $newEntity ) );
64+
}
4765

48-
$entity = new Item();
49-
$entity->setDescription( 'en', 'Nyan Cat' );
50-
$entity->setDescription( 'fr', 'Nyan Cat' );
51-
$entities[] = [ $entity ];
66+
public function propertyProvider() {
67+
return [
68+
[ Property::newFromType( 'string' ) ],
69+
];
70+
}
5271

53-
$entity = new Item();
54-
$entity->setAliases( 'en', [ 'Cat', 'My cat' ] );
55-
$entity->setAliases( 'fr', [ 'Cat' ] );
56-
$entities[] = [ $entity ];
72+
/**
73+
* @dataProvider propertyProvider
74+
*/
75+
public function testPropertySerializationRoundtrips( Property $property ) {
76+
$serializer = $this->newSerializerFactory()->newPropertySerializer();
77+
$deserializer = $this->newDeserializerFactory()->newPropertyDeserializer();
5778

58-
$entity = new Item();
59-
$entity->getStatements()->addNewStatement( new PropertyNoValueSnak( 42 ), null, null, 'guid' );
60-
$entities[] = [ $entity ];
79+
$serialization = $serializer->serialize( $property );
80+
$newEntity = $deserializer->deserialize( $serialization );
6181

62-
$item = new Item();
63-
$item->getSiteLinkList()->addNewSiteLink( 'enwiki', 'Nyan Cat' );
64-
$entities[] = [ $item ];
82+
$this->assertTrue( $property->equals( $newEntity ) );
83+
}
6584

66-
$entities[] = [ Property::newFromType( 'string' ) ];
85+
private function newSerializerFactory() {
86+
return new SerializerFactory( new DataValueSerializer() );
87+
}
6788

68-
return $entities;
89+
private function newDeserializerFactory() {
90+
return new DeserializerFactory( new DataValueDeserializer(), new BasicEntityIdParser() );
6991
}
7092

7193
}

0 commit comments

Comments
 (0)