Completed
Pull Request — master (#188)
by Bene
03:46 queued 01:21
created

SerializerFactoryTest   B

Complexity

Total Complexity 19

Size/Duplication

Total Lines 133
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 17

Importance

Changes 7
Bugs 1 Features 3
Metric Value
wmc 19
c 7
b 1
f 3
lcom 1
cbo 17
dl 0
loc 133
rs 7.8571

19 Methods

Rating   Name   Duplication   Size   Complexity  
A buildSerializerFactory() 0 3 1
A assertSerializesWithoutException() 0 4 1
A testNewEntitySerializer() 0 11 1
A testNewItemSerializer() 0 6 1
A testNewPropertySerializer() 0 6 1
A testNewSiteLinkSerializer() 0 6 1
A testNewStatementSerializer() 0 6 1
A testNewStatementListSerializer() 0 6 1
A testNewReferencesSerializer() 0 6 1
A testNewReferenceSerializer() 0 6 1
A testNewSnakListSerializer() 0 6 1
A testNewSnakSerializer() 0 6 1
A testFactoryCreateWithUnexpectedValue() 0 4 1
A testNewSnakListSerializerWithUseObjectsForMaps() 0 5 1
A testNewTypedSnakSerializer() 0 6 1
A testNewTermSerializer() 0 6 1
A testNewTermListSerializer() 0 6 1
A testNewAliasGroupSerializer() 0 6 1
A testNewAliasGroupListSerializer() 0 6 1
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(),
0 ignored issues
show
Deprecated Code introduced by
The method Wikibase\DataModel\Seria...::newEntitySerializer() has been deprecated with message: since 2.1, dispatching should happen when all entity types are known

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
41
			new Item()
42
		);
43
44
		$this->assertSerializesWithoutException(
45
			$this->buildSerializerFactory()->newEntitySerializer(),
0 ignored issues
show
Deprecated Code introduced by
The method Wikibase\DataModel\Seria...::newEntitySerializer() has been deprecated with message: since 2.1, dispatching should happen when all entity types are known

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
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