assertDeserializesToStatement()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
namespace Tests\Integration\Wikibase\InternalSerialization\Deserializers;
4
5
use DataValues\NumberValue;
6
use Deserializers\Deserializer;
7
use Serializers\Serializer;
8
use Tests\Integration\Wikibase\InternalSerialization\TestFactoryBuilder;
9
use Wikibase\DataModel\Snak\PropertyNoValueSnak;
10
use Wikibase\DataModel\Snak\PropertySomeValueSnak;
11
use Wikibase\DataModel\Snak\PropertyValueSnak;
12
use Wikibase\DataModel\Snak\SnakList;
13
use Wikibase\DataModel\Statement\Statement;
14
15
/**
16
 * @covers Wikibase\InternalSerialization\Deserializers\StatementDeserializer
17
 *
18
 * @license GPL-2.0-or-later
19
 * @author Jeroen De Dauw < [email protected] >
20
 */
21
class StatementDeserializerTest extends \PHPUnit\Framework\TestCase {
22
23
	/**
24
	 * @var Deserializer
25
	 */
26
	private $deserializer;
27
28
	/**
29
	 * @var Serializer
30
	 */
31
	private $currentSerializer;
32
33
	protected function setUp() : void {
34
		$this->deserializer = TestFactoryBuilder::newDeserializerFactoryWithDataValueSupport()
35
			->newStatementDeserializer();
36
		$this->currentSerializer = TestFactoryBuilder::newSerializerFactory()->newStatementSerializer();
37
	}
38
39
	private function assertDeserializesToStatement( $serialization ) {
40
		$statement = $this->deserializer->deserialize( $serialization );
41
42
		$this->assertInstanceOf( Statement::class, $statement );
43
	}
44
45
	public function testGivenGeneratedSerialization_statementIsDeserialized() {
46
		$this->assertDeserializesToStatement( $this->currentSerializer->serialize( $this->newTestStatement() ) );
47
	}
48
49
	private function newTestStatement() {
50
		$statement = new Statement( new PropertySomeValueSnak( 42 ) );
51
52
		$statement->setQualifiers( new SnakList( array(
53
			new PropertyNoValueSnak( 1337 ),
54
			new PropertyValueSnak( 23, new NumberValue( 42 ) )
55
		) ) );
56
57
		$statement->setGuid( 'some guid be here' );
58
59
		return $statement;
60
	}
61
62
	/**
63
	 * @dataProvider statementsInLegacyFormatProvider
64
	 */
65
	public function testCanDeseriaizeLegacyFormat( $serialization ) {
66
		$this->assertDeserializesToStatement( json_decode( $serialization, true ) );
67
	}
68
69
	public function statementsInLegacyFormatProvider() {
70
		return array(
71
			array( '{"m":["somevalue",42],"q":[],"g":"some guid be here","rank":1,"refs":[]}' ),
72
			array( '{"m":["somevalue",42],"q":[["novalue",1337],["value",23,"number",42]],'
73
				. '"g":"some guid be here","rank":1,"refs":[]}' ),
74
		);
75
	}
76
77
}
78