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
