Completed
Pull Request — master (#199)
by no
02:30
created

testDeserializeThrowsDeserializationException()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 5
rs 9.4285
cc 1
eloc 4
nc 1
nop 1
1
<?php
2
3
namespace Tests\Wikibase\DataModel\Deserializers;
4
5
use PHPUnit_Framework_TestCase;
6
use Wikibase\DataModel\Deserializers\SnakListDeserializer;
7
use Wikibase\DataModel\Snak\PropertyNoValueSnak;
8
use Wikibase\DataModel\Snak\SnakList;
9
10
/**
11
 * @covers Wikibase\DataModel\Deserializers\SnakListDeserializer
12
 *
13
 * @licence GNU GPL v2+
14
 * @author Thomas Pellissier Tanon
15
 */
16
class SnakListDeserializerTest extends PHPUnit_Framework_TestCase {
17
18
	private function buildDeserializer() {
19
		$snakDeserializerMock = $this->getMock( 'Deserializers\Deserializer' );
20
21
		$snakDeserializerMock->expects( $this->any() )
22
			->method( 'deserialize' )
23
			->with( $this->equalTo( array(
24
					'snaktype' => 'novalue',
25
					'property' => 'P42'
26
			) ) )
27
			->will( $this->returnValue( new PropertyNoValueSnak( 42 ) ) );
28
29
		return new SnakListDeserializer( $snakDeserializerMock );
30
	}
31
32
	/**
33
	 * @dataProvider nonDeserializableProvider
34
	 */
35
	public function testDeserializeThrowsDeserializationException( $nonDeserializable ) {
36
		$deserializer = $this->buildDeserializer();
37
		$this->setExpectedException( 'Deserializers\Exceptions\DeserializationException' );
38
		$deserializer->deserialize( $nonDeserializable );
39
	}
40
41
	public function nonDeserializableProvider() {
42
		return array(
43
			array(
44
				42
45
			),
46
			array(
47
				array(
48
					'id' => 'P10'
49
				)
50
			),
51
			array(
52
				array(
53
					'snaktype' => '42value'
54
				)
55
			),
56
		);
57
	}
58
59
	/**
60
	 * @dataProvider deserializationProvider
61
	 */
62
	public function testDeserialization( $object, $serialization ) {
63
		$this->assertEquals( $object, $this->buildDeserializer()->deserialize( $serialization ) );
64
	}
65
66
	public function deserializationProvider() {
67
		return array(
68
			array(
69
				new SnakList(),
70
				array()
71
			),
72
			array(
73
				new SnakList( array(
74
					new PropertyNoValueSnak( 42 )
75
				) ),
76
				array(
77
					'P42' => array(
78
						array(
79
							'snaktype' => 'novalue',
80
							'property' => 'P42'
81
						)
82
					)
83
				)
84
			),
85
		);
86
	}
87
88
}
89