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

Reply via email to