Ladsgroup has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/340470 )
Change subject: Plug LanguageChangeOpDeserializer to LexemeChangeOpDeserializer ...................................................................... Plug LanguageChangeOpDeserializer to LexemeChangeOpDeserializer Bug: T155701 Change-Id: I5dd5224416c3c0050e3b081e7d6521ce06f57840 --- M WikibaseLexeme.entitytypes.php M src/ChangeOp/Deserialization/LexemeChangeOpDeserializer.php M tests/phpunit/mediawiki/ChangeOp/Deserialization/LexemeChangeOpDeserializerTest.php 3 files changed, 66 insertions(+), 4 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseLexeme refs/changes/70/340470/1 diff --git a/WikibaseLexeme.entitytypes.php b/WikibaseLexeme.entitytypes.php index 7566b13..df83315 100644 --- a/WikibaseLexeme.entitytypes.php +++ b/WikibaseLexeme.entitytypes.php @@ -11,8 +11,11 @@ * @license GPL-2.0+ * @author Amir Sarabadani <ladsgr...@gmail.com> */ + +use ValueValidators\StringValidator; use Wikibase\DataModel\Entity\EntityId; use Wikibase\Lexeme\ChangeOp\Deserialization\LemmaChangeOpDeserializer; +use Wikibase\Lexeme\ChangeOp\Deserialization\LanguageChangeOpDeserializer; use Wikibase\Lexeme\Validators\LexemeValidatorFactory; use Wikibase\Repo\ChangeOp\Deserialization\TermChangeOpSerializationValidator; use Wikibase\Repo\MediaWikiLanguageDirectionalityLookup; @@ -131,6 +134,14 @@ $wikibaseRepo->getTermValidatorFactory() ), $wikibaseRepo->getStringNormalizer() + ), + new LanguageChangeOpDeserializer( + new LexemeValidatorFactory( + 1000, // TODO: move to setting, at least change to some reasonable hard-coded value + $wikibaseRepo->getTermValidatorFactory() + ), + $wikibaseRepo->getStringNormalizer(), + new StringValidator() ) ); }, diff --git a/src/ChangeOp/Deserialization/LexemeChangeOpDeserializer.php b/src/ChangeOp/Deserialization/LexemeChangeOpDeserializer.php index 833fdea..46dc63d 100644 --- a/src/ChangeOp/Deserialization/LexemeChangeOpDeserializer.php +++ b/src/ChangeOp/Deserialization/LexemeChangeOpDeserializer.php @@ -19,8 +19,17 @@ */ private $lemmaChangeOpDeserializer; - public function __construct( LemmaChangeOpDeserializer $lemmaChangeOpDeserializer ) { + /** + * @var LanguageChangeOpDeserializer + */ + private $languageChangeOpDeserializer; + + public function __construct( + LemmaChangeOpDeserializer $lemmaChangeOpDeserializer, + LanguageChangeOpDeserializer $languageChangeOpDeserializer + ) { $this->lemmaChangeOpDeserializer = $lemmaChangeOpDeserializer; + $this->languageChangeOpDeserializer = $languageChangeOpDeserializer; } /** @@ -36,6 +45,10 @@ $changeOps->add( $this->lemmaChangeOpDeserializer->createEntityChangeOp( $changeRequest ) ); } + if ( array_key_exists( 'language', $changeRequest ) ) { + $changeOps->add( $this->languageChangeOpDeserializer->createEntityChangeOp( $changeRequest ) ); + } + return $changeOps; } diff --git a/tests/phpunit/mediawiki/ChangeOp/Deserialization/LexemeChangeOpDeserializerTest.php b/tests/phpunit/mediawiki/ChangeOp/Deserialization/LexemeChangeOpDeserializerTest.php index e939578..010fb04 100644 --- a/tests/phpunit/mediawiki/ChangeOp/Deserialization/LexemeChangeOpDeserializerTest.php +++ b/tests/phpunit/mediawiki/ChangeOp/Deserialization/LexemeChangeOpDeserializerTest.php @@ -3,6 +3,7 @@ namespace Wikibase\Lexeme\Tests\ChangeOp\Deserialization; use Wikibase\ChangeOp\ChangeOp; +use Wikibase\Lexeme\ChangeOp\Deserialization\LanguageChangeOpDeserializer; use Wikibase\Lexeme\ChangeOp\Deserialization\LemmaChangeOpDeserializer; use Wikibase\Lexeme\ChangeOp\Deserialization\LexemeChangeOpDeserializer; @@ -24,8 +25,20 @@ ->getMock(); } + /** + * @return LanguageChangeOpDeserializer + */ + private function getLanguageChangeOpDeserializer() { + return $this->getMockBuilder( LanguageChangeOpDeserializer::class ) + ->disableOriginalConstructor() + ->getMock(); + } + public function testCreateEntityChangeOpReturnsChangeOpInstance() { - $deserializer = new LexemeChangeOpDeserializer( $this->getLemmaChangeOpDeserializer() ); + $deserializer = new LexemeChangeOpDeserializer( + $this->getLemmaChangeOpDeserializer(), + $this->getLanguageChangeOpDeserializer() + ); $this->assertInstanceOf( ChangeOp::class, $deserializer->createEntityChangeOp( [] ) ); } @@ -36,10 +49,31 @@ ->method( 'createEntityChangeOp' ) ->will( $this->returnValue( $this->getMock( ChangeOp::class ) ) ); - $deserializer = new LexemeChangeOpDeserializer( $lemmaDeserializer ); + $languageDeserializer = $this->getLanguageChangeOpDeserializer(); + $languageDeserializer->expects( $this->never() ) + ->method( $this->anything() ); + + $deserializer = new LexemeChangeOpDeserializer( $lemmaDeserializer, $languageDeserializer ); $deserializer->createEntityChangeOp( [ 'lemmas' => [ 'en' => [ 'language' => 'en', 'value' => 'rat' ] ] ] + ); + } + + public function testGivenLanguageInChangeRequest_languageChangeOpDeserializerIsUsed() { + $lemmaDeserializer = $this->getLemmaChangeOpDeserializer(); + $lemmaDeserializer->expects( $this->never() ) + ->method( $this->anything() ); + + $languageDeserializer = $this->getLanguageChangeOpDeserializer(); + $languageDeserializer->expects( $this->atLeastOnce() ) + ->method( 'createEntityChangeOp' ) + ->will( $this->returnValue( $this->getMock( ChangeOp::class ) ) ); + + $deserializer = new LexemeChangeOpDeserializer( $lemmaDeserializer, $languageDeserializer ); + + $deserializer->createEntityChangeOp( + [ 'language' => 'q100' ] ); } @@ -48,7 +82,11 @@ $lemmaDeserializer->expects( $this->never() ) ->method( $this->anything() ); - $deserializer = new LexemeChangeOpDeserializer( $lemmaDeserializer ); + $languageDeserializer = $this->getLanguageChangeOpDeserializer(); + $languageDeserializer->expects( $this->never() ) + ->method( $this->anything() ); + + $deserializer = new LexemeChangeOpDeserializer( $lemmaDeserializer, $languageDeserializer ); $deserializer->createEntityChangeOp( [ 'labels' => [ 'en' => [ 'language' => 'en', 'value' => 'rat' ] ] ] -- To view, visit https://gerrit.wikimedia.org/r/340470 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5dd5224416c3c0050e3b081e7d6521ce06f57840 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/WikibaseLexeme Gerrit-Branch: master Gerrit-Owner: Ladsgroup <ladsgr...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits