Aleksey Bekh-Ivanov (WMDE) has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/342877 )
Change subject: Remove possibility to load wiring files in
DispatchingServiceFactory
......................................................................
Remove possibility to load wiring files in DispatchingServiceFactory
Also added missing tests for the factory itself
Change-Id: I68cb688be4e557f67e1853ec20b9247f19b30fcb
---
M client/config/WikibaseClient.default.php
M client/includes/DispatchingServiceFactory.php
M client/includes/WikibaseClient.php
M client/tests/phpunit/includes/DispatchingServiceFactoryTest.php
M client/tests/phpunit/includes/DispatchingServiceWiringTest.php
5 files changed, 135 insertions(+), 21 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/77/342877/1
diff --git a/client/config/WikibaseClient.default.php
b/client/config/WikibaseClient.default.php
index 5c8bae5..928d2de 100644
--- a/client/config/WikibaseClient.default.php
+++ b/client/config/WikibaseClient.default.php
@@ -211,7 +211,6 @@
],
'repositoryServiceWiringFiles' => [ __DIR__ .
'/../includes/Store/RepositoryServiceWiring.php' ],
- 'dispatchingServiceWiringFiles' => [ __DIR__ .
'/../includes/DispatchingServiceWiring.php' ],
'foreignRepositories' => [],
];
diff --git a/client/includes/DispatchingServiceFactory.php
b/client/includes/DispatchingServiceFactory.php
index 94ae2d1..f808721 100644
--- a/client/includes/DispatchingServiceFactory.php
+++ b/client/includes/DispatchingServiceFactory.php
@@ -53,6 +53,7 @@
RepositoryDefinitions $repositoryDefinitions
) {
parent::__construct();
+ parent::loadWiringFiles( [ __DIR__ .
'/DispatchingServiceWiring.php' ] );
$this->repositoryServiceContainerFactory =
$repositoryServiceContainerFactory;
$this->repositoryDefinitions = $repositoryDefinitions;
@@ -184,4 +185,8 @@
return $this->getService( 'TermSearchInteractorFactory' );
}
+ public function loadWiringFiles( array $wiringFiles ) {
+ throw new \RuntimeException( 'Should not be called' );
+ }
+
}
diff --git a/client/includes/WikibaseClient.php
b/client/includes/WikibaseClient.php
index 3bb382a..9e26514 100644
--- a/client/includes/WikibaseClient.php
+++ b/client/includes/WikibaseClient.php
@@ -382,7 +382,6 @@
$this->getRepositoryServiceContainerFactory(),
$this->repositoryDefinitions
);
- $factory->loadWiringFiles( $this->settings->getSetting(
'dispatchingServiceWiringFiles' ) );
$this->entityDataRetrievalServiceFactory = $factory;
}
diff --git a/client/tests/phpunit/includes/DispatchingServiceFactoryTest.php
b/client/tests/phpunit/includes/DispatchingServiceFactoryTest.php
index f15b69a..16d027d 100644
--- a/client/tests/phpunit/includes/DispatchingServiceFactoryTest.php
+++ b/client/tests/phpunit/includes/DispatchingServiceFactoryTest.php
@@ -3,6 +3,7 @@
namespace Wikibase\Client\Tests;
use Prophecy\Argument;
+use Prophecy\Prophecy\ObjectProphecy;
use Wikibase\Client\DispatchingServiceFactory;
use Wikibase\Client\Store\RepositoryServiceContainer;
use Wikibase\Client\Store\RepositoryServiceContainerFactory;
@@ -10,8 +11,20 @@
use Wikibase\DataModel\Entity\Item;
use Wikibase\DataModel\Entity\ItemId;
use Wikibase\DataModel\Entity\Property;
+use Wikibase\DataModel\Services\Entity\EntityPrefetcher;
+use Wikibase\DataModel\Services\Term\TermBuffer;
use Wikibase\EntityRevision;
+use Wikibase\Lib\Interactors\DispatchingTermSearchInteractorFactory;
+use Wikibase\Lib\Interactors\TermSearchInteractorFactory;
use Wikibase\Lib\RepositoryDefinitions;
+use Wikibase\Lib\Store\DispatchingEntityInfoBuilderFactory;
+use Wikibase\Lib\Store\DispatchingEntityPrefetcher;
+use Wikibase\Lib\Store\DispatchingEntityRevisionLookup;
+use Wikibase\Lib\Store\DispatchingPropertyInfoLookup;
+use Wikibase\Lib\Store\DispatchingTermBuffer;
+use Wikibase\Lib\Store\EntityInfoBuilderFactory;
+use Wikibase\Lib\Store\EntityRevisionLookup;
+use Wikibase\Lib\Store\PropertyInfoLookup;
/**
* @covers Wikibase\Client\DispatchingServiceFactory
@@ -56,8 +69,7 @@
);
}
- public function
testGetServiceMap_ReturnsArrayMappingNameOfRepositoryToServiceForThatRepository(
- ) {
+ public function
testGetServiceMap_ReturnsArrayMappingNameOfRepositoryToServiceForThatRepository()
{
$someServiceName = 'some-service';
$localService = $this->someService( 'local' );
$fooService = $this->someService( 'foo' );
@@ -82,25 +94,21 @@
$this->assertEquals( $expectedServiceMap, $serviceMap );
}
- public function testGetService_AlwaysReturnsTheSameService() {
- $factory = new DispatchingServiceFactory(
- $this->dummy( RepositoryServiceContainerFactory::class
),
- new RepositoryDefinitions(
$this->getRepositoryDefinition( '', [] ) )
+ public function
testGetEntityInfoBuilderFactory_AlwaysReturnsTheSameService() {
+ $factory =
$this->createFactoryWithRepositoryContainerReturningDummyObjectFor(
+ 'EntityInfoBuilderFactory',
+ EntityInfoBuilderFactory::class
);
- $someService = $this->someService( 'some service instance' );
- $factory->defineService(
- 'some-service',
- function () use ( $someService ) {
- return $someService;
- }
+ $this->assertInstanceOf(
+ DispatchingEntityInfoBuilderFactory::class,
+ $factory->getEntityInfoBuilderFactory()
);
- $serviceOne = $factory->getService( 'some-service' );
- $serviceTwo = $factory->getService( 'some-service' );
+ $serviceOne = $factory->getEntityInfoBuilderFactory();
+ $serviceTwo = $factory->getEntityInfoBuilderFactory();
- $this->assertSame( $someService, $serviceOne );
- $this->assertSame( $someService, $serviceTwo );
+ $this->assertSame( $serviceOne, $serviceTwo );
}
public function
testEntityUpdatedDelegatesEventToContainerOfRelevantRepository() {
@@ -174,6 +182,78 @@
);
}
+ public function
testGetEntityInfoBuilderFactory_ReturnsDispatchingEntityInfoBuilderFactory() {
+ $factory =
$this->createFactoryWithRepositoryContainerReturningDummyObjectFor(
+ 'EntityInfoBuilderFactory',
+ EntityInfoBuilderFactory::class
+ );
+
+ $this->assertInstanceOf(
+ DispatchingEntityInfoBuilderFactory::class,
+ $factory->getEntityInfoBuilderFactory()
+ );
+ }
+
+ public function
testGetEntityPrefetcher_ReturnsDispatchingEntityInfoBuilderFactory() {
+ $factory =
$this->createFactoryWithRepositoryContainerReturningDummyObjectFor(
+ 'EntityPrefetcher',
+ EntityPrefetcher::class
+ );
+
+ $this->assertInstanceOf(
+ DispatchingEntityPrefetcher::class,
+ $factory->getEntityPrefetcher()
+ );
+ }
+
+ public function
testGetEntityRevisionLookup_ReturnsDispatchingEntityRevisionLookup() {
+ $factory =
$this->createFactoryWithRepositoryContainerReturningDummyObjectFor(
+ 'EntityRevisionLookup',
+ EntityRevisionLookup::class
+ );
+
+ $this->assertInstanceOf(
+ DispatchingEntityRevisionLookup::class,
+ $factory->getEntityRevisionLookup()
+ );
+ }
+
+ public function
testGetPropertyInfoLookup_ReturnsDispatchingPropertyInfoLookup() {
+ $factory =
$this->createFactoryWithRepositoryContainerReturningDummyObjectFor(
+ 'PropertyInfoLookup',
+ PropertyInfoLookup::class
+ );
+
+ $this->assertInstanceOf(
+ DispatchingPropertyInfoLookup::class,
+ $factory->getPropertyInfoLookup()
+ );
+ }
+
+ public function testGetTermBuffer_ReturnsDispatchingTermBuffer() {
+ $factory =
$this->createFactoryWithRepositoryContainerReturningDummyObjectFor(
+ 'PrefetchingTermLookup',
+ TermBuffer::class
+ );
+
+ $this->assertInstanceOf(
+ DispatchingTermBuffer::class,
+ $factory->getTermBuffer()
+ );
+ }
+
+ public function
testGetTermSearchInteractorFactory_ReturnsDispatchingTermSearchInteractorFactory()
{
+ $factory =
$this->createFactoryWithRepositoryContainerReturningDummyObjectFor(
+ 'TermSearchInteractorFactory',
+ TermSearchInteractorFactory::class
+ );
+
+ $this->assertInstanceOf(
+ DispatchingTermSearchInteractorFactory::class,
+ $factory->getTermSearchInteractorFactory()
+ );
+ }
+
/**
* @param array $containers Assoc array [ '<repo name>' =>
RepositoryServiceContainer, ... ]
*
@@ -183,11 +263,13 @@
$containerFactory = $this->getMockBuilder(
RepositoryServiceContainerFactory::class )
->disableOriginalConstructor()
->getMock();
- $containerFactory->method( 'newContainer' )
+
+ $containerFactory
+ ->method( 'newContainer' )
->will(
$this->returnCallback(
function ( $container ) use (
$containers ) {
- return $containers[ $container
];
+ return $containers[$container];
}
)
);
@@ -220,4 +302,34 @@
return $result;
}
+ /**
+ * @param string $repositoryServiceContainerKey
+ * @param string $classOfObjectToReturn
+ * @return DispatchingServiceFactory
+ */
+ private function
createFactoryWithRepositoryContainerReturningDummyObjectFor(
+ $repositoryServiceContainerKey,
+ $classOfObjectToReturn
+ ) {
+ /** @var RepositoryServiceContainer|ObjectProphecy
$localRepositoryServiceContainer */
+ $localRepositoryServiceContainer = $this->prophesize(
RepositoryServiceContainer::class );
+ $localRepositoryServiceContainer->getService(
$repositoryServiceContainerKey )->willReturn(
+ $this->dummy( $classOfObjectToReturn )
+ );
+
+ /** @var RepositoryServiceContainerFactory|ObjectProphecy $rscf
*/
+ $rscf = $this->prophesize(
RepositoryServiceContainerFactory::class );
+ $rscf->newContainer( '' )->willReturn(
$localRepositoryServiceContainer );
+
+ $factory = new DispatchingServiceFactory(
+ $rscf->reveal(),
+ new RepositoryDefinitions(
+ array_merge(
+ $this->getRepositoryDefinition( '', [] )
+ )
+ )
+ );
+ return $factory;
+ }
+
}
diff --git a/client/tests/phpunit/includes/DispatchingServiceWiringTest.php
b/client/tests/phpunit/includes/DispatchingServiceWiringTest.php
index c5a9e15..ce78eb5 100644
--- a/client/tests/phpunit/includes/DispatchingServiceWiringTest.php
+++ b/client/tests/phpunit/includes/DispatchingServiceWiringTest.php
@@ -54,7 +54,6 @@
] ] )
);
- $factory->loadWiringFiles( [ __DIR__ .
'/../../../includes/DispatchingServiceWiring.php' ] );
return $factory;
}
--
To view, visit https://gerrit.wikimedia.org/r/342877
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I68cb688be4e557f67e1853ec20b9247f19b30fcb
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Aleksey Bekh-Ivanov (WMDE) <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits