Completed
Push — thereIsNoEntity ( ef775f )
by no
07:23
created

testNewAliasGroupListDeserializer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
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\Deserializers\DataValueDeserializer;
6
use Deserializers\Deserializer;
7
use Wikibase\DataModel\DeserializerFactory;
8
use Wikibase\DataModel\Entity\BasicEntityIdParser;
9
10
/**
11
 * @license GPL-2.0+
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 testNewItemDeserializer() {
30
		$this->assertDeserializesWithoutException(
31
			$this->buildDeserializerFactory()->newItemDeserializer(),
32
			array(
33
				'type' => 'item'
34
			)
35
		);
36
	}
37
38
	public function testNewPropertyDeserializer() {
39
		$this->assertDeserializesWithoutException(
40
			$this->buildDeserializerFactory()->newPropertyDeserializer(),
41
			array(
42
				'type' => 'property',
43
				'datatype' => 'string'
44
			)
45
		);
46
	}
47
48
	public function testNewSiteLinkDeserializer() {
49
		$this->assertDeserializesWithoutException(
50
			$this->buildDeserializerFactory()->newSiteLinkDeserializer(),
51
			array(
52
				'site' => 'enwiki',
53
				'title' => 'Nyan Cat'
54
			)
55
		);
56
	}
57
58
	public function testNewStatementDeserializer() {
59
		$this->assertTrue( $this->buildDeserializerFactory()->newStatementDeserializer()->isDeserializerFor(
60
			array(
61
				'mainsnak' => array(
62
					'snaktype' => 'novalue',
63
					'property' => 'P42'
64
				),
65
				'type' => 'claim'
66
			)
67
		) );
68
	}
69
70
	public function testStatementListDeserializer() {
71
		$this->assertDeserializesWithoutException(
72
			$this->buildDeserializerFactory()->newStatementListDeserializer(),
73
			array(
74
				'P42' => array(
75
				)
76
			)
77
		);
78
	}
79
80
	public function testNewReferencesDeserializer() {
81
		$this->assertDeserializesWithoutException(
82
			$this->buildDeserializerFactory()->newReferencesDeserializer(),
83
			array(
84
				array(
85
					'hash' => 'da39a3ee5e6b4b0d3255bfef95601890afd80709',
86
					'snaks' => array()
87
				)
88
			)
89
		);
90
	}
91
92
	public function testNewReferenceDeserializer() {
93
		$this->assertDeserializesWithoutException(
94
			$this->buildDeserializerFactory()->newReferenceDeserializer(),
95
			array(
96
				'hash' => 'da39a3ee5e6b4b0d3255bfef95601890afd80709',
97
				'snaks' => array()
98
			)
99
		);
100
	}
101
102
	public function testNewSnakDeserializer() {
103
		$this->assertDeserializesWithoutException(
104
			$this->buildDeserializerFactory()->newSnakDeserializer(),
105
			array(
106
				'snaktype' => 'novalue',
107
				'property' => 'P42'
108
			)
109
		);
110
	}
111
112
	public function testNewEntityIdDeserializer() {
113
		$this->assertDeserializesWithoutException(
114
			$this->buildDeserializerFactory()->newEntityIdDeserializer(),
115
			'Q42'
116
		);
117
	}
118
119
	public function testNewTermDeserializer() {
120
		$this->assertDeserializesWithoutException(
121
			$this->buildDeserializerFactory()->newTermDeserializer(),
122
			array( 'language' => 'en', 'value' => 'Some Term' )
123
		);
124
	}
125
126
	public function testNewTermListDeserializer() {
127
		$this->assertDeserializesWithoutException(
128
			$this->buildDeserializerFactory()->newTermListDeserializer(),
129
			array(
130
				'en' => array( 'language' => 'en', 'value' => 'Some Term' ),
131
				'de' => array( 'language' => 'de', 'value' => 'Some Term' ),
132
			)
133
		);
134
	}
135
136
	public function testNewAliasGroupListDeserializer() {
137
		$this->assertDeserializesWithoutException(
138
			$this->buildDeserializerFactory()->newAliasGroupListDeserializer(),
139
			array( 'en' => array( array( 'language' => 'en', 'value' => 'Some Term' ) ) )
140
		);
141
	}
142
143
}
144