Addshore has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/226720

Change subject: Improve getentities language fallback test covrage
......................................................................

Improve getentities language fallback test covrage

Change-Id: I04833d2ba64f49d471ae55ab9ab77f3811a799ce
---
M repo/tests/phpunit/includes/api/GetEntitiesTest.php
M repo/tests/phpunit/includes/api/ResultBuilderTest.php
2 files changed, 180 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/20/226720/1

diff --git a/repo/tests/phpunit/includes/api/GetEntitiesTest.php 
b/repo/tests/phpunit/includes/api/GetEntitiesTest.php
index 494eb19..1735ef6 100644
--- a/repo/tests/phpunit/includes/api/GetEntitiesTest.php
+++ b/repo/tests/phpunit/includes/api/GetEntitiesTest.php
@@ -490,6 +490,46 @@
 
                                ),
                        ),
+                       array(
+                               'Oslo',
+                               array( 'sli', 'de-formal', 'kn', 'nb' ),
+                               array(
+                                       'sli' => array(
+                                               'language' => 'de',
+                                               'value' => 'Oslo',
+                                       ),
+                                       'de-formal' => array(
+                                               'language' => 'de',
+                                               'value' => 'Oslo',
+                                       ),
+                                       'kn' => array(
+                                               'language' => 'en',
+                                               'value' => 'Oslo',
+                                       ),
+                                       'nb' => array(
+                                               'language' => 'nb',
+                                               'value' => 'Oslo',
+                                       ),
+                               ),
+                               array(
+                                       'sli' => array(
+                                               'language' => 'de',
+                                               'value' => 'Hauptstadt der 
Norwegen.',
+                                       ),
+                                       'de-formal' => array(
+                                               'language' => 'de',
+                                               'value' => 'Hauptstadt der 
Norwegen.',
+                                       ),
+                                       'kn' => array(
+                                               'language' => 'en',
+                                               'value' => 'Capital city in 
Norway.',
+                                       ),
+                                       'nb' => array(
+                                               'language' => 'nb',
+                                               'value' => 'Hovedsted i Norge.',
+                                       ),
+                               ),
+                       ),
                );
        }
 
@@ -504,7 +544,6 @@
                                'action' => 'wbgetentities',
                                'languages' => join( '|', $languages ),
                                'languagefallback' => '',
-                               'format' => 'json', // make sure IDs are used 
as keys
                                'ids' => $id,
                        )
                );
diff --git a/repo/tests/phpunit/includes/api/ResultBuilderTest.php 
b/repo/tests/phpunit/includes/api/ResultBuilderTest.php
index 274e5b2..538983f 100644
--- a/repo/tests/phpunit/includes/api/ResultBuilderTest.php
+++ b/repo/tests/phpunit/includes/api/ResultBuilderTest.php
@@ -5,6 +5,8 @@
 use ApiResult;
 use DataValues\Serializers\DataValueSerializer;
 use DataValues\StringValue;
+use Wikibase\LanguageFallbackChainFactory;
+use Wikibase\Lib\Serializers\EntitySerializer;
 use Wikibase\Repo\Api\ResultBuilder;
 use Wikibase\DataModel\Entity\Item;
 use Wikibase\DataModel\Entity\ItemId;
@@ -504,6 +506,144 @@
                $this->assertArrayHasKey( 'FOO', $data['entities'] );
        }
 
