Completed
Push — master ( 7d8921...21f60a )
by Thomas
26s
created

TermDeserializerTest::testDeserialization()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 3
nc 1
nop 2
1
<?php
2
3
namespace Tests\Wikibase\DataModel\Deserializers;
4
5
use PHPUnit_Framework_TestCase;
6
use Wikibase\DataModel\Deserializers\TermDeserializer;
7
use Wikibase\DataModel\Term\Term;
8
9
/**
10
 * @covers Wikibase\DataModel\Deserializers\TermDeserializer
11
 *
12
 * @licence GNU GPL v2+
13
 * @author Addshore
14
 */
15
class TermDeserializerTest extends PHPUnit_Framework_TestCase {
16
17
	/**
18
	 * @dataProvider nonDeserializableProvider
19
	 */
20
	public function testDeserializeThrowsDeserializationException( $nonDeserializable ) {
21
		$deserializer = new TermDeserializer();
22
		$this->setExpectedException( 'Deserializers\Exceptions\DeserializationException' );
23
		$deserializer->deserialize( $nonDeserializable );
24
	}
25
26
	/**
27
	 * @return array[] things that aren't deserialized by the deserializer
28
	 */
29
	public function nonDeserializableProvider() {
30
		return array(
31
			'must be an array' => array( new \stdClass() ),
32
			'must contain language' => array( array(
33
				'value' => 'FooBar',
34
			) ),
35
			'must contain value' => array( array(
36
				'language' => 'de',
37
			) ),
38
			'language must be string' => array( array(
39
				'language' => 123,
40
				'value' => 'FooBar',
41
			) ),
42
			'value must be string' => array( array(
43
				'language' => 'de',
44
				'value' => 999,
45
			) ),
46
			'must not contain source' => array( array(
47
				'language' => 'fr',
48
				'value' => 'Fr to DE hehe',
49
				'source' => 'de',
50
			) ),
51
		);
52
	}
53
54
	/**
55
	 * @dataProvider deserializationProvider
56
	 */
57
	public function testDeserialization( $object, $serialization ) {
58
		$deserializer = new TermDeserializer();
59
		$this->assertEquals( $object, $deserializer->deserialize( $serialization ) );
60
	}
61
62
	/**
63
	 * @return array[] an array of array( object deserialized, serialization )
64
	 */
65
	public function deserializationProvider() {
66
		return array(
67
			array(
68
				new Term( 'en', 'Value' ),
69
				array(
70
					'language' => 'en',
71
					'value' => 'Value',
72
				),
73
			),
74
		);
75
	}
76
77
}
78