Completed
Push — master ( 0ab9e1...910d18 )
by Bene
06:18 queued 05:57
created

SerializerFactoryTest::testNewItemSerializer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 6
rs 9.4285
cc 1
eloc 4
nc 1
nop 0
1
<?php
2
3
namespace Tests\Wikibase\DataModel;
4
5
use DataValues\Serializers\DataValueSerializer;
6
use Serializers\Serializer;
7
use Wikibase\DataModel\Entity\Item;
8
use Wikibase\DataModel\Entity\Property;
9
use Wikibase\DataModel\Reference;
10
use Wikibase\DataModel\ReferenceList;
11
use Wikibase\DataModel\SerializerFactory;
12
use Wikibase\DataModel\SiteLink;
13
use Wikibase\DataModel\Snak\PropertyNoValueSnak;
14
use Wikibase\DataModel\Snak\SnakList;
15
use Wikibase\DataModel\Snak\TypedSnak;
16
use Wikibase\DataModel\Statement\Statement;use Wikibase\DataModel\Statement\StatementList;
17
use Wikibase\DataModel\Term\AliasGroup;
18
use Wikibase\DataModel\Term\AliasGroupList;
19
use Wikibase\DataModel\Term\Term;
20
use Wikibase\DataModel\Term\TermList;
21
22
/**
23
 * @licence GNU GPL v2+
24
 * @author Thomas Pellissier Tanon
25
 * @author Bene* < [email protected] >
26
 */
27
class SerializerFactoryTest extends \PHPUnit_Framework_TestCase {
28
29
	private function buildSerializerFactory() {
30
		return new SerializerFactory( new DataValueSerializer() );
31
	}
32
33
	private function assertSerializesWithoutException( Serializer $serializer, $object ) {
34
		$serializer->serialize( $object );
35
		$this->assertTrue( true, 'No exception occurred during serialization' );
36
	}
37
38
	public function testNewEntitySerializer() {
39
		$this->assertSerializesWithoutException(
40
			$this->buildSerializerFactory()->newEntitySerializer(),
41
			new Item()
42
		);
43
44
		$this->assertSerializesWithoutException(
45
			$this->buildSerializerFactory()->newEntitySerializer(),
46
			Property::newFromType( 'string' )
47
		);
48
	}
49
50
	public function testNewItemSerializer() {
51
		$this->assertSerializesWithoutException(
52
			$this->buildSerializerFactory()->newItemSerializer(),
53
			new Item()
54
		);
55
	}
56
57
	public function testNewPropertySerializer() {
58
		$this->assertSerializesWithoutException(
59
			$this->buildSerializerFactory()->newPropertySerializer(),
60
			Property::newFromType( 'string' )
61
		);
62
	}
63
64
	public function testNewSiteLinkSerializer() {
65
		$this->assertSerializesWithoutException(
66
			$this->buildSerializerFactory()->newSiteLinkSerializer(),
67
			new SiteLink( 'enwiki', 'Nyan Cat' )
68
		);
69
	}
70
71
	public function testNewStatementSerializer() {
72
		$this->assertSerializesWithoutException(
73
			$this->buildSerializerFactory()->newStatementSerializer(),
74
			new Statement( new PropertyNoValueSnak( 42 ) )
75
		);
76
	}
77
78
	public function testNewStatementListSerializer() {
79
		$this->assertSerializesWithoutException(
80
			$this->buildSerializerFactory()->newStatementListSerializer(),
81
			new StatementList()
82
		);
83
	}
84
85
	public function testNewReferencesSerializer() {
86
		$this->assertSerializesWithoutException(
87
			$this->buildSerializerFactory()->newReferencesSerializer(),
88
			new ReferenceList()
89
		);
90
	}
91
92
	public function testNewReferenceSerializer() {
93
		$this->assertSerializesWithoutException(
94
			$this->buildSerializerFactory()->newReferenceSerializer(),
95
			new Reference()
96
		);
97
	}
98
99
	public function testNewSnakListSerializer() {
100
		$this->assertSerializesWithoutException(
101
			$this->buildSerializerFactory()->newSnakListSerializer(),
102
			new SnakList( array() )
103
		);
104
	}
105
106
	public function testNewSnakSerializer() {
107
		$this->assertSerializesWithoutException(
108
			$this->buildSerializerFactory()->newSnakSerializer(),
109
			new PropertyNoValueSnak( 42 )
110
		);
111
	}
112
113
	public function testFactoryCreateWithUnexpectedValue() {
114
		$this->setExpectedException( 'InvalidArgumentException' );
115
		new SerializerFactory( new DataValueSerializer(), 1.0 );
116
	}
117
118
	public function testNewSnakListSerializerWithUseObjectsForMaps() {
119
		$factory = new SerializerFactory( new DataValueSerializer(), SerializerFactory::OPTION_OBJECTS_FOR_MAPS );
120
		$serializer = $factory->newSnakListSerializer();
121
		$this->assertAttributeSame( true, 'useObjectsForMaps' , $serializer );
122
	}
123
124
	public function testNewTypedSnakSerializer() {
125
		$this->assertSerializesWithoutException(
126
			$this->buildSerializerFactory()->newTypedSnakSerializer(),
127
			new TypedSnak( new PropertyNoValueSnak( 42 ), 'kittens' )
128
		);
129
	}
130
131
	public function testNewTermSerializer() {
132
		$this->assertSerializesWithoutException(
133
			$this->buildSerializerFactory()->newTermSerializer(),
134
			new Term( 'en', 'Foo' )
135
		);
136
	}
137
138
	public function testNewTermListSerializer() {
139
		$this->assertSerializesWithoutException(
140
			$this->buildSerializerFactory()->newTermListSerializer(),
141
			new TermList( array( new Term( 'de', 'Foo' ) ) )
142
		);
143
	}
144
145
	public function testNewAliasGroupSerializer() {
146
		$this->assertSerializesWithoutException(
147
			$this->buildSerializerFactory()->newAliasGroupSerializer(),
148
			new AliasGroup( 'en', array( 'foo', 'bar' ) )
149
		);
150
	}
151
152
	public function testNewAliasGroupListSerializer() {
153
		$this->assertSerializesWithoutException(
154
			$this->buildSerializerFactory()->newAliasGroupListSerializer(),
155
			new AliasGroupList( array( new AliasGroup( 'de', array( 'AA', 'BB' ) ) ) )
156
		);
157
	}
158
159
}
160