Completed
Push — brokenTests ( 6f3d3a )
by no
02:46
created

testNewStatementSerializer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

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