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

deserializableProvider()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
c 1
b 1
f 0
dl 0
loc 3
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace Tests\Wikibase\DataModel\Deserializers;
4
5
use PHPUnit_Framework_TestCase;
6
use Wikibase\DataModel\Deserializers\ReferenceListDeserializer;
7
use Wikibase\DataModel\Reference;
8
use Wikibase\DataModel\ReferenceList;
9
10
/**
11
 * @covers Wikibase\DataModel\Deserializers\ReferenceListDeserializer
12
 *
13
 * @licence GNU GPL v2+
14
 * @author Thomas Pellissier Tanon
15
 */
16
class ReferenceListDeserializerTest extends PHPUnit_Framework_TestCase {
17
18
	private function buildDeserializer() {
19
		$referenceDeserializerMock = $this->getMock( '\Deserializers\Deserializer' );
20
21
		$referenceDeserializerMock->expects( $this->any() )
22
			->method( 'deserialize' )
23
			->with( $this->equalTo( array(
24
				'hash' => 'da39a3ee5e6b4b0d3255bfef95601890afd80709',
25
				'snaks' => array()
26
			) ) )
27
			->will( $this->returnValue( new Reference() ) );
28
29
		return new ReferenceListDeserializer( $referenceDeserializerMock );
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
		);
47
	}
48
49
	/**
50
	 * @dataProvider deserializationProvider
51
	 */
52
	public function testDeserialization( $object, $serialization ) {
53
		$this->assertReferenceListEquals(
54
			$object,
55
			$this->buildDeserializer()->deserialize( $serialization )
56
		);
57
	}
58
59
	public function deserializationProvider() {
60
		return array(
61
			array(
62
				new ReferenceList(),
63
				array()
64
			),
65
			array(
66
				new ReferenceList( array(
67
					new Reference()
68
				) ),
69
				array(
70
					array(
71
						'hash' => 'da39a3ee5e6b4b0d3255bfef95601890afd80709',
72
						'snaks' => array()
73
					)
74
				)
75
			),
76
		);
77
	}
78
79
	/**
80
	 * @param ReferenceList $expected
81
	 * @param ReferenceList $actual
82
	 */
83
	public function assertReferenceListEquals( ReferenceList $expected, ReferenceList $actual ) {
84
		$this->assertTrue( $actual->equals( $expected ), 'The two ReferenceList are different' );
85
	}
86
87
}
88