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

Reply via email to