WMDE-leszek has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/403716 )
Change subject: Add revision ID to the response of edit form elements API ...................................................................... Add revision ID to the response of edit form elements API Bug: T184409 Change-Id: I5421bd160125158251de4489acf1c06b84e889dd --- M src/Api/EditFormElements.php M tests/phpunit/mediawiki/Api/EditFormElementsTest.php 2 files changed, 39 insertions(+), 3 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseLexeme refs/changes/16/403716/1 diff --git a/src/Api/EditFormElements.php b/src/Api/EditFormElements.php index 5eb2068..fb52f5e 100644 --- a/src/Api/EditFormElements.php +++ b/src/Api/EditFormElements.php @@ -117,7 +117,7 @@ $this->dieStatus( $status ); } - $this->generateResponse( $form ); + $this->generateResponse( $form, $status ); } /** @@ -157,15 +157,19 @@ /** * @param Form $form */ - private function generateResponse( Form $form ) { + private function generateResponse( Form $form, \Status $status ) { $apiResult = $this->getResult(); $serializedForm = $this->formSerializer->serialize( $form ); unset( $serializedForm['claims'] ); + $statusValue = $status->getValue(); + $revisionId = $statusValue['revision']->getRevisionId(); + // TODO: Do we really need `success` property in response? $apiResult->addValue( null, 'success', 1 ); $apiResult->addValue( null, 'form', $serializedForm ); + $apiResult->addValue( null, 'lastrevid', $revisionId ); } /** diff --git a/tests/phpunit/mediawiki/Api/EditFormElementsTest.php b/tests/phpunit/mediawiki/Api/EditFormElementsTest.php index b6e3fb7..ea8a319 100644 --- a/tests/phpunit/mediawiki/Api/EditFormElementsTest.php +++ b/tests/phpunit/mediawiki/Api/EditFormElementsTest.php @@ -10,6 +10,7 @@ use Wikibase\Lexeme\DataModel\LexemeId; use Wikibase\Lexeme\Tests\DataModel\NewForm; use Wikibase\Lexeme\Tests\DataModel\NewLexeme; +use Wikibase\Lib\Store\EntityRevision; use Wikibase\Repo\Tests\Api\WikibaseApiTestCase; use Wikibase\Repo\WikibaseRepo; @@ -354,7 +355,27 @@ ); } - // TODO: test API response contains the revision ID + public function testGivenFormEdited_responseContainsRevisionId() { + $form = NewForm::havingId( 'F1' ) + ->andGrammaticalFeature( 'Q123' ) + ->andRepresentation( 'en', 'goat' ) + ->build(); + $lexeme = NewLexeme::havingId( 'L1' )->withForm( $form )->build(); + + $this->saveLexeme( $lexeme ); + + $params = [ + 'action' => 'wblexemeeditformelements', + 'formId' => 'L1-F1', + 'data' => $this->getDataParam() + ]; + + list( $result, ) = $this->doApiRequestWithToken( $params ); + + $lexemeRevision = $this->getCurrentRevisionForForm( 'L1-F1' ); + + $this->assertEquals( $lexemeRevision->getRevisionId(), $result['lastrevid'] ); + } private function saveLexeme( Lexeme $lexeme ) { $store = WikibaseRepo::getDefaultInstance()->getEntityStore(); @@ -372,4 +393,15 @@ return $lookup->getEntity( new LexemeId( $id ) ); } + /** + * @param string $id + * + * @return EntityRevision|null + */ + private function getCurrentRevisionForForm( $id ) { + $lookup = WikibaseRepo::getDefaultInstance()->getEntityRevisionLookup(); + + return $lookup->getEntityRevision( new FormId( $id ) ); + } + } -- To view, visit https://gerrit.wikimedia.org/r/403716 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5421bd160125158251de4489acf1c06b84e889dd Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/WikibaseLexeme Gerrit-Branch: master Gerrit-Owner: WMDE-leszek <leszek.mani...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits