Completed
Pull Request — master (#11)
by Jeroen De
19:45
created

PageImporterTest::getEntityHandlers()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 11
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 11
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 6
nc 2
nop 1
1
<?php
2
3
namespace Tests\Queryr\Replicator\Integration\Importer;
4
5
use Queryr\Replicator\EntitySource\Api\GetEntitiesInterpreter;
6
use Queryr\Replicator\Importer\EntityHandlers\EntityStoreEntityHandler;
7
use Queryr\Replicator\Importer\EntityHandlers\QueryEngineEntityHandler;
8
use Queryr\Replicator\Importer\EntityHandlers\TermStoreEntityHandler;
9
use Queryr\Replicator\Importer\PageImporter;
10
use Queryr\Replicator\Importer\PageImportReporter;
11
use Queryr\Replicator\ServiceFactory;
12
use Tests\Queryr\Replicator\Integration\TestEnvironment;
13
14
/**
15
 * @licence GNU GPL v2+
16
 * @author Jeroen De Dauw < [email protected] >
17
 */
18
class PageImporterTest extends \PHPUnit_Framework_TestCase {
19
20
	public function testWhenInsertingBerlin_entityStoreFieldsAreSet() {
21
		$factory = TestEnvironment::newInstance()->getFactory();
22
23
		$pageImporter = new PageImporter(
24
			$factory->newLegacyEntityDeserializer(),
25
			$this->getEntityHandlers( $factory ),
26
			[
27
				new EntityStoreEntityHandler( $factory->newEntityStore() )
28
			],
29
			$this->getMock( PageImportReporter::class )
30
		);
31
32
		$jsonString = file_get_contents( __DIR__ . '/../../data/api/Q64.json' );
33
		$entityPages = ( new GetEntitiesInterpreter() )->getEntityPagesFromResult( $jsonString );
34
35
		foreach ( $entityPages as $entityPage ) {
36
			$pageImporter->import( $entityPage );
37
		}
38
39
		$itemStore = $factory->newItemStore();
40
41
		$itemRow = $itemStore->getItemRowByNumericItemId( 64 );
42
43
		$this->assertSame( 64, $itemRow->getNumericItemId() );
44
		$this->assertSame( 'Q64', $itemRow->getPageTitle() );
45
		$this->assertSame( 515, $itemRow->getItemType() );
46
		$this->assertSame( 'Berlin', $itemRow->getEnglishLabel() );
47
		$this->assertSame( 'Berlin', $itemRow->getEnglishWikipediaTitle() );
48
49
		$this->assertInternalType( 'array', json_decode( $itemRow->getItemJson(), true ) );
50
	}
51
52
	private function getEntityHandlers( ServiceFactory $factory ) {
53
		$handlers = [
54
			new TermStoreEntityHandler( $factory->newTermStoreWriter() )
55
		];
56
57
		if ( defined( 'WIKIBASE_QUERYENGINE_VERSION' ) ) {
58
			$handlers[] = new QueryEngineEntityHandler( $factory->newQueryStoreWriter() );
59
		}
60
61
		return $handlers;
62
	}
63
}
64