Passed
Push — master ( 01337b...e267bc )
by Jeroen De
05:44 queued 03:06
created

testSnakSerializationWithHash()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 10
rs 9.4285
cc 1
eloc 7
nc 1
nop 0
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+
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 array(
28
			array(
29
				new PropertyNoValueSnak( 42 )
30
			),
31
			array(
32
				new PropertySomeValueSnak( 42 )
33
			),
34
			array(
35
				new PropertyValueSnak( 42, new StringValue( 'hax' ) )
36
			),
37
		);
38
	}
39
40
	public function nonSerializableProvider() {
41
		return array(
42
			array(
43
				5
44
			),
45
			array(
46
				array()
47
			),
48
			array(
49
				new ItemId( 'Q42' )
50
			),
51
		);
52
	}
53
54
	public function serializationProvider() {
55
		return array(
56
			array(
57
				array(
58
					'snaktype' => 'novalue',
59
					'property' => 'P42',
60
				),
61
				new PropertyNoValueSnak( 42 )
62
			),
63
			array(
64
				array(
65
					'snaktype' => 'somevalue',
66
					'property' => 'P42',
67
				),
68
				new PropertySomeValueSnak( 42 )
69
			),
70
			array(
71
				array(
72
					'snaktype' => 'value',
73
					'property' => 'P42',
74
					'datavalue' => array(
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->assertInternalType( 'string', $serialization['hash'] );
92
		$this->assertNotEmpty( $serialization['hash'] );
93
	}
94
95
}
96