Passed
Push — release240 ( e4d7cb...c3380e )
by no
05:29 queued 02:46
created

testSnakSerializationWithHash()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
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
		return new SnakSerializer( new DataValueSerializer(), false );
23
	}
24
25
	public function serializableProvider() {
26
		return array(
27
			array(
28
				new PropertyNoValueSnak( 42 )
29
			),
30
			array(
31
				new PropertySomeValueSnak( 42 )
32
			),
33
			array(
34
				new PropertyValueSnak( 42, new StringValue( 'hax' ) )
35
			),
36
		);
37
	}
38
39
	public function nonSerializableProvider() {
40
		return array(
41
			array(
42
				5
43
			),
44
			array(
45
				array()
46
			),
47
			array(
48
				new ItemId( 'Q42' )
49
			),
50
		);
51
	}
52
53
	public function serializationProvider() {
54
		return array(
55
			array(
56
				array(
57
					'snaktype' => 'novalue',
58
					'property' => 'P42',
59
				),
60
				new PropertyNoValueSnak( 42 )
61
			),
62
			array(
63
				array(
64
					'snaktype' => 'somevalue',
65
					'property' => 'P42',
66
				),
67
				new PropertySomeValueSnak( 42 )
68
			),
69
			array(
70
				array(
71
					'snaktype' => 'value',
72
					'property' => 'P42',
73
					'datavalue' => array(
74
						'value' => 'hax',
75
						'type' => 'string',
76
					)
77
				),
78
				new PropertyValueSnak( 42, new StringValue( 'hax' ) )
79
			),
80
		);
81
	}
82
83
	public function testSnakSerializationWithHash() {
84
		$serializer = new SnakSerializer( new DataValueSerializer() );
85
86
		$snak = new PropertyValueSnak( 42, new StringValue( 'hax' ) );
87
		$serialization = $serializer->serialize( $snak );
88
89
		$this->assertArrayHasKey( 'hash', $serialization );
90
		$this->assertInternalType( 'string', $serialization['hash'] );
91
		$this->assertNotEmpty( $serialization['hash'] );
92
	}
93
94
}
95