testGivenItemWithValueStatements_itemReferencesAreFound()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 20
rs 9.6
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Tests\Queryr\Replicator\EntitySource;
4
5
use DataValues\StringValue;
6
use PHPUnit\Framework\TestCase;
7
use Queryr\Replicator\EntitySource\ReferencedEntitiesFinder;
8
use Wikibase\DataModel\Entity\EntityIdValue;
9
use Wikibase\DataModel\Entity\Item;
10
use Wikibase\DataModel\Entity\ItemId;
11
use Wikibase\DataModel\Entity\PropertyId;
12
use Wikibase\DataModel\Snak\PropertyNoValueSnak;
13
use Wikibase\DataModel\Snak\PropertySomeValueSnak;
14
use Wikibase\DataModel\Snak\PropertyValueSnak;
15
use Wikibase\DataModel\Statement\Statement;
16
17
/**
18
 * @covers \Queryr\Replicator\EntitySource\ReferencedEntitiesFinder
19
 *
20
 * @licence GNU GPL v2+
21
 * @author Jeroen De Dauw < [email protected] >
22
 */
23
class ReferencedEntitiesFinderTest extends TestCase {
24
25
	private function assertFindsReferencesForItem( array $entityIds, Item $item ) {
26
		$this->assertEquals(
27
			array_values( $entityIds ),
28
			array_values( ( new ReferencedEntitiesFinder() )->findForItem( $item ) )
29
		);
30
	}
31
32
	public function testGivenEmptyItem_noReferencesAreFound() {
33
		$this->assertFindsReferencesForItem(
34
			[],
35
			new Item()
36
		);
37
	}
38
39
	public function testGivenItemWithValuelessStatements_propertyReferencesAreFound() {
40
		$item = new Item();
41
42
		$statement = new Statement( new PropertyNoValueSnak( 42 ) );
43
		$statement->setGuid( 'aaa' );
44
		$item->getStatements()->addStatement( $statement );
45
46
		$statement = new Statement( new PropertyNoValueSnak( 1337 ) );
47
		$statement->setGuid( 'bbb' );
48
		$item->getStatements()->addStatement( $statement );
49
50
		$statement = new Statement( new PropertySomeValueSnak( 42 ) );
51
		$statement->setGuid( 'ccc' );
52
		$item->getStatements()->addStatement( $statement );
53
54
		$this->assertFindsReferencesForItem(
55
			[ new PropertyId( 'P42' ), new PropertyId( 'P1337' ) ],
56
			$item
57
		);
58
	}
59
60
	public function testGivenItemWithValueStatements_itemReferencesAreFound() {
61
		$item = new Item();
62
63
		$statement = new Statement( new PropertyValueSnak( 1, new StringValue( 'foo' ) ) );
64
		$statement->setGuid( 'aaa' );
65
		$item->getStatements()->addStatement( $statement );
66
67
		$statement = new Statement( new PropertyValueSnak( 1, new EntityIdValue( new ItemId( 'Q42' ) ) ) );
68
		$statement->setGuid( 'bbb' );
69
		$item->getStatements()->addStatement( $statement );
70
71
		$statement = new Statement( new PropertyValueSnak( 1, new EntityIdValue( new ItemId( 'Q1337' ) ) ) );
72
		$statement->setGuid( 'ccc' );
73
		$item->getStatements()->addStatement( $statement );
74
75
		$this->assertFindsReferencesForItem(
76
			[ new PropertyId( 'P1' ), new ItemId( 'Q42' ), new ItemId( 'Q1337' ) ],
77
			$item
78
		);
79
	}
80
81
}
82