SerializedEntityDeserializerTest   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 4
Bugs 0 Features 0
Metric Value
wmc 5
c 4
b 0
f 0
lcom 1
cbo 5
dl 0
loc 42
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A buildDeserializer() 0 3 1
A testIsDeserializerFor() 0 7 1
A testDeserialize() 0 13 1
A testSerializeThrowExceptionForInvalidInput() 0 6 1
A testSerializeThrowExceptionForInvalidId() 0 6 1
1
<?php
2
3
namespace Wikibase\EntityStore\DataModel\Deserializers;
4
5
use Wikibase\DataModel\Deserializers\EntityIdDeserializer;
6
use Wikibase\DataModel\Entity\BasicEntityIdParser;
7
use Wikibase\DataModel\Entity\ItemId;
8
use Wikibase\EntityStore\DataModel\SerializedEntity;
9
10
/**
11
 * @covers Wikibase\EntityStore\DataModel\Deserializers\SerializedEntityDeserializer
12
 *
13
 * @licence GNU GPL v2+
14
 * @author Thomas Pellissier Tanon
15
 */
16
class SerializedEntityDeserializerTest extends \PHPUnit_Framework_TestCase {
17
18
	private function buildDeserializer() {
19
		return new SerializedEntityDeserializer( new EntityIdDeserializer( new BasicEntityIdParser() ) );
20
	}
21
22
	public function testIsDeserializerFor() {
23
		$deserializer = $this->buildDeserializer();
24
25
		$this->assertTrue( $deserializer->isDeserializerFor( [ 'type' => 'item' ] ) );
26
		$this->assertFalse( $deserializer->isDeserializerFor( [] ) );
27
		$this->assertFalse( $deserializer->isDeserializerFor( null ) );
28
	}
29
30
	public function testDeserialize() {
31
		$deserializer = $this->buildDeserializer();
32
33
		$this->assertEquals(
34
			new SerializedEntity( null, [ 'type' => 'foo' ] ),
35
			$deserializer->deserialize( [ 'type' => 'foo' ] )
36
		);
37
38
		$this->assertEquals(
39
			new SerializedEntity( new ItemId( 'Q1' ), [ 'id' => 'Q1', 'type' => 'item' ] ),
40
			$deserializer->deserialize( [ 'id' => 'Q1', 'type' => 'item' ] )
41
		);
42
	}
43
44
	public function testSerializeThrowExceptionForInvalidInput() {
45
		$deserializer = $this->buildDeserializer();
46
47
		$this->setExpectedException( 'Deserializers\Exceptions\DeserializationException' );
48
		$deserializer->deserialize( [] );
49
	}
50
51
	public function testSerializeThrowExceptionForInvalidId() {
52
		$deserializer = $this->buildDeserializer();
53
54
		$this->setExpectedException( 'Deserializers\Exceptions\DeserializationException' );
55
		$deserializer->deserialize( [ 'id' => 'bad' ] );
56
	}
57
}
58