SnakSerializerTest   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 77
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 8

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 8
dl 0
loc 77
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A buildSerializer() 0 4 1
A serializableProvider() 0 13 1
A nonSerializableProvider() 0 13 1
A serializationProvider() 0 29 1
A testSnakSerializationWithHash() 0 10 1
1
<?php
2
3
namespace Tests\Wikibase\DataModel\Serializers;
4
5
use DataValues\Serializers\DataValueSerializer;
6
use DataValues\StringValue;
7
use Wikibase\DataModel\Entity\ItemId;
8
use Wikibase\DataModel\Serializers\SnakSerializer;
9
use Wikibase\DataModel\Snak\PropertyNoValueSnak;
10
use Wikibase\DataModel\Snak\PropertySomeValueSnak;
11
use Wikibase\DataModel\Snak\PropertyValueSnak;
12
13
/**
14
 * @covers Wikibase\DataModel\Serializers\SnakSerializer
15
 *
16
 * @license GPL-2.0-or-later
17
 * @author Thomas Pellissier Tanon
18
 */
19
class SnakSerializerTest extends DispatchableSerializerTest {
20
21
	protected function buildSerializer() {
22
		$serializeWithHash = false;
23
		return new SnakSerializer( new DataValueSerializer(), $serializeWithHash );
24
	}
25
26
	public function serializableProvider() {
27
		return [
28
			[
29
				new PropertyNoValueSnak( 42 )
30
			],
31
			[
32
				new PropertySomeValueSnak( 42 )
33
			],
34
			[
35
				new PropertyValueSnak( 42, new StringValue( 'hax' ) )
36
			],
37
		];
38
	}
39
40
	public function nonSerializableProvider() {
41
		return [
42
			[
43
				5
44
			],
45
			[
46
				[]
47
			],
48
			[
49
				new ItemId( 'Q42' )
50
			],
51
		];
52
	}
53
54
	public function serializationProvider() {
55
		return [
56
			[
57
				[
58
					'snaktype' => 'novalue',
59
					'property' => 'P42',
60
				],
61
				new PropertyNoValueSnak( 42 )
62
			],
63
			[
64
				[
65
					'snaktype' => 'somevalue',
66
					'property' => 'P42',
67
				],
68
				new PropertySomeValueSnak( 42 )
69
			],
70
			[
71
				[
72
					'snaktype' => 'value',
73
					'property' => 'P42',
74
					'datavalue' => [
75
						'value' => 'hax',
76
						'type' => 'string',
77
					]
78
				],
79
				new PropertyValueSnak( 42, new StringValue( 'hax' ) )
80
			],
81
		];
82
	}
83
84
	public function testSnakSerializationWithHash() {
85
		$serializer = new SnakSerializer( new DataValueSerializer() );
86
87
		$snak = new PropertyValueSnak( 42, new StringValue( 'hax' ) );
88
		$serialization = $serializer->serialize( $snak );
89
90
		$this->assertArrayHasKey( 'hash', $serialization );
91
		$this->assertIsString( $serialization['hash'] );
92
		$this->assertNotEmpty( $serialization['hash'] );
93
	}
94
95
}
96