Hoo man has uploaded a new change for review.

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

Change subject: Introduce PropertyParserFunctionIntegrationTest
......................................................................

Introduce PropertyParserFunctionIntegrationTest

A simple integration test for the property parser function,
similar to what we have for Lua (and partly reusing the test
set up we use for the Lua tests).

Change-Id: I3a0c27efede4958c863a27295286ec30eca6660f
---
A 
client/tests/phpunit/includes/DataAccess/PropertyParserFunction/PropertyParserFunctionIntegrationTest.php
R 
client/tests/phpunit/includes/DataAccess/WikibaseDataAccessTestItemSetUpHelper.php
M client/tests/phpunit/includes/scribunto/LuaWikibaseEntityLibraryTests.lua
M client/tests/phpunit/includes/scribunto/LuaWikibaseLibraryTests.lua
M 
client/tests/phpunit/includes/scribunto/Scribunto_LuaWikibaseLibraryTestCase.php
M docs/lua.wiki
6 files changed, 110 insertions(+), 21 deletions(-)


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

diff --git 
a/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/PropertyParserFunctionIntegrationTest.php
 
b/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/PropertyParserFunctionIntegrationTest.php
new file mode 100644
index 0000000..1e43cd4
--- /dev/null
+++ 
b/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/PropertyParserFunctionIntegrationTest.php
@@ -0,0 +1,95 @@
+<?php
+
+namespace Wikibase\Client\Tests\DataAccess\PropertyParserFunction;
+
+use MediaWikiTestCase;
+use Language;
+use Parser;
+use ParserOptions;
+use Title;
+use Wikibase\Client\WikibaseClient;
+use Wikibase\Test\MockClientStore;
+use Wikibase\Client\Tests\DataAccess\WikibaseDataAccessTestItemSetUpHelper;
+
+/**
+ * Simple integration test for the {{#property:…}} parser function.
+ *
+ * @group Wikibase
+ * @group WikibaseClient
+ * @group WikibaseDataAccess
+ * @group WikibaseIntegration
+ * @group PropertyParserFunctionTest
+ * @group Database
+ *
+ * @license GNU GPL v2+
+ * @author Marius Hoch < [email protected] >
+ */
+class PropertyParserFunctionIntegrationTest extends MediaWikiTestCase {
+
+       protected function setUp() {
+               parent::setUp();
+
+               $wikibaseClient = WikibaseClient::getDefaultInstance( 'reset' );
+               $store = $wikibaseClient->getStore();
+
+               if ( ! $store instanceof MockClientStore ) {
+                       $store = new MockClientStore( 'de' );
+                       $wikibaseClient->overrideStore( $store );
+               }
+
+               $this->assertInstanceOf(
+                       'Wikibase\Test\MockRepository',
+                       $wikibaseClient->getStore()->getEntityLookup(),
+                       'Mocking the default client EntityLookup failed'
+               );
+
+               $this->setMwGlobals( 'wgContLang', Language::factory( 'de' ) );
+
+               $setupHelper = new WikibaseDataAccessTestItemSetUpHelper( 
$store );
+               $setupHelper->setUp();
+       }
+
+       protected function tearDown() {
+               parent::tearDown();
+
+               WikibaseClient::getDefaultInstance( 'reset' );
+       }
+
+       public function testPropertyParserFunction_byPropertyLabel() {
+               $result = $this->parseWikitextToHtml( 
'{{#property:LuaTestStringProperty}}' );
+
+               $this->assertSame( "<p>Lua&#160;:)\n</p>", $result );
+       }
+
+       public function testPropertyParserFunction_byPropertyId() {
+               $result = $this->parseWikitextToHtml( '{{#property:P342}}' );
+
+               $this->assertSame( "<p>Lua&#160;:)\n</p>", $result );
+       }
+
+       public function testPropertyParserFunction_byNonexistent() {
+               $result = $this->parseWikitextToHtml( 
'{{#property:P123456789111}}' );
+
+               $this->assertRegExp(
+                       
'/<p.*class=".*wikibase-error.*">.*P123456789111.*<\/p>/',
+                       $result
+               );
+       }
+
+       /**
+        * @param string $wikiText
+        *
+        * @return string HTML
+        */
+       private function parseWikitextToHtml( $wikiText ) {
+               $parserConfig = array( 'class' => 'Parser' );
+               $title = Title::newFromText( 'WikibaseClientDataAccessTest' );
+               $popt = new ParserOptions();
+
+               $parser = new Parser( $parserConfig );
+               $pout = $parser->parse( $wikiText, $title, $popt, 
Parser::OT_HTML );
+
+               return $pout->getText();
+       }
+
+}
diff --git 
a/client/tests/phpunit/includes/scribunto/WikibaseLuaIntegrationTestItemSetUpHelper.php
 
b/client/tests/phpunit/includes/DataAccess/WikibaseDataAccessTestItemSetUpHelper.php
similarity index 90%
rename from 
client/tests/phpunit/includes/scribunto/WikibaseLuaIntegrationTestItemSetUpHelper.php
rename to 
client/tests/phpunit/includes/DataAccess/WikibaseDataAccessTestItemSetUpHelper.php
index 723b714..d1792ff 100644
--- 
a/client/tests/phpunit/includes/scribunto/WikibaseLuaIntegrationTestItemSetUpHelper.php
+++ 
b/client/tests/phpunit/includes/DataAccess/WikibaseDataAccessTestItemSetUpHelper.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Wikibase\Client\Tests\Scribunto;
+namespace Wikibase\Client\Tests\DataAccess;
 
 use DataValues\DataValue;
 use DataValues\StringValue;
@@ -10,14 +10,12 @@
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\DataModel\Entity\Property;
 use Wikibase\DataModel\Entity\PropertyId;
-use Wikibase\DataModel\ReferenceList;
 use Wikibase\DataModel\SiteLink;
 use Wikibase\DataModel\Snak\Snak;
 use Wikibase\DataModel\Snak\SnakList;
 use Wikibase\DataModel\Statement\Statement;
 use Wikibase\SnakFactory;
 use Wikibase\Test\MockClientStore;
-use Wikibase\Test\MockRepository;
 
 /**
  * Helper class for Lua integration tests.
@@ -25,16 +23,15 @@
  * @license GNU GPL v2+
  * @author Marius Hoch < [email protected] >
  */
-class WikibaseLuaIntegrationTestItemSetUpHelper {
+class WikibaseDataAccessTestItemSetUpHelper {
 
        /**
         * @var MockRepository
         */
        protected $mockRepository;
 
-       public function __construct() {
-               $clientStore = new MockClientStore( 'de' );
-               $this->mockRepository = $clientStore->getEntityLookup();
+       public function __construct( MockClientStore $mockClientStore ) {
+               $this->mockRepository = $mockClientStore->getEntityLookup();
        }
 
        /**
@@ -43,7 +40,7 @@
        public function setUp() {
                $siteLink = new SiteLink(
                        
WikibaseClient::getDefaultInstance()->getSettings()->getSetting( 'siteGlobalID' 
),
-                       'WikibaseClientLuaTest'
+                       'WikibaseClientDataAccessTest'
                );
 
                if ( $this->mockRepository->getEntityIdForSiteLink( $siteLink ) 
) {
@@ -85,7 +82,7 @@
 
                $stringSnak2 = $this->getTestSnak(
                        $stringProperty->getId(),
-                       new StringValue( 'This is clearly superior to the 
parser function' )
+                       new StringValue( 'Lua is clearly superior to the parser 
function' )
                );
 
                $statement2 = $this->getTestStatement( $stringSnak2 );
diff --git 
a/client/tests/phpunit/includes/scribunto/LuaWikibaseEntityLibraryTests.lua 
b/client/tests/phpunit/includes/scribunto/LuaWikibaseEntityLibraryTests.lua
index 707a70b..efe5b3a 100644
--- a/client/tests/phpunit/includes/scribunto/LuaWikibaseEntityLibraryTests.lua
+++ b/client/tests/phpunit/includes/scribunto/LuaWikibaseEntityLibraryTests.lua
@@ -180,7 +180,7 @@
          expect = { 'Test all the code paths' }
        },
        { name = 'mw.wikibase.entity.getSitelink integration 1', func = 
integrationTestGetSitelink, type='ToString',
-         expect = { 'WikibaseClientLuaTest' }
+         expect = { 'WikibaseClientDataAccessTest' }
        },
        { name = 'mw.wikibase.entity.getSitelink integration 2', func = 
integrationTestGetSitelink, type='ToString',
          args = { 'fooSiteId' },
@@ -194,7 +194,7 @@
        },
        { name = 'mw.wikibase.entity.formatPropertyValues integration 2', func 
= integrationTestFormatPropertyValues,
          args = { { mw.wikibase.entity.claimRanks.RANK_PREFERRED, 
mw.wikibase.entity.claimRanks.RANK_NORMAL } },
-         expect = { { label = 'LuaTestStringProperty', value = 'Lua :), This 
is clearly superior to the parser function' } }
+         expect = { { label = 'LuaTestStringProperty', value = 'Lua :), Lua is 
clearly superior to the parser function' } }
        },
        { name = 'mw.wikibase.entity.formatPropertyValues integration 3', func 
= integrationTestFormatPropertyValues,
          args = { { mw.wikibase.entity.claimRanks.RANK_TRUTH } },
diff --git 
a/client/tests/phpunit/includes/scribunto/LuaWikibaseLibraryTests.lua 
b/client/tests/phpunit/includes/scribunto/LuaWikibaseLibraryTests.lua
index c44a5b2..aecf32d 100644
--- a/client/tests/phpunit/includes/scribunto/LuaWikibaseLibraryTests.lua
+++ b/client/tests/phpunit/includes/scribunto/LuaWikibaseLibraryTests.lua
@@ -89,7 +89,7 @@
        },
        { name = 'mw.wikibase.sitelink', func = mw.wikibase.sitelink, 
type='ToString',
          args = { 'Q32487' },
-         expect = { 'WikibaseClientLuaTest' }
+         expect = { 'WikibaseClientDataAccessTest' }
        },
        { name = 'mw.wikibase.sitelink', func = mw.wikibase.sitelink, 
type='ToString',
          args = { 'Q32488' },
diff --git 
a/client/tests/phpunit/includes/scribunto/Scribunto_LuaWikibaseLibraryTestCase.php
 
b/client/tests/phpunit/includes/scribunto/Scribunto_LuaWikibaseLibraryTestCase.php
index 44da189..07eb52a 100644
--- 
a/client/tests/phpunit/includes/scribunto/Scribunto_LuaWikibaseLibraryTestCase.php
+++ 
b/client/tests/phpunit/includes/scribunto/Scribunto_LuaWikibaseLibraryTestCase.php
@@ -17,6 +17,7 @@
 use Language;
 use Title;
 use Wikibase\Client\WikibaseClient;
+use Wikibase\Client\Tests\DataAccess\WikibaseDataAccessTestItemSetUpHelper;
 use Wikibase\Test\MockClientStore;
 
 /**
@@ -69,6 +70,9 @@
                        'allowArbitraryDataAccess',
                        static::allowArbitraryDataAccess()
                );
+
+               $testHelper = new WikibaseDataAccessTestItemSetUpHelper( $store 
);
+               $testHelper->setUp();
        }
 
        /**
@@ -80,13 +84,6 @@
         */
        public static function suite( $className ) {
                self::doMock();
-
-               static $setUp = false;
-               if ( !$setUp ) {
-                       $testHelper = new 
WikibaseLuaIntegrationTestItemSetUpHelper();
-                       $testHelper->setUp();
-                       $setUp = true;
-               }
 
                return parent::suite( $className );
        }
@@ -123,7 +120,7 @@
         * @return Title
         */
        protected function getTestTitle() {
-               return Title::newFromText( 'WikibaseClientLuaTest' );
+               return Title::newFromText( 'WikibaseClientDataAccessTest' );
        }
 
 }
diff --git a/docs/lua.wiki b/docs/lua.wiki
index 88f1ade..31524b0 100644
--- a/docs/lua.wiki
+++ b/docs/lua.wiki
@@ -114,7 +114,7 @@
 entity:formatPropertyValues( 'P42', { 
mw.wikibase.entity.claimRanks.RANK_NORMAL } )
 </source>
 
-<code>value</code> is an empty string ('') if there's no statement with the 
given property on the entity. <code>value</code> will be nil if the given 
property doesn't exist.
+<code>value</code> is an empty string (<nowiki>''</nowiki>) if there's no 
statement with the given property on the entity. <code>value</code> will be nil 
if the given property doesn't exist.
 
 === mw.wikibase.entity.claimRanks ===
 The <code>mw.wikibase.entity.claimRanks</code> table contains a map of all 
available claim ranks.

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

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

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

Reply via email to