TermDeserializerTest   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 64
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 3
dl 0
loc 64
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A testDeserializeThrowsDeserializationException() 0 6 1
A nonDeserializableProvider() 0 24 1
A testDeserialization() 0 4 1
A deserializationProvider() 0 11 1
1
<?php
2
3
namespace Tests\Wikibase\DataModel\Deserializers;
4
5
use Deserializers\Exceptions\DeserializationException;
6
use PHPUnit\Framework\TestCase;
7
use Wikibase\DataModel\Deserializers\TermDeserializer;
8
use Wikibase\DataModel\Term\Term;
9
10
/**
11
 * @covers Wikibase\DataModel\Deserializers\TermDeserializer
12
 *
13
 * @license GPL-2.0-or-later
14
 * @author Addshore
15
 */
16
class TermDeserializerTest extends TestCase {
17
18
	/**
19
	 * @dataProvider nonDeserializableProvider
20
	 */
21
	public function testDeserializeThrowsDeserializationException( $nonDeserializable ) {
22
		$deserializer = new TermDeserializer();
23
24
		$this->expectException( DeserializationException::class );
25
		$deserializer->deserialize( $nonDeserializable );
26
	}
27
28
	/**
29
	 * @return array[] things that aren't deserialized by the deserializer
30
	 */
31
	public function nonDeserializableProvider() {
32
		return [
33
			'must be an array' => [ new \stdClass() ],
34
			'must contain language' => [ [
35
				'value' => 'FooBar',
36
			] ],
37
			'must contain value' => [ [
38
				'language' => 'de',
39
			] ],
40
			'language must be string' => [ [
41
				'language' => 123,
42
				'value' => 'FooBar',
43
			] ],
44
			'value must be string' => [ [
45
				'language' => 'de',
46
				'value' => 999,
47
			] ],
48
			'must not contain source' => [ [
49
				'language' => 'fr',
50
				'value' => 'Fr to DE hehe',
51
				'source' => 'de',
52
			] ],
53
		];
54
	}
55
56
	/**
57
	 * @dataProvider deserializationProvider
58
	 */
59
	public function testDeserialization( $object, $serialization ) {
60
		$deserializer = new TermDeserializer();
61
		$this->assertEquals( $object, $deserializer->deserialize( $serialization ) );
62
	}
63
64
	/**
65
	 * @return array[] an array of array( object deserialized, serialization )
66
	 */
67
	public function deserializationProvider() {
68
		return [
69
			[
70
				new Term( 'en', 'Value' ),
71
				[
72
					'language' => 'en',
73
					'value' => 'Value',
74
				],
75
			],
76
		];
77
	}
78
79
}
80