Daniel Kinzler has uploaded a new change for review. https://gerrit.wikimedia.org/r/303585
Change subject: Make EntitySavingHelper extend EntityLoadingHelper. ...................................................................... Make EntitySavingHelper extend EntityLoadingHelper. Rationale: The idea is that the logic for on-the-fly auto-creation of entities should be encapsulated in the EntitySavingHelper. However, with the current code structure, this needs soem kind of intervention during loading as well as during saving. To keep this knowledge local, loading and saving must be handled by the same class. It may even become necessary to maintain state in the helper (e.g. the base revision id to avoid conflicts). Justification: Subclassing seems ok here, since saving makes no sense without loading. Per the above argument, loading and saving should be done via the same object, so the saving helper actually IS A loading helper. Also, EntitySavingHelper and EntityLoadingHelper come from the same factory, which knows all relevant services to be injected. Bug: T140760 Change-Id: I3a019f558effd411bef165fbcbdc824aa958b447 --- M repo/includes/Api/ApiHelperFactory.php M repo/includes/Api/CreateClaim.php M repo/includes/Api/EntityLoadingHelper.php M repo/includes/Api/EntitySavingHelper.php M repo/includes/Api/ModifyEntity.php M repo/includes/Api/RemoveClaims.php M repo/includes/Api/RemoveQualifiers.php M repo/includes/Api/RemoveReferences.php M repo/includes/Api/SetClaim.php M repo/includes/Api/SetClaimValue.php M repo/includes/Api/SetQualifier.php M repo/includes/Api/SetReference.php M repo/tests/phpunit/includes/Api/EntityLoadingHelperTest.php M repo/tests/phpunit/includes/Api/EntitySavingHelperTest.php 14 files changed, 102 insertions(+), 114 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/85/303585/1 diff --git a/repo/includes/Api/ApiHelperFactory.php b/repo/includes/Api/ApiHelperFactory.php index 1c988a1..7e565eb 100644 --- a/repo/includes/Api/ApiHelperFactory.php +++ b/repo/includes/Api/ApiHelperFactory.php @@ -142,6 +142,7 @@ public function getEntitySavingHelper( ApiBase $apiBase ) { return new EntitySavingHelper( $apiBase, + $this->entityRevisionLookup, $this->getErrorReporter( $apiBase ), $this->summaryFormatter, $this->editEntityFactory diff --git a/repo/includes/Api/CreateClaim.php b/repo/includes/Api/CreateClaim.php index 6ddc532..4e27490 100644 --- a/repo/includes/Api/CreateClaim.php +++ b/repo/includes/Api/CreateClaim.php @@ -42,11 +42,6 @@ private $resultBuilder; /** - * @var EntityLoadingHelper - */ - private $entityLoadingHelper; - - /** * @var EntitySavingHelper */ private $entitySavingHelper; @@ -74,7 +69,6 @@ ); $this->resultBuilder = $apiHelperFactory->getResultBuilder( $this ); - $this->entityLoadingHelper = $apiHelperFactory->getEntityLoadingHelper( $this ); $this->entitySavingHelper = $apiHelperFactory->getEntitySavingHelper( $this ); } @@ -89,12 +83,12 @@ $entityId = $this->modificationHelper->getEntityIdFromString( $params['entity'] ); if ( isset( $params['baserevid'] ) ) { - $entityRevision = $this->entityLoadingHelper->loadEntityRevision( + $entityRevision = $this->entitySavingHelper->loadEntityRevision( $entityId, (int)$params['baserevid'] ); } else { - $entityRevision = $this->entityLoadingHelper->loadEntityRevision( $entityId ); + $entityRevision = $this->entitySavingHelper->loadEntityRevision( $entityId ); } $entity = $entityRevision->getEntity(); diff --git a/repo/includes/Api/EntityLoadingHelper.php b/repo/includes/Api/EntityLoadingHelper.php index d86f8bd..bf239f1 100644 --- a/repo/includes/Api/EntityLoadingHelper.php +++ b/repo/includes/Api/EntityLoadingHelper.php @@ -24,12 +24,12 @@ /** * @var EntityRevisionLookup */ - private $entityRevisionLookup; + protected $entityRevisionLookup; /** * @var ApiErrorReporter */ - private $errorReporter; + protected $errorReporter; public function __construct( EntityRevisionLookup $entityRevisionLookup, diff --git a/repo/includes/Api/EntitySavingHelper.php b/repo/includes/Api/EntitySavingHelper.php index 9a9fc0f..1d4eaea 100644 --- a/repo/includes/Api/EntitySavingHelper.php +++ b/repo/includes/Api/EntitySavingHelper.php @@ -9,6 +9,7 @@ use Wikibase\DataModel\Entity\EntityDocument; use Wikibase\EditEntity as EditEntityHandler; use Wikibase\EditEntityFactory; +use Wikibase\Lib\Store\EntityRevisionLookup; use Wikibase\Summary; use Wikibase\SummaryFormatter; @@ -20,17 +21,12 @@ * @license GPL-2.0+ * @author Addshore */ -class EntitySavingHelper { +class EntitySavingHelper extends EntityLoadingHelper { /** * @var ApiBase */ private $apiBase; - - /** - * @var ApiErrorReporter - */ - private $errorReporter; /** * @var SummaryFormatter @@ -44,12 +40,13 @@ public function __construct( ApiBase $apiBase, + EntityRevisionLookup $entityRevisionLookup, ApiErrorReporter $errorReporter, SummaryFormatter $summaryFormatter, EditEntityFactory $editEntityFactory ) { + parent::__construct( $entityRevisionLookup, $errorReporter ); $this->apiBase = $apiBase; - $this->errorReporter = $errorReporter; $this->summaryFormatter = $summaryFormatter; $this->editEntityFactory = $editEntityFactory; } diff --git a/repo/includes/Api/ModifyEntity.php b/repo/includes/Api/ModifyEntity.php index d3f925f..b9b3759 100644 --- a/repo/includes/Api/ModifyEntity.php +++ b/repo/includes/Api/ModifyEntity.php @@ -158,6 +158,7 @@ $settings->getSetting( 'specialSiteLinkGroups' ) ) ); + // TODO: use the EntitySavingHelper to load the entity, instead of an EntityRevisionLookup. $this->revisionLookup = $wikibaseRepo->getEntityRevisionLookup( 'uncached' ); $this->permissionChecker = $wikibaseRepo->getEntityPermissionChecker(); $this->entityStore = $wikibaseRepo->getEntityStore(); diff --git a/repo/includes/Api/RemoveClaims.php b/repo/includes/Api/RemoveClaims.php index bc50e04..305f447 100644 --- a/repo/includes/Api/RemoveClaims.php +++ b/repo/includes/Api/RemoveClaims.php @@ -52,11 +52,6 @@ private $resultBuilder; /** - * @var EntityLoadingHelper - */ - private $entityLoadingHelper; - - /** * @var EntitySavingHelper */ private $entitySavingHelper; @@ -85,7 +80,6 @@ $this->guidParser = $wikibaseRepo->getStatementGuidParser(); $this->resultBuilder = $apiHelperFactory->getResultBuilder( $this ); - $this->entityLoadingHelper = $apiHelperFactory->getEntityLoadingHelper( $this ); $this->entitySavingHelper = $apiHelperFactory->getEntitySavingHelper( $this ); } @@ -98,12 +92,12 @@ $params = $this->extractRequestParams(); $entityId = $this->getEntityId( $params ); if ( isset( $params['baserevid'] ) ) { - $entityRevision = $this->entityLoadingHelper->loadEntityRevision( + $entityRevision = $this->entitySavingHelper->loadEntityRevision( $entityId, (int)$params['baserevid'] ); } else { - $entityRevision = $this->entityLoadingHelper->loadEntityRevision( $entityId ); + $entityRevision = $this->entitySavingHelper->loadEntityRevision( $entityId ); } $entity = $entityRevision->getEntity(); diff --git a/repo/includes/Api/RemoveQualifiers.php b/repo/includes/Api/RemoveQualifiers.php index b93e0d4..9b89e1c 100644 --- a/repo/includes/Api/RemoveQualifiers.php +++ b/repo/includes/Api/RemoveQualifiers.php @@ -49,11 +49,6 @@ private $resultBuilder; /** - * @var EntityLoadingHelper - */ - private $entityLoadingHelper; - - /** * @var EntitySavingHelper */ private $entitySavingHelper; @@ -82,7 +77,6 @@ $this->guidParser = $wikibaseRepo->getStatementGuidParser(); $this->resultBuilder = $apiHelperFactory->getResultBuilder( $this ); - $this->entityLoadingHelper = $apiHelperFactory->getEntityLoadingHelper( $this ); $this->entitySavingHelper = $apiHelperFactory->getEntitySavingHelper( $this ); } @@ -98,12 +92,12 @@ $guid = $params['claim']; $entityId = $this->guidParser->parse( $guid )->getEntityId(); if ( isset( $params['baserevid'] ) ) { - $entityRevision = $this->entityLoadingHelper->loadEntityRevision( + $entityRevision = $this->entitySavingHelper->loadEntityRevision( $entityId, (int)$params['baserevid'] ); } else { - $entityRevision = $this->entityLoadingHelper->loadEntityRevision( $entityId ); + $entityRevision = $this->entitySavingHelper->loadEntityRevision( $entityId ); } $entity = $entityRevision->getEntity(); $summary = $this->modificationHelper->createSummary( $params, $this ); diff --git a/repo/includes/Api/RemoveReferences.php b/repo/includes/Api/RemoveReferences.php index b1fa477..c3685b2 100644 --- a/repo/includes/Api/RemoveReferences.php +++ b/repo/includes/Api/RemoveReferences.php @@ -49,11 +49,6 @@ private $resultBuilder; /** - * @var EntityLoadingHelper - */ - private $entityLoadingHelper; - - /** * @var EntitySavingHelper */ private $entitySavingHelper; @@ -82,7 +77,6 @@ $this->guidParser = $wikibaseRepo->getStatementGuidParser(); $this->resultBuilder = $apiHelperFactory->getResultBuilder( $this ); - $this->entityLoadingHelper = $apiHelperFactory->getEntityLoadingHelper( $this ); $this->entitySavingHelper = $apiHelperFactory->getEntitySavingHelper( $this ); } @@ -98,12 +92,12 @@ $guid = $params['statement']; $entityId = $this->guidParser->parse( $guid )->getEntityId(); if ( isset( $params['baserevid'] ) ) { - $entityRevision = $this->entityLoadingHelper->loadEntityRevision( + $entityRevision = $this->entitySavingHelper->loadEntityRevision( $entityId, (int)$params['baserevid'] ); } else { - $entityRevision = $this->entityLoadingHelper->loadEntityRevision( $entityId ); + $entityRevision = $this->entitySavingHelper->loadEntityRevision( $entityId ); } $entity = $entityRevision->getEntity(); $summary = $this->modificationHelper->createSummary( $params, $this ); diff --git a/repo/includes/Api/SetClaim.php b/repo/includes/Api/SetClaim.php index 66bdc49..85b38f8 100644 --- a/repo/includes/Api/SetClaim.php +++ b/repo/includes/Api/SetClaim.php @@ -67,11 +67,6 @@ private $resultBuilder; /** - * @var EntityLoadingHelper - */ - private $entityLoadingHelper; - - /** * @var EntitySavingHelper */ private $entitySavingHelper; @@ -101,7 +96,6 @@ $this->guidParser = $wikibaseRepo->getStatementGuidParser(); $this->resultBuilder = $apiHelperFactory->getResultBuilder( $this ); - $this->entityLoadingHelper = $apiHelperFactory->getEntityLoadingHelper( $this ); $this->entitySavingHelper = $apiHelperFactory->getEntitySavingHelper( $this ); } @@ -128,12 +122,12 @@ $entityId = $statementGuid->getEntityId(); if ( isset( $params['baserevid'] ) ) { - $entityRevision = $this->entityLoadingHelper->loadEntityRevision( + $entityRevision = $this->entitySavingHelper->loadEntityRevision( $entityId, (int)$params['baserevid'] ); } else { - $entityRevision = $this->entityLoadingHelper->loadEntityRevision( $entityId ); + $entityRevision = $this->entitySavingHelper->loadEntityRevision( $entityId ); } $entity = $entityRevision->getEntity(); diff --git a/repo/includes/Api/SetClaimValue.php b/repo/includes/Api/SetClaimValue.php index bc72b79..73d9859 100644 --- a/repo/includes/Api/SetClaimValue.php +++ b/repo/includes/Api/SetClaimValue.php @@ -45,11 +45,6 @@ private $resultBuilder; /** - * @var EntityLoadingHelper - */ - private $entityLoadingHelper; - - /** * @var EntitySavingHelper */ private $entitySavingHelper; @@ -78,7 +73,6 @@ $this->guidParser = $wikibaseRepo->getStatementGuidParser(); $this->resultBuilder = $apiHelperFactory->getResultBuilder( $this ); - $this->entityLoadingHelper = $apiHelperFactory->getEntityLoadingHelper( $this ); $this->entitySavingHelper = $apiHelperFactory->getEntitySavingHelper( $this ); } @@ -96,12 +90,12 @@ $guid = $params['claim']; $entityId = $this->guidParser->parse( $guid )->getEntityId(); if ( isset( $params['baserevid'] ) ) { - $entityRevision = $this->entityLoadingHelper->loadEntityRevision( + $entityRevision = $this->entitySavingHelper->loadEntityRevision( $entityId, (int)$params['baserevid'] ); } else { - $entityRevision = $this->entityLoadingHelper->loadEntityRevision( $entityId ); + $entityRevision = $this->entitySavingHelper->loadEntityRevision( $entityId ); } $entity = $entityRevision->getEntity(); diff --git a/repo/includes/Api/SetQualifier.php b/repo/includes/Api/SetQualifier.php index 6c6fec9..c786e0f 100644 --- a/repo/includes/Api/SetQualifier.php +++ b/repo/includes/Api/SetQualifier.php @@ -49,11 +49,6 @@ private $resultBuilder; /** - * @var EntityLoadingHelper - */ - private $entityLoadingHelper; - - /** * @var EntitySavingHelper */ private $entitySavingHelper; @@ -82,7 +77,6 @@ $this->guidParser = $wikibaseRepo->getStatementGuidParser(); $this->resultBuilder = $apiHelperFactory->getResultBuilder( $this ); - $this->entityLoadingHelper = $apiHelperFactory->getEntityLoadingHelper( $this ); $this->entitySavingHelper = $apiHelperFactory->getEntitySavingHelper( $this ); } @@ -97,12 +91,12 @@ $entityId = $this->guidParser->parse( $params['claim'] )->getEntityId(); if ( isset( $params['baserevid'] ) ) { - $entityRevision = $this->entityLoadingHelper->loadEntityRevision( + $entityRevision = $this->entitySavingHelper->loadEntityRevision( $entityId, (int)$params['baserevid'] ); } else { - $entityRevision = $this->entityLoadingHelper->loadEntityRevision( $entityId ); + $entityRevision = $this->entitySavingHelper->loadEntityRevision( $entityId ); } $entity = $entityRevision->getEntity(); diff --git a/repo/includes/Api/SetReference.php b/repo/includes/Api/SetReference.php index f3239ef..bdb9657 100644 --- a/repo/includes/Api/SetReference.php +++ b/repo/includes/Api/SetReference.php @@ -56,11 +56,6 @@ private $resultBuilder; /** - * @var EntityLoadingHelper - */ - private $entityLoadingHelper; - - /** * @var EntitySavingHelper */ private $entitySavingHelper; @@ -90,7 +85,6 @@ $this->guidParser = $wikibaseRepo->getStatementGuidParser(); $this->resultBuilder = $apiHelperFactory->getResultBuilder( $this ); - $this->entityLoadingHelper = $apiHelperFactory->getEntityLoadingHelper( $this ); $this->entitySavingHelper = $apiHelperFactory->getEntitySavingHelper( $this ); } @@ -105,12 +99,12 @@ $entityId = $this->guidParser->parse( $params['statement'] )->getEntityId(); if ( isset( $params['baserevid'] ) ) { - $entityRevision = $this->entityLoadingHelper->loadEntityRevision( + $entityRevision = $this->entitySavingHelper->loadEntityRevision( $entityId, (int)$params['baserevid'] ); } else { - $entityRevision = $this->entityLoadingHelper->loadEntityRevision( $entityId ); + $entityRevision = $this->entitySavingHelper->loadEntityRevision( $entityId ); } $entity = $entityRevision->getEntity(); diff --git a/repo/tests/phpunit/includes/Api/EntityLoadingHelperTest.php b/repo/tests/phpunit/includes/Api/EntityLoadingHelperTest.php index 8663060..aa19333 100644 --- a/repo/tests/phpunit/includes/Api/EntityLoadingHelperTest.php +++ b/repo/tests/phpunit/includes/Api/EntityLoadingHelperTest.php @@ -6,6 +6,7 @@ use Revision; use UsageException; use Wikibase\DataModel\Entity\ItemId; +use Wikibase\EntityRevision; use Wikibase\Lib\Store\BadRevisionException; use Wikibase\Lib\Store\EntityRevisionLookup; use Wikibase\Lib\Store\StorageException; @@ -26,13 +27,19 @@ class EntityLoadingHelperTest extends \MediaWikiTestCase { /** - * @param mixed $entityRevisionReturn if value is instance of Exception it will be thrown + * @param mixed $entityRevisionReturn if value is instance of Exception it will be thrown; + * If it is false, 0 calls will be expected. Instances of EntityRevision (and null) will be + * returned as is. * * @return EntityRevisionLookup */ - public function getMockEntityRevisionLookup( $entityRevisionReturn ) { + protected function getMockEntityRevisionLookup( $entityRevisionReturn ) { $mock = $this->getMock( EntityRevisionLookup::class ); - if ( $entityRevisionReturn instanceof Exception ) { + + if ( $entityRevisionReturn === false ) { + $mock->expects( $this->never() ) + ->method( 'getEntityRevision' ); + } elseif ( $entityRevisionReturn instanceof Exception ) { $mock->expects( $this->once() ) ->method( 'getEntityRevision' ) ->will( $this->throwException( $entityRevisionReturn ) ); @@ -49,7 +56,7 @@ * @param string|null $expectedErrorCode * @return ApiErrorReporter */ - private function getMockErrorReporter( $expectedExceptionCode = null, $expectedErrorCode = null ) { + protected function getMockErrorReporter( $expectedExceptionCode = null, $expectedErrorCode = null ) { $mock = $this->getMockBuilder( ApiErrorReporter::class ) ->disableOriginalConstructor() ->getMock(); @@ -71,18 +78,31 @@ /** * @return Revision */ - public function getMockRevision() { + protected function getMockRevision() { return $this->getMockBuilder( Revision::class ) ->disableOriginalConstructor() ->getMock(); } + /** + * @param EntityRevision|Exception|null $lookupResult + * @param string|null $expectedError + * @return EntityLoadingHelper + */ + protected function newEntityLoadingHelper( + $lookupResult = null, + $expectedExceptionCode = null, + $expectedErrorCode = null + ) { + return new EntityLoadingHelper( + $this->getMockEntityRevisionLookup( $lookupResult ), + $this->getMockErrorReporter( $expectedExceptionCode, $expectedErrorCode ) + ); + } + public function testRevision_returnsRevision() { $revision = $this->getMockRevision(); - $helper = new EntityLoadingHelper( - $this->getMockEntityRevisionLookup( $revision ), - $this->getMockErrorReporter() - ); + $helper = $this->newEntityLoadingHelper( $revision ); $return = $helper->loadEntityRevision( new ItemId( 'Q1' ) ); @@ -90,22 +110,19 @@ } public function testNullRevision_callsErrorReporter() { - $helper = new EntityLoadingHelper( - $this->getMockEntityRevisionLookup( null ), - $this->getMockErrorReporter( null, 'cant-load-entity-content' ) - ); + $helper = $this->newEntityLoadingHelper( null, null, 'cant-load-entity-content' ); $this->setExpectedException( UsageException::class ); $helper->loadEntityRevision( new ItemId( 'Q1' ) ); } public function testUnresolvedRedirectException_callsErrorReporter() { - $helper = new EntityLoadingHelper( - $this->getMockEntityRevisionLookup( new RevisionedUnresolvedRedirectException( + $helper = $this->newEntityLoadingHelper( + new RevisionedUnresolvedRedirectException( new ItemId( 'Q1' ), new ItemId( 'Q1' ) - ) ), - $this->getMockErrorReporter( 'unresolved-redirect' ) + ), + 'unresolved-redirect' ); $this->setExpectedException( UsageException::class ); @@ -113,20 +130,14 @@ } public function testBadRevisionException_callsErrorReporter() { - $helper = new EntityLoadingHelper( - $this->getMockEntityRevisionLookup( new BadRevisionException() ), - $this->getMockErrorReporter( 'nosuchrevid' ) - ); + $helper = $this->newEntityLoadingHelper( new BadRevisionException(), 'nosuchrevid' ); $this->setExpectedException( UsageException::class ); $helper->loadEntityRevision( new ItemId( 'Q1' ) ); } public function testStorageException_callsErrorReporter() { - $helper = new EntityLoadingHelper( - $this->getMockEntityRevisionLookup( new StorageException() ), - $this->getMockErrorReporter( 'cant-load-entity-content' ) - ); + $helper = $this->newEntityLoadingHelper( new StorageException(), 'cant-load-entity-content' ); $this->setExpectedException( UsageException::class ); $helper->loadEntityRevision( new ItemId( 'Q1' ) ); diff --git a/repo/tests/phpunit/includes/Api/EntitySavingHelperTest.php b/repo/tests/phpunit/includes/Api/EntitySavingHelperTest.php index fe5b44c..7115a9a 100644 --- a/repo/tests/phpunit/includes/Api/EntitySavingHelperTest.php +++ b/repo/tests/phpunit/includes/Api/EntitySavingHelperTest.php @@ -3,6 +3,7 @@ namespace Wikibase\Test\Repo\Api; use ApiBase; +use Exception; use LogicException; use PHPUnit_Framework_MockObject_MockObject; use RequestContext; @@ -14,7 +15,9 @@ use Wikibase\DataModel\Snak\PropertyNoValueSnak; use Wikibase\EditEntity; use Wikibase\EditEntityFactory; +use Wikibase\EntityRevision; use Wikibase\Repo\Api\ApiErrorReporter; +use Wikibase\Repo\Api\EntityLoadingHelper; use Wikibase\Repo\Api\EntitySavingHelper; use Wikibase\SummaryFormatter; @@ -29,22 +32,13 @@ * @license GPL-2.0+ * @author Addshore */ -class EntitySavingHelperTest extends \PHPUnit_Framework_TestCase { +class EntitySavingHelperTest extends EntityLoadingHelperTest { /** * @return ApiBase|PHPUnit_Framework_MockObject_MockObject */ private function getMockApiBase() { return $this->getMockBuilder( ApiBase::class ) - ->disableOriginalConstructor() - ->getMock(); - } - - /** - * @return ApiErrorReporter - */ - private function getMockErrorReporter() { - return $this->getMockBuilder( ApiErrorReporter::class ) ->disableOriginalConstructor() ->getMock(); } @@ -59,30 +53,30 @@ } /** - * @param int $calls + * @param int|null $calls * * @return EditEntity */ - private function getMockEditEntity( $calls ) { + private function getMockEditEntity( $calls = null ) { $mock = $this->getMockBuilder( EditEntity::class ) ->disableOriginalConstructor() ->getMock(); - $mock->expects( $this->exactly( $calls ) ) + $mock->expects( $calls === null ? $this->any() : $this->exactly( $calls ) ) ->method( 'attemptSave' ) ->will( $this->returnValue( Status::newGood() ) ); return $mock; } /** - * @param int $calls + * @param int|null $calls * * @return EditEntityFactory */ - private function getMockEditEntityFactory( $calls ) { + private function getMockEditEntityFactory( $calls = null ) { $mock = $this->getMockBuilder( EditEntityFactory::class ) ->disableOriginalConstructor() ->getMock(); - $mock->expects( $this->exactly( $calls ) ) + $mock->expects( $calls === null ? $this->any() : $this->exactly( $calls ) ) ->method( 'newEditEntity' ) ->will( $this->returnValue( $this->getMockEditEntity( $calls ) ) ); return $mock; @@ -112,6 +106,7 @@ $helper = new EntitySavingHelper( $mockApiBase, + $this->getMockEntityRevisionLookup( false ), $this->getMockErrorReporter(), $this->getMockSummaryFormatter(), $this->getMockEditEntityFactory( 1 ) @@ -139,6 +134,7 @@ $helper = new EntitySavingHelper( $mockApiBase, + $this->getMockEntityRevisionLookup( false ), $this->getMockErrorReporter(), $this->getMockSummaryFormatter(), $this->getMockEditEntityFactory( 0 ) @@ -148,4 +144,34 @@ $helper->attemptSaveEntity( new Item(), '' ); } + /** + * @param EntityRevision|Exception|null $lookupResult + * @param string|null $expectedError + * @return EntityLoadingHelper + */ + protected function newEntityLoadingHelper( + $lookupResult = null, + $expectedExceptionCode = null, + $expectedErrorCode = null + ) { + $mockApiBase = $this->getMockApiBase(); + $mockApiBase->expects( $this->any() ) + ->method( 'isWriteMode' ) + ->will( $this->returnValue( true ) ); + $mockApiBase->expects( $this->any() ) + ->method( 'getContext' ) + ->will( $this->returnValue( $this->newContext() ) ); + $mockApiBase->expects( $this->any() ) + ->method( 'extractRequestParams' ) + ->will( $this->returnValue( array() ) ); + + return new EntitySavingHelper( + $mockApiBase, + $this->getMockEntityRevisionLookup( $lookupResult ), + $this->getMockErrorReporter( $expectedExceptionCode, $expectedErrorCode ), + $this->getMockSummaryFormatter(), + $this->getMockEditEntityFactory() + ); + } + } -- To view, visit https://gerrit.wikimedia.org/r/303585 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3a019f558effd411bef165fbcbdc824aa958b447 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Daniel Kinzler <daniel.kinz...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits