Passed
Push — throwsTags ( 75be78...b87a20 )
by no
03:07
created

testNewSiteLinkDeserializer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %
Metric Value
dl 0
loc 9
rs 9.6666
cc 1
eloc 6
nc 1
nop 0
1
<?php
2
3
namespace Tests\Wikibase\DataModel;
4
5
use DataValues\Deserializers\DataValueDeserializer;
6
use Deserializers\Deserializer;
7
use Wikibase\DataModel\DeserializerFactory;
8
use Wikibase\DataModel\Entity\BasicEntityIdParser;
9
10
/**
11
 * @licence GNU GPL v2+
12
 * @author Thomas Pellissier Tanon
13
 * @author Bene* < [email protected] >
14
 */
15
class DeserializerFactoryTest extends \PHPUnit_Framework_TestCase {
16
17
	private function buildDeserializerFactory() {
18
		return new DeserializerFactory( new DataValueDeserializer(), new BasicEntityIdParser() );
19
	}
20
21
	private function assertDeserializesWithoutException(
22
		Deserializer $deserializer,
23
		$serialization
24
	) {
25
		$deserializer->deserialize( $serialization );
26
		$this->assertTrue( true, 'No exception occurred during deserialization' );
27
	}
28
29
	public function testNewEntityDeserializer() {
30
		$this->assertTrue( $this->buildDeserializerFactory()->newEntityDeserializer()->isDeserializerFor(
31
			array(
32
				'type' => 'item'
33
			)
34
		) );
35
		$this->assertTrue( $this->buildDeserializerFactory()->newEntityDeserializer()->isDeserializerFor(
36
			array(
37
				'type' => 'property'
38
			)
39
		) );
40
	}
41
42
	public function testNewItemDeserializer() {
43
		$this->assertDeserializesWithoutException(
44
			$this->buildDeserializerFactory()->newItemDeserializer(),
45
			array(
46
				'type' => 'item'
47
			)
48
		);
49
	}
50
51
	public function testNewPropertyDeserializer() {
52
		$this->assertDeserializesWithoutException(
53
			$this->buildDeserializerFactory()->newPropertyDeserializer(),
54
			array(
55
				'type' => 'property',
56
				'datatype' => 'string'
57
			)
58
		);
59
	}
60
61
	public function testNewSiteLinkDeserializer() {
62
		$this->assertDeserializesWithoutException(
63
			$this->buildDeserializerFactory()->newSiteLinkDeserializer(),
64
			array(
65
				'site' => 'enwiki',
66
				'title' => 'Nyan Cat'
67
			)
68
		);
69
	}
70
71
	public function testNewStatementDeserializer() {
72
		$this->assertTrue( $this->buildDeserializerFactory()->newStatementDeserializer()->isDeserializerFor(
73
			array(
74
				'mainsnak' => array(
75
					'snaktype' => 'novalue',
76
					'property' => 'P42'
77
				),
78
				'type' => 'claim'
79
			)
80
		) );
81
	}
82
83
	public function testStatementListDeserializer() {
84
		$this->assertDeserializesWithoutException(
85
			$this->buildDeserializerFactory()->newStatementListDeserializer(),
86
			array(
87
				'P42' => array(
88
				)
89
			)
90
		);
91
	}
92
93
	public function testNewReferencesDeserializer() {
94
		$this->assertDeserializesWithoutException(
95
			$this->buildDeserializerFactory()->newReferencesDeserializer(),
96
			array(
97
				array(
98
					'hash' => 'da39a3ee5e6b4b0d3255bfef95601890afd80709',
99
					'snaks' => array()
100
				)
101
			)
102
		);
103
	}
104
105
	public function testNewReferenceDeserializer() {
106
		$this->assertDeserializesWithoutException(
107
			$this->buildDeserializerFactory()->newReferenceDeserializer(),
108
			array(
109
				'hash' => 'da39a3ee5e6b4b0d3255bfef95601890afd80709',
110
				'snaks' => array()
111
			)
112
		);
113
	}
114
115
	public function testNewSnakDeserializer() {
116
		$this->assertDeserializesWithoutException(
117
			$this->buildDeserializerFactory()->newSnakDeserializer(),
118
			array(
119
				'snaktype' => 'novalue',
120
				'property' => 'P42'
121
			)
122
		);
123
	}
124
125
	public function testNewEntityIdDeserializer() {
126
		$this->assertDeserializesWithoutException(
127
			$this->buildDeserializerFactory()->newEntityIdDeserializer(),
128
			'Q42'
129
		);
130
	}
131
132
	public function testNewTermDeserializer() {
133
		$this->assertDeserializesWithoutException(
134
			$this->buildDeserializerFactory()->newTermDeserializer(),
135
			array( 'language' => 'en', 'value' => 'Some Term' )
136
		);
137
	}
138
139
	public function testNewTermListDeserializer() {
140
		$this->assertDeserializesWithoutException(
141
			$this->buildDeserializerFactory()->newTermListDeserializer(),
142
			array(
143
				'en' => array( 'language' => 'en', 'value' => 'Some Term' ),
144
				'de' => array( 'language' => 'de', 'value' => 'Some Term' ),
145
			)
146
		);
147
	}
148
149
	public function testNewAliasGroupListDeserializer() {
150
		$this->assertDeserializesWithoutException(
151
			$this->buildDeserializerFactory()->newAliasGroupListDeserializer(),
152
			array( 'en' => array( array( 'language' => 'en', 'value' => 'Some Term' ) ) )
153
		);
154
	}
155
156
}
157