DispatchableSerializerTest   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 2
dl 0
loc 56
rs 10
c 0
b 0
f 0

9 Methods

Rating   Name   Duplication   Size   Complexity  
buildSerializer() 0 1 ?
serializableProvider() 0 1 ?
nonSerializableProvider() 0 1 ?
serializationProvider() 0 1 ?
A testImplementsDispatchableSerializerInterface() 0 3 1
A testIsSerializerForReturnsTrue() 0 3 1
A testIsSerializerForReturnsFalse() 0 3 1
A testSerializeThrowsUnsupportedObjectException() 0 4 1
A testSerialization() 0 3 1
1
<?php
2
3
namespace Tests\Wikibase\DataModel\Serializers;
4
5
use PHPUnit\Framework\TestCase;
6
use Serializers\DispatchableSerializer;
7
use Serializers\Exceptions\UnsupportedObjectException;
8
9
/**
10
 * @license GPL-2.0-or-later
11
 * @author Thomas Pellissier Tanon
12
 * @author Thiemo Kreuz
13
 */
14
abstract class DispatchableSerializerTest extends TestCase {
15
16
	/**
17
	 * @return DispatchableSerializer
18
	 */
19
	abstract protected function buildSerializer();
20
21
	public function testImplementsDispatchableSerializerInterface() {
22
		$this->assertInstanceOf( DispatchableSerializer::class, $this->buildSerializer() );
23
	}
24
25
	/**
26
	 * @dataProvider serializableProvider
27
	 */
28
	public function testIsSerializerForReturnsTrue( $serializable ) {
29
		$this->assertTrue( $this->buildSerializer()->isSerializerFor( $serializable ) );
30
	}
31
32
	/**
33
	 * @return array[] things that are serialized by the serializer
34
	 */
35
	abstract public function serializableProvider();
36
37
	/**
38
	 * @dataProvider nonSerializableProvider
39
	 */
40
	public function testIsSerializerForReturnsFalse( $nonSerializable ) {
41
		$this->assertFalse( $this->buildSerializer()->isSerializerFor( $nonSerializable ) );
42
	}
43
44
	/**
45
	 * @dataProvider nonSerializableProvider
46
	 */
47
	public function testSerializeThrowsUnsupportedObjectException( $nonSerializable ) {
48
		$this->expectException( UnsupportedObjectException::class );
49
		$this->buildSerializer()->serialize( $nonSerializable );
50
	}
51
52
	/**
53
	 * @return array[] things that aren't serialized by the serializer
54
	 */
55
	abstract public function nonSerializableProvider();
56
57
	/**
58
	 * @dataProvider serializationProvider
59
	 */
60
	public function testSerialization( $serialization, $object ) {
61
		$this->assertSame( $serialization, $this->buildSerializer()->serialize( $object ) );
62
	}
63
64
	/**
65
	 * @return array[] an array of array( serialization, object to serialize)
66
	 */
67
	abstract public function serializationProvider();
68
69
}
70