DeserializerFactoryTest   A
last analyzed

Complexity

Total Complexity 15

Size/Duplication

Total Lines 144
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

Changes 0
Metric Value
wmc 15
lcom 1
cbo 6
dl 0
loc 144
rs 10
c 0
b 0
f 0

15 Methods

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