+       public function provideTestAddEntityRevisionFallback() {
+               return array(
+                       array(
+                               false,
+                               array(
+                                       'entities' => array(
+                                               'Q123101' => array(
+                                                       'id' => 'Q123101',
+                                                       'type' => 'item',
+                                                       'labels' => array(
+                                                               'de-formal' => 
array(
+                                                                       
'language' => 'de',
+                                                                       'value' 
=> 'Oslo-de',
+                                                               ),
+                                                               'es' => array(
+                                                                       
'language' => 'en',
+                                                                       'value' 
=> 'Oslo-en',
+                                                               ),
+                                                               'qug' => array(
+                                                                       
'language' => 'en',
+                                                                       'value' 
=> 'Oslo-en',
+                                                               ),
+                                                               'zh-my' => 
array(
+                                                                       
'language' => 'en',
+                                                                       'value' 
=> 'Oslo-en',
+                                                               ),
+                                                       ),
+                                                       'descriptions' => array(
+                                                               'es' => array(
+                                                                       
'language' => 'es',
+                                                                       'value' 
=> 'desc-es',
+                                                               ),
+                                                               'qug' => array(
+                                                                       
'language' => 'es',
+                                                                       'value' 
=> 'desc-es',
+                                                               ),
+                                                               'zh-my' => 
array(
+                                                                       
'language' => 'zh-my',
+                                                                       'value' 
=> 'desc-zh-sg',
+                                                                       
'source-language' => 'zh-sg',
+                                                               ),
+                                                       ),
+                                               ),
+                                               '_element' => 'entity',
+                                       )
+                               ),
+                       ),
+                       array(
+                               true,
+                               array(
+                                       'entities' => array(
+                                               array(
+                                                       'id' => 'Q123101',
+                                                       'type' => 'item',
+                                                       'labels' => array(
+                                                               array(
+                                                                       
'language' => 'de',
+                                                                       'value' 
=> 'Oslo-de',
+                                                                       
'for-language' => 'de-formal'
+                                                               ),
+                                                               array(
+                                                                       
'language' => 'en',
+                                                                       'value' 
=> 'Oslo-en',
+                                                                       
'for-language' => 'es',
+                                                               ),
+                                                               array(
+                                                                       
'language' => 'en',
+                                                                       'value' 
=> 'Oslo-en',
+                                                                       
'for-language' => 'qug'
+                                                               ),
+                                                               array(
+                                                                       
'language' => 'en',
+                                                                       'value' 
=> 'Oslo-en',
+                                                                       
'for-language' => 'zh-my'
+                                                               ),
+                                                               '_element' => 
'label',
+                                                       ),
+                                                       'descriptions' => array(
+                                                               array(
+                                                                       
'language' => 'es',
+                                                                       'value' 
=> 'desc-es',
+                                                               ),
+                                                               array(
+                                                                       
'language' => 'es',
+                                                                       'value' 
=> 'desc-es',
+                                                                       
'for-language' => 'qug'
+                                                               ),
+                                                               array(
+                                                                       
'language' => 'zh-my',
+                                                                       'value' 
=> 'desc-zh-sg',
+                                                                       
'source-language' => 'zh-sg',
+                                                               ),
+                                                               '_element' => 
'description',
+                                                       ),
+                                               ),
+                                               '_element' => 'entity',
+                                       )
+                               ),
+                       ),
+               );
+       }
+
+       /**
+        * @dataProvider provideTestAddEntityRevisionFallback
+        */
+       public function testAddEntityRevisionFallback( $indexedMode, $expected  
) {
+               $item = new Item( new ItemId( 'Q123101' ) );
+               $item->getFingerprint()->setLabel( 'de', 'Oslo-de' );
+               $item->getFingerprint()->setLabel( 'en', 'Oslo-en' );
+               $item->getFingerprint()->setDescription( 'es', 'desc-es' );
+               $item->getFingerprint()->setDescription( 'zh-sg', 'desc-zh-sg' 
);
+               $entityRevision = new EntityRevision( $item );
+
+               $fallbackChainFactory = new LanguageFallbackChainFactory();
+               $languages = array(
+                       'de-formal' => 
$fallbackChainFactory->newFromLanguageCode( 'de-formal' ),
+                       'es' => $fallbackChainFactory->newFromLanguageCode( 
'es' ),
+                       'qug' => $fallbackChainFactory->newFromLanguageCode( 
'qug' ),
+                       'zh-my' => $fallbackChainFactory->newFromLanguageCode( 
'zh-my' ),
+               );
+
+               $props = array( 'labels', 'descriptions' );
+
+               $options = new SerializationOptions();
+               $options->setIndexTags( $indexedMode );
+               $options->setLanguages( $languages );
+               $options->setOption( EntitySerializer::OPT_PARTS, $props );
+
+               $result = $this->getDefaultResult();
+               $resultBuilder = $this->getResultBuilder( $result, $options, 
$indexedMode );
+               $resultBuilder->addEntityRevision( null, $entityRevision, 
$options, $props );
+
+               $data = $result->getResultData();
+               $this->removeElementsWithKeysRecursively( $data, array( '_type' 
) );
+
+               $this->assertEquals( $expected, $data );
+       }
+
        public function testAddEntityRevisionWithSiteLinksFilter() {
                $item = new Item( new ItemId( 'Q123099' ) );
                $item->getSiteLinkList()->addNewSiteLink( 'enwiki', 'Berlin' );

-- 
To view, visit https://gerrit.wikimedia.org/r/226720
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I04833d2ba64f49d471ae55ab9ab77f3811a799ce
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Addshore <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to