WikidataBuilder has uploaded a new change for review.

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

Change subject: New Wikidata Build - 2015-11-13T10:00:01+0000
......................................................................

New Wikidata Build - 2015-11-13T10:00:01+0000

Change-Id: I41f2a5be414dd02ad44e0be5cb9ad21a281e7e04
---
M composer.lock
M extensions/Constraints/specials/SpecialConstraintReport.php
M extensions/Constraints/tests/phpunit/Specials/SpecialConstraintReportTest.php
M extensions/Wikibase/client/WikibaseClient.hooks.php
M extensions/Wikibase/client/WikibaseClient.php
M extensions/Wikibase/client/i18n/scn.json
A 
extensions/Wikibase/client/includes/Hooks/ChangesListSpecialPageFilterHandler.php
D extensions/Wikibase/client/includes/Hooks/ChangesPageWikibaseFilterHandler.php
A 
extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesListSpecialPageFilterHandlerTest.php
D 
extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesPageWikibaseFilterHandlerTest.php
M extensions/Wikibase/lib/i18n/de.json
M extensions/Wikibase/repo/i18n/de.json
M extensions/Wikibase/repo/i18n/nb.json
M extensions/Wikibase/repo/includes/ItemDisambiguation.php
M extensions/Wikibase/repo/includes/rdf/SimpleValueRdfBuilder.php
M extensions/Wikibase/repo/tests/phpunit/includes/ItemDisambiguationTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/api/GetEntitiesTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/rdf/SnakRdfBuilderTest.php
M 
extensions/Wikibase/repo/tests/phpunit/includes/rdf/ValueSnakRdfBuilderFactoryTest.php
M extensions/Wikibase/view/tests/phpunit/Template/TemplateFactoryTest.php
M vendor/composer/autoload_classmap.php
M vendor/composer/installed.json
22 files changed, 564 insertions(+), 519 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata 
refs/changes/03/252903/1

diff --git a/composer.lock b/composer.lock
index 5815a18..5081689 100644
--- a/composer.lock
+++ b/composer.lock
@@ -919,7 +919,7 @@
             "source": {
                 "type": "git",
                 "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/WikibaseQualityConstraints";,
-                "reference": "b2dfdbb94f394964493b6d5bfa65fc93e03b6d97"
+                "reference": "7a4a4f71ff982edea41e74db87421bfba2ae6745"
             },
             "require": {
                 "php": ">=5.3.0",
@@ -965,7 +965,7 @@
             "support": {
                 "issues": 
"https://phabricator.wikimedia.org/project/profile/1202/";
             },
-            "time": "2015-10-23 19:47:04"
+            "time": "2015-11-11 20:37:51"
         },
         {
             "name": "wikibase/data-model",
@@ -1448,12 +1448,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-                "reference": "5b65eea44d1f9867b81b2a3315dc1a98a17e0b6a"
+                "reference": "0632d215a0a00011ac66ea5f088afd1616fdb76c"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/5b65eea44d1f9867b81b2a3315dc1a98a17e0b6a";,
-                "reference": "5b65eea44d1f9867b81b2a3315dc1a98a17e0b6a",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/0632d215a0a00011ac66ea5f088afd1616fdb76c";,
+                "reference": "0632d215a0a00011ac66ea5f088afd1616fdb76c",
                 "shasum": ""
             },
             "require": {
@@ -1523,7 +1523,7 @@
                 "wikibaserepo",
                 "wikidata"
             ],
-            "time": "2015-11-11 20:57:57"
+            "time": "2015-11-13 09:50:08"
         },
         {
             "name": "wikibase/wikimedia-badges",
diff --git a/extensions/Constraints/specials/SpecialConstraintReport.php 
b/extensions/Constraints/specials/SpecialConstraintReport.php
index 618c501..d0ee747 100644
--- a/extensions/Constraints/specials/SpecialConstraintReport.php
+++ b/extensions/Constraints/specials/SpecialConstraintReport.php
@@ -11,8 +11,6 @@
 use Wikibase\DataModel\Services\EntityId\EntityIdFormatter;
 use HTMLForm;
 use Wikibase\DataModel\Services\Lookup\EntityLookup;
-use Wikibase\DataModel\Services\Lookup\LanguageLabelDescriptionLookup;
-use Wikibase\DataModel\Services\Lookup\TermLookup;
 use Wikibase\Lib\OutputFormatValueFormatterFactory;
 use Wikibase\Lib\SnakFormatter;
 use DataValues;
@@ -27,6 +25,7 @@
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\DataModel\Entity\PropertyId;
 use Wikibase\Lib\Store\EntityTitleLookup;
+use Wikibase\Lib\Store\LanguageFallbackLabelDescriptionLookupFactory;
 use Wikibase\Repo\EntityIdHtmlLinkFormatterFactory;
 use Wikibase\Repo\EntityIdLabelFormatterFactory;
 use Wikibase\Repo\WikibaseRepo;
@@ -101,10 +100,10 @@
 
                return new self(
                        $wikibaseRepo->getEntityLookup(),
-                       $wikibaseRepo->getTermLookup(),
                        $wikibaseRepo->getEntityTitleLookup(),
                        new EntityIdLabelFormatterFactory(),
                        $wikibaseRepo->getEntityIdHtmlLinkFormatterFactory(),
+                       
$wikibaseRepo->getLanguageFallbackLabelDescriptionLookupFactory(),
                        $wikibaseRepo->getEntityIdParser(),
                        $wikibaseRepo->getValueFormatterFactory(),
                        $constraintReportFactory->getConstraintChecker()
@@ -113,20 +112,20 @@
 
        /**
         * @param EntityLookup $entityLookup
-        * @param TermLookup $termLookup
         * @param EntityTitleLookup $entityTitleLookup
         * @param EntityIdLabelFormatterFactory $entityIdLabelFormatterFactory
         * @param EntityIdHtmlLinkFormatterFactory 
$entityIdHtmlLinkFormatterFactory
+        * @param LanguageFallbackLabelDescriptionLookupFactory 
$fallbackLabelDescLookupFactory
         * @param EntityIdParser $entityIdParser
         * @param OutputFormatValueFormatterFactory $valueFormatterFactory
         * @param DelegatingConstraintChecker $constraintChecker
         */
        public function __construct(
                EntityLookup $entityLookup,
-               TermLookup $termLookup,
                EntityTitleLookup $entityTitleLookup,
                EntityIdLabelFormatterFactory $entityIdLabelFormatterFactory,
                EntityIdHtmlLinkFormatterFactory 
$entityIdHtmlLinkFormatterFactory,
+               LanguageFallbackLabelDescriptionLookupFactory 
$fallbackLabelDescLookupFactory,
                EntityIdParser $entityIdParser,
                OutputFormatValueFormatterFactory $valueFormatterFactory,
                DelegatingConstraintChecker $constraintChecker
@@ -137,13 +136,24 @@
                $this->entityTitleLookup = $entityTitleLookup;
                $this->entityIdParser = $entityIdParser;
 
-               $formatterOptions = new FormatterOptions();
-               $formatterOptions->setOption( SnakFormatter::OPT_LANG, 
$this->getLanguage()->getCode() );
-               $this->dataValueFormatter = 
$valueFormatterFactory->getValueFormatter( SnakFormatter::FORMAT_HTML, 
$formatterOptions );
+               $language = $this->getLanguage();
 
-               $labelLookup = new LanguageLabelDescriptionLookup( $termLookup, 
$this->getLanguage()->getCode() );
-               $this->entityIdLabelFormatter = 
$entityIdLabelFormatterFactory->getEntityIdFormatter( $labelLookup );
-               $this->entityIdLinkFormatter = 
$entityIdHtmlLinkFormatterFactory->getEntityIdFormatter( $labelLookup );
+               $formatterOptions = new FormatterOptions();
+               $formatterOptions->setOption( SnakFormatter::OPT_LANG, 
$language->getCode() );
+               $this->dataValueFormatter = 
$valueFormatterFactory->getValueFormatter(
+                       SnakFormatter::FORMAT_HTML,
+                       $formatterOptions
+               );
+
+               $labelLookup = 
$fallbackLabelDescLookupFactory->newLabelDescriptionLookup( $language );
+
+               $this->entityIdLabelFormatter = 
$entityIdLabelFormatterFactory->getEntityIdFormatter(
+                       $labelLookup
+               );
+
+               $this->entityIdLinkFormatter = 
$entityIdHtmlLinkFormatterFactory->getEntityIdFormatter(
+                       $labelLookup
+               );
 
                $this->constraintChecker = $constraintChecker;
        }
diff --git 
a/extensions/Constraints/tests/phpunit/Specials/SpecialConstraintReportTest.php 
b/extensions/Constraints/tests/phpunit/Specials/SpecialConstraintReportTest.php
index 04eeb54..93ba09e 100644
--- 
a/extensions/Constraints/tests/phpunit/Specials/SpecialConstraintReportTest.php
+++ 
b/extensions/Constraints/tests/phpunit/Specials/SpecialConstraintReportTest.php
@@ -73,10 +73,10 @@
 
                return new SpecialConstraintReport(
                        $wikibaseRepo->getEntityLookup(),
-                       $wikibaseRepo->getTermLookup(),
                        $wikibaseRepo->getEntityTitleLookup(),
                        new EntityIdLabelFormatterFactory(),
                        $wikibaseRepo->getEntityIdHtmlLinkFormatterFactory(),
+                       
$wikibaseRepo->getLanguageFallbackLabelDescriptionLookupFactory(),
                        $wikibaseRepo->getEntityIdParser(),
                        $wikibaseRepo->getValueFormatterFactory(),
                        $constraintReportFactory->getConstraintChecker()
diff --git a/extensions/Wikibase/client/WikibaseClient.hooks.php 
b/extensions/Wikibase/client/WikibaseClient.hooks.php
index dbf0e26..9178629 100644
--- a/extensions/Wikibase/client/WikibaseClient.hooks.php
+++ b/extensions/Wikibase/client/WikibaseClient.hooks.php
@@ -439,54 +439,6 @@
        }
 
        /**
-        * Adds a toggle for showing/hiding Wikidata entries in recent changes
-        *
-        * @param SpecialRecentChanges $special
-        * @param array &$filters
-        *
-        * @return bool
-        */
-       public static function onSpecialRecentChangesFilters( 
SpecialRecentChanges $special, array &$filters ) {
-               $hookHandler = new ChangesPageWikibaseFilterHandler(
-                       $special->getContext(),
-                       
WikibaseClient::getDefaultInstance()->getSettings()->getSetting( 
'showExternalRecentChanges' ),
-                       'hidewikidata',
-                       'rcshowwikidata',
-                       'wikibase-rc-hide-wikidata'
-               );
-
-               // @fixme remove wikidata-specific stuff!
-               $filters = $hookHandler->addFilterIfEnabled( $filters );
-
-               return true;
-       }
-
-       /**
-        * Modifies watchlist options to show a toggle for Wikibase changes
-        * @see 
https://www.mediawiki.org/wiki/Manual:Hooks/SpecialWatchlistFilters
-        *
-        * @since 0.4
-        *
-        * @param SpecialWatchlist $special
-        * @param array $filters
-        *
-        * @return bool
-        */
-       public static function onSpecialWatchlistFilters( $special, &$filters ) 
{
-               $hookHandler = new ChangesPageWikibaseFilterHandler(
-                       $special->getContext(),
-                       
WikibaseClient::getDefaultInstance()->getSettings()->getSetting( 
'showExternalRecentChanges' ),
-                       'hideWikibase',
-                       'wlshowwikibase',
-                       'wikibase-rc-hide-wikidata'
-               );
-
-               $filters = $hookHandler->addFilterIfEnabled( $filters );
-
-               return true;
-       }
-
-       /**
         * Adds a preference for showing or hiding Wikidata entries in recent 
changes
         *
         * @param User $user
diff --git a/extensions/Wikibase/client/WikibaseClient.php 
b/extensions/Wikibase/client/WikibaseClient.php
index f59b086..0140d0a 100644
--- a/extensions/Wikibase/client/WikibaseClient.php
+++ b/extensions/Wikibase/client/WikibaseClient.php
@@ -36,6 +36,8 @@
  * @defgroup WikibaseClient Wikibase Client
  */
 
+// @codingStandardsIgnoreFile
+
 if ( !defined( 'MEDIAWIKI' ) ) {
        die( "Not an entry point.\n" );
 }
@@ -110,14 +112,10 @@
        $wgHooks['ParserGetVariableValueSwitch'][] = 
'\Wikibase\ClientHooks::onParserGetVariableValueSwitch';
        $wgHooks['SkinTemplateOutputPageBeforeExec'][] = 
'\Wikibase\ClientHooks::onSkinTemplateOutputPageBeforeExec';
        $wgHooks['SpecialMovepageAfterMove'][] = 
'\Wikibase\Client\Hooks\MovePageNotice::onSpecialMovepageAfterMove';
-       $wgHooks['SpecialWatchlistQuery'][] = 
'\Wikibase\ClientHooks::onSpecialWatchlistQuery';
-       $wgHooks['SpecialRecentChangesQuery'][] = 
'\Wikibase\ClientHooks::onSpecialRecentChangesQuery';
-       $wgHooks['SpecialRecentChangesFilters'][] = 
'\Wikibase\ClientHooks::onSpecialRecentChangesFilters';
        $wgHooks['GetPreferences'][] = 
'\Wikibase\ClientHooks::onGetPreferences';
        $wgHooks['BeforePageDisplay'][] = 
'\Wikibase\ClientHooks::onBeforePageDisplay';
        $wgHooks['BeforePageDisplay'][] = 
'\Wikibase\ClientHooks::onBeforePageDisplayAddJsConfig';
        $wgHooks['ScribuntoExternalLibraries'][] = 
'\Wikibase\ClientHooks::onScribuntoExternalLibraries';
-       $wgHooks['SpecialWatchlistFilters'][] = 
'\Wikibase\ClientHooks::onSpecialWatchlistFilters';
        $wgHooks['InfoAction'][] = '\Wikibase\ClientHooks::onInfoAction';
        $wgHooks['TitleMoveComplete'][] = 
'\Wikibase\Client\Hooks\UpdateRepoHookHandlers::onTitleMoveComplete';
        $wgHooks['BaseTemplateAfterPortlet'][] = 
'\Wikibase\ClientHooks::onBaseTemplateAfterPortlet';
@@ -128,6 +126,11 @@
        $wgHooks['ParserLimitReportPrepare'][] = 
'\Wikibase\Client\Hooks\ParserLimitHookHandlers::onParserLimitReportPrepare';
        $wgHooks['FormatAutocomments'][] = '\Wikibase\ClientHooks::onFormat';
 
+       // recent changes / watchlist hooks
+       $wgHooks['ChangesListSpecialPageFilters'][] = 
'\Wikibase\Client\Hooks\ChangesListSpecialPageFilterHandler::onChangesListSpecialPageFilters';
+       $wgHooks['SpecialWatchlistQuery'][] = 
'\Wikibase\ClientHooks::onSpecialWatchlistQuery';
+       $wgHooks['SpecialRecentChangesQuery'][] = 
'\Wikibase\ClientHooks::onSpecialRecentChangesQuery';
+
        // update hooks
        $wgHooks['LoadExtensionSchemaUpdates'][] = 
'\Wikibase\Client\Usage\Sql\SqlUsageTrackerSchemaUpdater::onSchemaUpdate';
 
diff --git a/extensions/Wikibase/client/i18n/scn.json 
b/extensions/Wikibase/client/i18n/scn.json
index 20e5042..3f2e81b 100644
--- a/extensions/Wikibase/client/i18n/scn.json
+++ b/extensions/Wikibase/client/i18n/scn.json
@@ -62,6 +62,7 @@
        "unconnectedpages": "Pàggini nun assuciati a suggetti",
        "wikibase-unconnectedpages-format-row": "($1 
{{PLURAL:$1|culligamentu|culligamenti}} di lingua ntâ pàggina)",
        "wikibase-unconnectedpages-submit": "Vai",
+       "pageswithbadges": "Pàggini cu distintivi",
        "wikibase-pageinfo-entity-id": "ID dû suggetttu supra a {{WBREPONAME}}",
        "wikibase-pageinfo-entity-id-none": "Nuddu",
        "wikibase-property-render-error": "Nun s'arriniscìu a rènniri lu valuri 
dâ prupità $1: $2",
diff --git 
a/extensions/Wikibase/client/includes/Hooks/ChangesListSpecialPageFilterHandler.php
 
b/extensions/Wikibase/client/includes/Hooks/ChangesListSpecialPageFilterHandler.php
new file mode 100644
index 0000000..0b0ecad
--- /dev/null
+++ 
b/extensions/Wikibase/client/includes/Hooks/ChangesListSpecialPageFilterHandler.php
@@ -0,0 +1,164 @@
+<?php
+
+namespace Wikibase\Client\Hooks;
+
+use ChangesListSpecialPage;
+use User;
+use WebRequest;
+use Wikibase\Client\WikibaseClient;
+
+/**
+ * @since 0.5
+ *
+ * @licence GNU GPL v2+
+ * @author Katie Filbert < aude.w...@gmail.com >
+ */
+class ChangesListSpecialPageFilterHandler {
+
+       /**
+        * @var WebRequest
+        */
+       private $request;
+
+       /**
+        * @var User
+        */
+       private $user;
+
+       /**
+        * @var string
+        */
+       private $pageName;
+
+       /**
+        * @var bool
+        */
+       private $showExternalChanges;
+
+       /**
+        * @param WebRequest $request
+        * @param User $user
+        * @param string $pageName
+        * @param bool $showExternalChanges
+        */
+       public function __construct(
+               WebRequest $request,
+               User $user,
+               $pageName,
+               $showExternalChanges
+       ) {
+               $this->request = $request;
+               $this->user = $user;
+               $this->pageName = $pageName;
+               $this->showExternalChanges = $showExternalChanges;
+       }
+
+       /**
+        * @param ChangesListSpecialPage $specialPage
+        *
+        * @return ChangesListSpecialPageFilterHandler
+        */
+       private static function newFromGlobalState(
+               ChangesListSpecialPage $specialPage
+       ) {
+               $context = $specialPage->getContext();
+               $settings = WikibaseClient::getDefaultInstance()->getSettings();
+
+               return new self(
+                       $context->getRequest(),
+                       $context->getUser(),
+                       $specialPage->getName(),
+                       $settings->getSetting( 'showExternalRecentChanges' )
+               );
+       }
+
+       /**
+        * Modifies recent changes and watchlist options to show a toggle for 
Wikibase changes
+        * @see 
https://www.mediawiki.org/wiki/Manual:Hooks/ChangesListSpecialPageFilters
+        *
+        * @param ChangesListSpecialPage $specialPage
+        * @param array &$filters
+        *
+        * @return bool
+        */
+       public static function onChangesListSpecialPageFilters(
+               ChangesListSpecialPage $specialPage,
+               array &$filters
+       ) {
+               $hookHandler = self::newFromGlobalState( $specialPage );
+               $hookHandler->addFilterIfEnabled( $filters );
+
+               return true;
+       }
+
+       /**
+        * @param array &$filters
+        */
+       public function addFilterIfEnabled( array &$filters ) {
+               if ( $this->shouldAddFilter() ) {
+                       // if preference enabled, then Wikibase edits are 
included by default and
+                       // the toggle default value needs to be the inverse to 
hide them, and vice versa.
+                       $toggleDefault = 
!$this->hasShowWikibaseEditsPrefEnabled();
+                       $this->addFilter( $filters, $toggleDefault );
+               }
+       }
+
+       /**
+        * @return bool
+        */
+       private function shouldAddFilter() {
+               return $this->showExternalChanges && 
!$this->isEnhancedChangesEnabled();
+       }
+
+       /**
+        * @param array &$filters
+        * @param bool $toggleDefault
+        */
+       private function addFilter( array &$filters, $toggleDefault ) {
+               $filterName = $this->getFilterName();
+
+               $filters[$filterName] = array(
+                       'msg' => 'wikibase-rc-hide-wikidata',
+                       'default' => $toggleDefault
+               );
+       }
+
+       /**
+        * @return bool
+        */
+       private function hasShowWikibaseEditsPrefEnabled() {
+               return (bool)$this->user->getOption( $this->getOptionName() );
+       }
+
+       /**
+        * @return bool
+        */
+       private function isEnhancedChangesEnabled() {
+               $enhancedChangesUserOption = $this->user->getOption( 'usenewrc' 
);
+
+               return $this->request->getBool( 'enhanced', 
$enhancedChangesUserOption );
+       }
+
+       /**
+        * @return string
+        */
+       private function getFilterName() {
+               if ( $this->pageName === 'Watchlist' ) {
+                       return 'hideWikibase';
+               }
+
+               return 'hidewikidata';
+       }
+
+       /**
+        * @return string
+        */
+       private function getOptionName() {
+               if ( $this->pageName === 'Watchlist' ) {
+                       return 'wlshowwikibase';
+               }
+
+               return 'rcshowwikidata';
+       }
+
+}
diff --git 
a/extensions/Wikibase/client/includes/Hooks/ChangesPageWikibaseFilterHandler.php
 
b/extensions/Wikibase/client/includes/Hooks/ChangesPageWikibaseFilterHandler.php
deleted file mode 100644
index 45f358b..0000000
--- 
a/extensions/Wikibase/client/includes/Hooks/ChangesPageWikibaseFilterHandler.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php
-
-namespace Wikibase\Client\Hooks;
-
-use IContextSource;
-use User;
-
-/**
- * @since 0.5
- *
- * @licence GNU GPL v2+
- * @author Katie Filbert < aude.w...@gmail.com >
- */
-class ChangesPageWikibaseFilterHandler {
-
-       /**
-        * @var IContextSource
-        */
-       private $context;
-
-       /**
-        * @var boolean
-        */
-       private $showExternalChanges;
-
-       /**
-        * @var string
-        */
-       private $filterName;
-
-       /**
-        * @var string
-        */
-       private $optionName;
-
-       /**
-        * @var string
-        */
-       private $toggleMessageKey;
-
-       /**
-        * @param IContextSource $context
-        * @param boolean $showExternalChanges
-        * @param string $filterName - name for Wikibase toggle in FormOptions
-        * @param string $optionName - user option name for showing Wikibase 
edits by default
-        * @param string $toggleMessageKey
-        */
-       public function __construct(
-               IContextSource $context,
-               $showExternalChanges,
-               $filterName,
-               $optionName,
-               $toggleMessageKey
-       ) {
-               $this->context = $context;
-               $this->showExternalChanges = $showExternalChanges;
-               $this->filterName = $filterName;
-               $this->optionName = $optionName;
-               $this->toggleMessageKey = $toggleMessageKey;
-       }
-
-       /**
-        * @param array $filters
-        *
-        * @return array
-        */
-       public function addFilterIfEnabled( array $filters ) {
-               $user = $this->context->getUser();
-
-               if ( !$this->shouldAddFilter( $user ) ) {
-                       return $filters;
-               }
-
-               $toggleDefault = $this->showWikibaseEditsByDefault( $user );
-               $filters = $this->addFilter( $filters, $toggleDefault );
-
-               return $filters;
-       }
-
-       /**
-        * @param User $user
-        *
-        * @return boolean
-        */
-       private function shouldAddFilter( User $user ) {
-               if ( $this->showExternalChanges && 
!$this->isEnhancedChangesEnabled( $user ) ) {
-                       return true;
-               }
-
-               return false;
-       }
-
-       /**
-        * @param array $filters
-        * @param boolean $toggleDefault
-        *
-        * @return array
-        */
-       private function addFilter( array $filters, $toggleDefault ) {
-               $filters["{$this->filterName}"] = array(
-                       'msg' => $this->toggleMessageKey,
-                       'default' => $toggleDefault
-               );
-
-               return $filters;
-       }
-
-       /**
-        * @param User $user
-        *
-        * @return boolean
-        */
-       private function showWikibaseEditsByDefault( User $user ) {
-               return !$user->getOption( $this->optionName );
-       }
-
-       /**
-        * @param User $user
-        *
-        * @return boolean
-        */
-       private function isEnhancedChangesEnabled( User $user ) {
-               $enhancedChangesUserOption = $user->getOption( 'usenewrc' );
-
-               $isEnabled = $this->context->getRequest()->getBool( 'enhanced', 
$enhancedChangesUserOption );
-
-               return $isEnabled;
-       }
-
-}
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesListSpecialPageFilterHandlerTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesListSpecialPageFilterHandlerTest.php
new file mode 100644
index 0000000..eb18101
--- /dev/null
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesListSpecialPageFilterHandlerTest.php
@@ -0,0 +1,224 @@
+<?php
+
+namespace Wikibase\Client\Tests\Hooks;
+
+use FauxRequest;
+use Wikibase\Client\Hooks\ChangesListSpecialPageFilterHandler;
+
+/**
+ * @covers Wikibase\Client\Hooks\ChangesListSpecialPageFilterHandler
+ *
+ * @group WikibaseClientHooks
+ * @group WikibaseClient
+ * @group Wikibase
+ */
+class ChangesListSpecialPageFilterHandlerTest extends 
\PHPUnit_Framework_TestCase {
+
+       /**
+        * @dataProvider filterNotAddedWhenUsingEnhancedChangesProvider
+        */
+       public function testFilterNotAddedWhenUsingEnhancedChanges(
+               array $requestParams,
+               array $userPreferences,
+               $pageName,
+               $message
+       ) {
+               $hookHandler = new ChangesListSpecialPageFilterHandler(
+                       $this->getRequest( $requestParams ),
+                       $this->getUser( $userPreferences ),
+                       $pageName,
+                       true
+               );
+
+               $filters = array();
+               $hookHandler->addFilterIfEnabled( $filters );
+
+               $this->assertSame( array(), $filters, $message );
+       }
+
+       public function filterNotAddedWhenUsingEnhancedChangesProvider() {
+               return array(
+                       array(
+                               array(),
+                               array( 'usenewrc' => 1 ),
+                               'Watchlist',
+                               'enhanced default pref for Watchlist'
+                       ),
+                       array(
+                               array(),
+                               array( 'usenewrc' => 1 ),
+                               'RecentChanges',
+                               'enhanced default pref for RecentChanges'
+                       ),
+                       array(
+                               array( 'enhanced' => 1 ),
+                               array( 'usenewrc' => 0 ),
+                               'Watchlist',
+                               'enhanced not default but has enhanced=1 req 
param'
+                       ),
+                       array(
+                               array( 'enhanced' => 1 ),
+                               array( 'usenewrc' => 0 ),
+                               'RecentChanges',
+                               'enhanced not default but has enhanced=1 req 
param'
+                       ),
+                       array(
+                               array( 'enhanced' => 1 ),
+                               array( 'usenewrc' => 1 ),
+                               'Watchlist',
+                               'enhanced default and has enhanced=1 req param'
+                       ),
+                       array(
+                               array( 'enhanced' => 1 ),
+                               array( 'usenewrc' => 1 ),
+                               'RecentChangesLinked',
+                               'enhanced default and has enhanced=1 req param'
+                       ),
+               );
+       }
+
+       /**
+        * @dataProvider filterAddedWhenNotUsingEnhancedChangesProvider
+        */
+       public function 
testFilterAddedWhenNotUsingEnhancedChanges_notShowWikibaseEditsByDefault(
+               array $requestParams,
+               array $userPreferences,
+               $expectedFilterName,
+               $specialPageName
+       ) {
+               $hookHandler = new ChangesListSpecialPageFilterHandler(
+                       $this->getRequest( $requestParams ),
+                       $this->getUser( $userPreferences ),
+                       $specialPageName,
+                       true
+               );
+
+               $filters = array();
+               $hookHandler->addFilterIfEnabled( $filters );
+
+               $expected = array(
+                       $expectedFilterName => array(
+                               'msg' => 'wikibase-rc-hide-wikidata',
+                               'default' => true
+                       )
+               );
+
+               $this->assertSame( $expected, $filters );
+       }
+
+       public function filterAddedWhenNotUsingEnhancedChangesProvider() {
+               return array(
+                       array(
+                               array(),
+                               array( 'usenewrc' => 0 ),
+                               'hideWikibase',
+                               'Watchlist'
+                       ),
+                       array(
+                               array( 'enhanced' => 0 ),
+                               array( 'usenewrc' => 1 ),
+                               'hidewikidata',
+                               'RecentChanges'
+                       ),
+                       array(
+                               array(),
+                               array( 'usenewrc' => 0 ),
+                               'hidewikidata',
+                               'RecentChangesLinked'
+                       )
+               );
+       }
+
+       /**
+        * @dataProvider 
filterAddedInNonEnhanced_withPrefToShowWikibaseEditsByDefaultProvider
+        */
+       public function 
testFilterAddedInNonEnhanced_withPrefToShowWikibaseEditsByDefault(
+               array $userPreferences,
+               $expectedFilterName,
+               $specialPageName
+       ) {
+               $hookHandler = new ChangesListSpecialPageFilterHandler(
+                       $this->getRequest( array() ),
+                       $this->getUser( $userPreferences ),
+                       $specialPageName,
+                       true
+               );
+
+               $filters = array();
+               $hookHandler->addFilterIfEnabled( $filters );
+
+               $expected = array(
+                       $expectedFilterName => array(
+                               'msg' => 'wikibase-rc-hide-wikidata',
+                               'default' => false
+                       )
+               );
+
+               $this->assertSame( $expected, $filters );
+       }
+
+       public function 
filterAddedInNonEnhanced_withPrefToShowWikibaseEditsByDefaultProvider() {
+               return array(
+                       array(
+                               array( 'wlshowwikibase' => 1, 'usenewrc' => 0 ),
+                               'hideWikibase',
+                               'Watchlist'
+                       ),
+                       array(
+                               array( 'rcshowwikidata' => 1, 'usenewrc' => 0 ),
+                               'hidewikidata',
+                               'RecentChanges'
+                       )
+               );
+       }
+
+       /**
+        * @dataProvider 
filterNotAddedWhenExternalRecentChangesDisabledProvider() {
+        */
+       public function testFilterNotAddedWhenExternalRecentChangesDisabled( 
$specialPageName ) {
+               $hookHandler = new ChangesListSpecialPageFilterHandler(
+                       $this->getRequest( array() ),
+                       $this->getUser( array( 'usenewrc' => 0 ) ),
+                       $specialPageName,
+                       false
+               );
+
+               $filters = array();
+               $hookHandler->addFilterIfEnabled( $filters );
+
+               $this->assertSame( array(), $filters );
+       }
+
+       public function 
filterNotAddedWhenExternalRecentChangesDisabledProvider() {
+               return array(
+                       array( 'Watchlist' ),
+                       array( 'RecentChanges' ),
+                       array( 'RecentChangesLinked' )
+               );
+       }
+
+       private function getRequest( array $requestParams ) {
+               return new FauxRequest( $requestParams );
+       }
+
+       private function getUser( array $options ) {
+               $user = $this->getMockBuilder( 'User' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+
+               $user->expects( $this->any() )
+                       ->method( 'getOption' )
+                       ->will( $this->returnCallback( function( $optionName ) 
use ( $options ) {
+                               foreach ( $options as $key => $value ) {
+                                       if ( $optionName === $key ) {
+                                               return $value;
+                                       }
+                               }
+
+                               return null;
+                       } ) );
+
+               return $user;
+       }
+
+}
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesPageWikibaseFilterHandlerTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesPageWikibaseFilterHandlerTest.php
deleted file mode 100644
index e557709..0000000
--- 
a/extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesPageWikibaseFilterHandlerTest.php
+++ /dev/null
@@ -1,117 +0,0 @@
-<?php
-
-namespace Wikibase\Client\Tests\Hooks;
-
-use DerivativeContext;
-use FauxRequest;
-use RequestContext;
-use Wikibase\Client\Hooks\ChangesPageWikibaseFilterHandler;
-
-/**
- * @covers Wikibase\Client\Hooks\ChangesPageWikibaseFilterHandler
- *
- * @group WikibaseClientHooks
- * @group WikibaseClient
- * @group Wikibase
- */
-class ChangesPageWikibaseFilterHandlerTest extends \PHPUnit_Framework_TestCase 
{
-
-       /**
-        * @dataProvider filterNotAddedWhenUsingEnhancedChangesProvider
-        */
-       public function testFilterNotAddedWhenUsingEnhancedChanges(
-               $enhancedChangesDefault,
-               $useEnhancedChanges
-       ) {
-               $context = $this->getContext( $enhancedChangesDefault, 
$useEnhancedChanges, false );
-               $hookHandler = new ChangesPageWikibaseFilterHandler( $context, 
true, 'foo', 'bar', 'foobar' );
-
-               $filters = array();
-               $filters = $hookHandler->addFilterIfEnabled( $filters );
-
-               $this->assertEquals( array(), $filters );
-       }
-
-       public function filterNotAddedWhenUsingEnhancedChangesProvider() {
-               return array(
-                       array( true, true, 'enhanced changes default preference 
and using' ),
-                       array( false, true, 'enhanced changes not default but 
using' )
-               );
-       }
-
-       public function testFilterAddedWhenNotUsingEnhancedChanges() {
-               $context = $this->getContext( false, false, true );
-               $hookHandler = new ChangesPageWikibaseFilterHandler( $context, 
true, 'foo', 'bar', 'foobar' );
-
-               $filters = array();
-               $filters = $hookHandler->addFilterIfEnabled( $filters );
-
-               $expected = array(
-                       'foo' => array(
-                               'msg' => 'foobar',
-                               'default' => false
-                       )
-               );
-
-               $this->assertEquals( $expected, $filters );
-       }
-
-       public function 
testFilterAddedAndEnabledByDefault_WhenNotUsingEnhancedChanges() {
-               $context = $this->getContext( false, false, false );
-               $hookHandler = new ChangesPageWikibaseFilterHandler( $context, 
true, 'foo', 'bar', 'foobar' );
-
-               $filters = array();
-               $filters = $hookHandler->addFilterIfEnabled( $filters );
-
-               $expected = array(
-                       'foo' => array(
-                               'msg' => 'foobar',
-                               'default' => true
-                       )
-               );
-
-               $this->assertEquals( $expected, $filters );
-       }
-
-       public function testFilterNotAddedWhenExternalRecentChangesDisabled() {
-               $context = $this->getContext( false, false, false );
-               $hookHandler = new ChangesPageWikibaseFilterHandler( $context, 
false, 'foo', 'bar', 'foobar' );
-
-               $filters = array();
-               $filters = $hookHandler->addFilterIfEnabled( $filters );
-
-               $this->assertEquals( array(), $filters );
-       }
-
-       private function getContext( $enhancedChangesPref, $useEnhanced, 
$hideWikibaseEditsByDefault ) {
-               $context = new DerivativeContext( RequestContext::getMain() );
-               $context->setUser( $this->getUser( $enhancedChangesPref, 
$hideWikibaseEditsByDefault ) );
-
-               $request = new FauxRequest( array( 'enhanced' => $useEnhanced ) 
);
-               $context->setRequest( $request );
-
-               return $context;
-       }
-
-       private function getUser( $enhancedChangesPref, 
$hideWikibaseEditsByDefault ) {
-               $user = $this->getMockBuilder( 'User' )
-                       ->disableOriginalConstructor()
-                       ->getMock();
-
-               $user->expects( $this->any() )
-                       ->method( 'getOption' )
-                       ->will( $this->returnCallback( function( $optionName ) 
use (
-                               $enhancedChangesPref,
-                               $hideWikibaseEditsByDefault
-                       ) {
-                               if ( $optionName === 'usenewrc' ) {
-                                       return $enhancedChangesPref;
-                               } else {
-                                       return $hideWikibaseEditsByDefault;
-                               }
-                       } ) );
-
-               return $user;
-       }
-
-}
diff --git a/extensions/Wikibase/lib/i18n/de.json 
b/extensions/Wikibase/lib/i18n/de.json
index 2a8f48e..afe41db 100644
--- a/extensions/Wikibase/lib/i18n/de.json
+++ b/extensions/Wikibase/lib/i18n/de.json
@@ -9,7 +9,8 @@
                        "TMg",
                        "Sebastian Wallroth",
                        "Flow",
-                       "Yellowcard"
+                       "Yellowcard",
+                       "Lydia Pintscher (WMDE)"
                ]
        },
        "wikibase-lib-desc": "Stellt dem Repositorium strukturierter Daten 
gemeinsam nutzbare Funktionen bereit",
@@ -100,9 +101,9 @@
        "wikibase-entity-summary-wbeditentity-create": "Ein neues Objekt 
erstellt",
        "wikibase-entity-summary-wbeditentity-update": "Ein Objekt geändert",
        "wikibase-entity-summary-wbeditentity-override": "Ein Objekt geleert",
-       "wikibase-entity-summary-wbsetreference": "Referenz festgelegt",
+       "wikibase-entity-summary-wbsetreference": "Fundstelle festgelegt",
        "wikibase-entity-summary-wbsetreference-add": "Fundstelle der Aussage 
hinzugefügt",
-       "wikibase-entity-summary-wbsetreference-set": "Einzelnachweis der 
Aussage geändert",
+       "wikibase-entity-summary-wbsetreference-set": "Fundstelle der Aussage 
geändert",
        "wikibase-entity-summary-wbsetlabel-add": "Bezeichnung für [$2] 
hinzugefügt",
        "wikibase-entity-summary-wbsetlabel-set": "Bezeichnung für [$2] 
geändert",
        "wikibase-entity-summary-wbsetlabel-remove": "Bezeichnung für [$2] 
entfernt",
@@ -134,7 +135,7 @@
        "wikibase-entity-summary-wbsetclaim-update": 
"{{PLURAL:$3|Aussage|Aussagen}} geändert",
        "wikibase-entity-summary-wbsetclaim-create": 
"{{PLURAL:$3|Aussage|Aussagen}} erstellt",
        "wikibase-entity-summary-wbsetclaim-update-qualifiers": 
"{{PLURAL:$4|Einen Qualifikator|$4 Qualifikatoren}} {{PLURAL:$3|einer 
Aussage|von Aussagen}} geändert",
-       "wikibase-entity-summary-wbsetclaim-update-references": 
"{{PLURAL:$4|Eine Referenz|$4 Referenzen}} {{PLURAL:$3|einer Aussage|von 
Aussagen}} geändert",
+       "wikibase-entity-summary-wbsetclaim-update-references": 
"{{PLURAL:$4|Eine Fundstelle|$4 Fundstellen}} {{PLURAL:$3|einer Aussage|von 
Aussagen}} geändert",
        "wikibase-entity-summary-wbsetclaim-update-rank": "Den Rang der 
{{PLURAL:$3|Aussage|Aussagen}} geändert",
        "wikibase-entity-summary-clientsitelink-update": "Seite von [$3] nach 
[$4] verschoben",
        "wikibase-entity-summary-clientsitelink-remove": "Seite auf [$3] 
gelöscht",
diff --git a/extensions/Wikibase/repo/i18n/de.json 
b/extensions/Wikibase/repo/i18n/de.json
index 973be23..85f6fef 100644
--- a/extensions/Wikibase/repo/i18n/de.json
+++ b/extensions/Wikibase/repo/i18n/de.json
@@ -21,7 +21,8 @@
                        "Zolo",
                        "Sebastian Wallroth",
                        "Tiin",
-                       "Yellowcard"
+                       "Yellowcard",
+                       "Lydia Pintscher (WMDE)"
                ]
        },
        "wikibase-desc": "Ermöglicht ein Repositorium strukturierter Daten",
@@ -34,7 +35,7 @@
        "wikibase-cancel": "abbrechen",
        "wikibase-add": "hinzufügen",
        "wikibase-addqualifier": "Qualifikator hinzufügen",
-       "wikibase-addreference": "Einzelnachweis hinzufügen",
+       "wikibase-addreference": "Fundstelle hinzufügen",
        "wikibase-save-inprogress": "Speichere …",
        "wikibase-remove-inprogress": "Entferne …",
        "wikibase-entitytermsview-entitytermsforlanguagelistview-toggler": "In 
weiteren Sprachen",
@@ -53,7 +54,7 @@
        "wikibase-description-edit-placeholder-language-aware": "Beschreibung 
auf $1 eingeben",
        "wikibase-aliases-edit-placeholder": "Einige Aliasse eingeben",
        "wikibase-aliases-edit-placeholder-language-aware": "Einige Aliasse auf 
$1 angeben",
-       "wikibase-diffview-reference": "Referenz",
+       "wikibase-diffview-reference": "Fundstelle",
        "wikibase-diffview-rank": "Rang",
        "wikibase-diffview-rank-preferred": "Vorrangig",
        "wikibase-diffview-rank-normal": "Normaler Rang",
diff --git a/extensions/Wikibase/repo/i18n/nb.json 
b/extensions/Wikibase/repo/i18n/nb.json
index 0ed3157..12c1b61 100644
--- a/extensions/Wikibase/repo/i18n/nb.json
+++ b/extensions/Wikibase/repo/i18n/nb.json
@@ -191,7 +191,7 @@
        "wikibase-itemmerge-permissiondenied": "Ingen tilgang.",
        "wikibase-itemmerge-failed-modify": "Klarte ikke å flette elementene, 
vennligst løs eventuelle konflikter først.",
        "wikibase-itemmerge-no-such-entity": "Elementet ble ikke funnet.",
-       "wikibase-itemmerge-cant-load-entity-content": "Kunne ikke laste 
elementet.",
+       "wikibase-itemmerge-cant-load-entity-content": "Klarte ikke laste 
elementet.",
        "wikibase-itemmerge-cant-merge-self": "Kan ikke flettet et element med 
seg selv.",
        "wikibase-tokencheck-missingtoken": "Redigeringstoken kreves.",
        "wikibase-tokencheck-mustposttoken": "Redigering er kun mulig med 
POST-forespørsler",
diff --git a/extensions/Wikibase/repo/includes/ItemDisambiguation.php 
b/extensions/Wikibase/repo/includes/ItemDisambiguation.php
index 3c776e3..48dc8c5 100644
--- a/extensions/Wikibase/repo/includes/ItemDisambiguation.php
+++ b/extensions/Wikibase/repo/includes/ItemDisambiguation.php
@@ -214,7 +214,7 @@
                $matchElement = $descriptionElement = Html::element(
                        'span',
                        array( 'class' => 'wb-itemlink-match' ),
-                       wfMessage( 'wikibase-itemlink-userlang-wrapper' 
)->params( $language, $text )->parse()
+                       wfMessage( 'wikibase-itemlink-userlang-wrapper' 
)->params( $language, $text )->text()
                );
 
                return $matchElement;
diff --git a/extensions/Wikibase/repo/includes/rdf/SimpleValueRdfBuilder.php 
b/extensions/Wikibase/repo/includes/rdf/SimpleValueRdfBuilder.php
index d390a78..af6310c 100644
--- a/extensions/Wikibase/repo/includes/rdf/SimpleValueRdfBuilder.php
+++ b/extensions/Wikibase/repo/includes/rdf/SimpleValueRdfBuilder.php
@@ -2,7 +2,6 @@
 
 namespace Wikibase\Rdf;
 
-use DataValues\DataValue;
 use DataValues\DecimalValue;
 use DataValues\Geo\Values\GlobeCoordinateValue;
 use DataValues\MonolingualTextValue;
@@ -10,7 +9,6 @@
 use DataValues\StringValue;
 use DataValues\TimeValue;
 use Wikibase\DataModel\Entity\EntityIdValue;
-use Wikibase\DataModel\Services\Lookup\PropertyDataTypeLookup;
 use Wikibase\DataModel\Snak\PropertyValueSnak;
 use Wikimedia\Purtle\RdfWriter;
 
@@ -36,6 +34,11 @@
        private $dateCleaner;
 
        /**
+        * @var RdfVocabulary
+        */
+       protected $vocabulary;
+
+       /**
         * @param RdfVocabulary $vocabulary
         */
        public function __construct( RdfVocabulary $vocabulary ) {
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/ItemDisambiguationTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/ItemDisambiguationTest.php
index 646d48f..72ec78c 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/ItemDisambiguationTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/ItemDisambiguationTest.php
@@ -2,12 +2,11 @@
 
 namespace Wikibase\Test;
 
+use Language;
 use MediaWikiTestCase;
-use Title;
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\DataModel\Term\Term;
 use Wikibase\ItemDisambiguation;
-use Wikibase\Lib\Store\EntityTitleLookup;
 use Wikibase\Lib\Interactors\TermSearchResult;
 
 /**
@@ -20,185 +19,98 @@
  * @group Database
  *
  * @licence GNU GPL v2+
- * @author Daniel Kinzler
- * @author Adam Shorland
+ * @author Thiemo Mättig
  */
-class ItemDisambiguationTest extends \MediaWikiTestCase {
+class ItemDisambiguationTest extends MediaWikiTestCase {
 
-       /**
-        * @return EntityTitleLookup
-        */
-       private function getMockEntityTitleLookup() {
-               $entityIdFormatter = $this->getMock( 
'Wikibase\Lib\Store\EntityTitleLookup' );
+       protected function setUp() {
+               parent::setUp();
 
-               $entityIdFormatter->expects( $this->any() )
-                       ->method( 'getTitleForId' )
-                       ->will( $this->returnCallback( function( ItemId $id ) {
-                               return Title::makeTitle( NS_MAIN, 
$id->getSerialization() );
-                       } ) );
-
-               return $entityIdFormatter;
+               $this->setMwGlobals( array(
+                       'wgLang' => Language::factory( 'qqx' ),
+               ) );
        }
 
        /**
         * @return ItemDisambiguation
         */
-       private function newItemDisambiguation() {
+       private function newInstance() {
+               $entityTitleLookup = $this->getMock( 
'Wikibase\Lib\Store\EntityTitleLookup' );
+               $entityTitleLookup->expects( $this->any() )
+                       ->method( 'getTitleForId' )
+                       ->will( $this->returnValue( $this->getMock( 'Title' ) ) 
);
+
                $languageNameLookup = $this->getMock( 
'Wikibase\Lib\LanguageNameLookup' );
+               $languageNameLookup->expects( $this->any() )
+                       ->method( 'getName' )
+                       ->will( $this->returnValue( '<LANG>' ) );
 
                return new ItemDisambiguation(
-                       $this->getMockEntityTitleLookup(),
+                       $entityTitleLookup,
                        $languageNameLookup,
                        'en'
                );
        }
 
-       public function getHTMLProvider() {
-               $cases = array();
-               $matchers = array();
+       public function testNoResults() {
+               $html = $this->newInstance()->getHTML( array() );
 
-               // No results
-               $matchers['matches'] = array(
-                       'tag' => 'ul',
-                       'content' => '',
-                       'attributes' => array( 'class' => 
'wikibase-disambiguation' ),
-               );
-               $cases['No Results'] = array( array(), $matchers );
-
-               // One label match in the display language
-               $matchers['matches'] = array(
-                       'tag' => 'ul',
-                       'children' => array( 'count' => 1 ),
-                       'attributes' => array( 'class' => 
'wikibase-disambiguation' ),
-               );
-               $matchers['one'] = array(
-                       'tag' => 'li',
-                       'content' => 'regexp:/^Q1[^1]/s',
-               );
-               $matchers['one/label'] = array(
-                       'tag' => 'span',
-                       'content' => 'Foo',
-                       'attributes' => array( 'class' => 'wb-itemlink-label' ),
-               );
-               $matchers['one/desc'] = array(
-                       'tag' => 'span',
-                       'content' => 'DisplayDescription',
-                       'attributes' => array( 'class' => 
'wb-itemlink-description' ),
-               );
-               $cases['One label match in the display language'] = array(
-                       array(
-                               new TermSearchResult(
-                                       new Term( 'en', 'Foo' ),
-                                       'label',
-                                       new ItemId( 'Q1' ),
-                                       new Term( 'en', 'Foo' ),
-                                       new Term( 'en', 'DisplayDescription' )
-                               ),
-                       ),
-                       $matchers
-               );
-
-               // One alias match of another language
-               $matchers['matches'] = array(
-                       'tag' => 'ul',
-                       'children' => array( 'count' => 1 ),
-                       'attributes' => array( 'class' => 
'wikibase-disambiguation' ),
-               );
-               $matchers['one'] = array(
-                       'tag' => 'li',
-                       'content' => 'regexp:/^Q1[^1]/s',
-               );
-               $matchers['one/label'] = array(
-                       'tag' => 'span',
-                       'content' => 'DisplayLabel',
-                       'attributes' => array( 'class' => 'wb-itemlink-label' ),
-               );
-               $matchers['one/desc'] = array(
-                       'tag' => 'span',
-                       'content' => 'DisplayDescription',
-                       'attributes' => array( 'class' => 
'wb-itemlink-description' ),
-               );
-               $matchers['one/match'] = array(
-                       'tag' => 'span',
-                       'content' => 'regexp:/Foo/s',
-                       'attributes' => array( 'class' => 'wb-itemlink-match' ),
-               );
-               $cases['One alias match of another language'] = array(
-                       array(
-                               new TermSearchResult(
-                                       new Term( 'de', 'Foo' ),
-                                       'alias',
-                                       new ItemId( 'Q1' ),
-                                       new Term( 'en', 'DisplayLabel' ),
-                                       new Term( 'en', 'DisplayDescription' )
-                               ),
-                       ),
-                       $matchers
-               );
-
-               // Two Results - (1 - No Label in display Language, 2 - No 
Description)
-               unset( $matchers['one/label'] );
-               $matchers['matches'] = array(
-                       'tag' => 'ul',
-                       'children' => array( 'count' => 2 ),
-                       'attributes' => array( 'class' => 
'wikibase-disambiguation' ),
-               );
-               $matchers['one'] = array(
-                       'tag' => 'li',
-                       'content' => 'regexp:/^Q2[^1]/s',
-               );
-               $matchers['one/desc'] = array(
-                       'tag' => 'span',
-                       'content' => 'DisplayDescription',
-                       'attributes' => array( 'class' => 
'wb-itemlink-description' ),
-               );
-               $matchers['one/match'] = array(
-                       'tag' => 'span',
-                       'content' => 'regexp:/Foo/s',
-                       'attributes' => array( 'class' => 'wb-itemlink-match' ),
-               );
-               $matchers['two'] = array(
-                       'tag' => 'li',
-                       'content' => 'regexp:/^Q3[^1]/s',
-               );
-               $matchers['two/match'] = array(
-                       'tag' => 'span',
-                       'content' => 'regexp:/Foo/s',
-                       'attributes' => array( 'class' => 'wb-itemlink-match' ),
-               );
-               $cases['Two Results'] = array(
-                       array(
-                               new TermSearchResult(
-                                       new Term( 'de', 'Foo' ),
-                                       'label',
-                                       new ItemId( 'Q2' ),
-                                       null,
-                                       new Term( 'en', 'DisplayDescription' )
-                               ),
-                               new TermSearchResult(
-                                       new Term( 'de', 'Foo' ),
-                                       'label',
-                                       new ItemId( 'Q3' ),
-                                       new Term( 'en', 'DisplayLabel' )
-                               ),
-                       ),
-                       $matchers
-               );
-
-               return $cases;
+               $this->assertSame( '<ul class="wikibase-disambiguation"></ul>', 
$html );
        }
 
-       /**
-        * @dataProvider getHTMLProvider
-        */
-       public function testGetHTML( array $searchResults, array $matchers ) {
-               $disambig = $this->newItemDisambiguation();
+       public function testOneResult() {
+               $searchResult = new TermSearchResult(
+                       new Term( 'en', '<MATCH>' ),
+                       '<TYPE>',
+                       new ItemId( 'Q1' ),
+                       new Term( 'en', '<LABEL>' ),
+                       new Term( 'en', '<DESC>' )
+               );
+               $html = $this->newInstance()->getHTML( array( $searchResult ) );
 
-               $html = $disambig->getHTML( $searchResults );
+               $this->assertContains( '<ul class="wikibase-disambiguation">', 
$html );
+               $this->assertSame( 1, substr_count( $html, '<li ' ) );
 
-               foreach ( $matchers as $key => $matcher ) {
-                       MediaWikiTestCase::assertTag( $matcher, $html, "Failed 
to match HTML output with tag '{$key}'" );
-               }
+               $this->assertContains( '>Q1</a>', $html );
+               $this->assertContains( '<span 
class="wb-itemlink-label">&lt;LABEL></span>', $html );
+               $this->assertContains( '<span 
class="wb-itemlink-description">&lt;DESC></span>', $html );
+               $this->assertContains( '(wikibase-itemlink-userlang-wrapper: 
&lt;LANG>, &lt;MATCH>)',
+                       $html
+               );
+       }
+
+       public function testTwoResults() {
+               $searchResults = array(
+                       new TermSearchResult(
+                               new Term( 'de', '<MATCH1>' ),
+                               '<TYPE1>',
+                               new ItemId( 'Q1' ),
+                               null,
+                               new Term( 'en', '<DESC1>' )
+                       ),
+                       new TermSearchResult(
+                               new Term( 'de', '<MATCH2>' ),
+                               '<TYPE2>',
+                               new ItemId( 'Q2' ),
+                               new Term( 'en', '<LABEL2>' )
+                       ),
+               );
+               $html = $this->newInstance()->getHTML( $searchResults );
+
+               $this->assertContains( '<ul class="wikibase-disambiguation">', 
$html );
+               $this->assertSame( 2, substr_count( $html, '<li ' ) );
+
+               $this->assertContains( '>Q1</a>', $html );
+               $this->assertContains( '<span 
class="wb-itemlink-description">&lt;DESC1></span>', $html );
+               $this->assertContains( '(wikibase-itemlink-userlang-wrapper: 
&lt;LANG>, &lt;MATCH1>)',
+                       $html
+               );
+
+               $this->assertContains( '>Q2</a>', $html );
+               $this->assertContains( '<span 
class="wb-itemlink-label">&lt;LABEL2></span>', $html );
+               $this->assertContains( '(wikibase-itemlink-userlang-wrapper: 
&lt;LANG>, &lt;MATCH2>)',
+                       $html
+               );
        }
 
 }
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/api/GetEntitiesTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/api/GetEntitiesTest.php
index 3e62712..c9d97b5 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/api/GetEntitiesTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/api/GetEntitiesTest.php
@@ -121,9 +121,6 @@
                'json',
                'php',
                'xml',
-               'yaml',
-               'txt',
-               'dbg',
        );
 
        /**
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/rdf/SnakRdfBuilderTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/rdf/SnakRdfBuilderTest.php
index 0e8536e..6c08d0c 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/rdf/SnakRdfBuilderTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/rdf/SnakRdfBuilderTest.php
@@ -2,7 +2,6 @@
 
 namespace Wikibase\Test\Rdf;
 
-use DataValues\DataValue;
 use DataValues\StringValue;
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Entity\EntityIdValue;
@@ -130,8 +129,7 @@
                                        new PropertyId( 'P9' ),
                                        new StringValue( 'http://acme.com' )
                                ),
-                               'url',
-                               array()
+                               'url'
                        ),
                );
        }
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/rdf/ValueSnakRdfBuilderFactoryTest.php
 
b/extensions/Wikibase/repo/tests/phpunit/includes/rdf/ValueSnakRdfBuilderFactoryTest.php
index 676bac2..c55fc56 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/rdf/ValueSnakRdfBuilderFactoryTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/rdf/ValueSnakRdfBuilderFactoryTest.php
@@ -3,6 +3,8 @@
 namespace Wikibase\Test\Rdf;
 
 use Closure;
+use PHPUnit_Framework_Assert;
+use PHPUnit_Framework_TestCase;
 use Wikibase\Rdf\ValueSnakRdfBuilderFactory;
 use Wikibase\Rdf\RdfVocabulary;
 use Wikibase\Rdf\NullEntityMentionListener;
@@ -22,18 +24,22 @@
  * @licence GNU GPL v2+
  * @author Daniel Kinzler
  */
-class ValueSnakRdfBuilderFactoryTest extends \PHPUnit_Framework_TestCase {
+class ValueSnakRdfBuilderFactoryTest extends PHPUnit_Framework_TestCase {
 
        public function testGetSimpleValueSnakRdfBuilder() {
                $vocab = new RdfVocabulary( RdfBuilderTestData::URI_BASE, 
RdfBuilderTestData::URI_DATA );
                $writer = new NTriplesRdfWriter();
                $tracker = new NullEntityMentionListener();
                $dedupe = new NullDedupeBag();
+               $called = false;
 
-               $constructor = $this->newRdfBuilderConstructorCallback( 
'simple', $vocab, $writer, $tracker, $dedupe );
+               $constructor = $this->newRdfBuilderConstructorCallback(
+                       'simple', $vocab, $writer, $tracker, $dedupe, $called
+               );
 
                $factory = new ValueSnakRdfBuilderFactory( array( 'PT:test' => 
$constructor ) );
                $factory->getSimpleValueSnakRdfBuilder( $vocab, $writer, 
$tracker, $dedupe );
+               $this->assertTrue( $called );
        }
 
        public function testGetComplexValueSnakRdfBuilder() {
@@ -41,21 +47,26 @@
                $writer = new NTriplesRdfWriter();
                $tracker = new NullEntityMentionListener();
                $dedupe = new NullDedupeBag();
+               $called = false;
 
-               $constructor = $this->newRdfBuilderConstructorCallback( 
'complex', $vocab, $writer, $tracker, $dedupe );
+               $constructor = $this->newRdfBuilderConstructorCallback(
+                       'complex', $vocab, $writer, $tracker, $dedupe, $called
+               );
 
                $factory = new ValueSnakRdfBuilderFactory( array( 'PT:test' => 
$constructor ) );
                $factory->getComplexValueSnakRdfBuilder( $vocab, $writer, 
$tracker, $dedupe );
+               $this->assertTrue( $called );
        }
 
        /**
         * Constructs a closure that asserts that it is being called with the 
expected parameters.
         *
-        * @param $expectedMode
+        * @param string $expectedMode
         * @param RdfVocabulary $expectedVocab
         * @param RdfWriter $expectedWriter
         * @param EntityMentionListener $expectedTracker
         * @param DedupeBag $expectedDedupe
+        * @param bool &$called Will be set to true once the returned function 
has been called.
         *
         * @return Closure
         */
@@ -64,9 +75,10 @@
                RdfVocabulary $expectedVocab,
                RdfWriter $expectedWriter,
                EntityMentionListener $expectedTracker,
-               DedupeBag $expectedDedupe
+               DedupeBag $expectedDedupe,
+               &$called
        ) {
-               $mockBuilder = $this->getMock( 
'Wikibase\Rdf\ValueSnakRdfBuilder' );
+               $valueSnakRdfBuilder = $this->getMock( 
'Wikibase\Rdf\ValueSnakRdfBuilder' );
 
                return function(
                        $mode,
@@ -74,21 +86,23 @@
                        RdfWriter $writer,
                        EntityMentionListener $tracker,
                        DedupeBag $dedupe
-               ) use(
+               ) use (
                        $expectedMode,
                        $expectedVocab,
                        $expectedWriter,
                        $expectedTracker,
                        $expectedDedupe,
-                       $mockBuilder
+                       $valueSnakRdfBuilder,
+                       &$called
                ) {
-                       \PHPUnit_Framework_Assert::assertSame( $expectedMode, 
$mode );
-                       \PHPUnit_Framework_Assert::assertSame( $expectedVocab, 
$vocab );
-                       \PHPUnit_Framework_Assert::assertSame( $expectedWriter, 
$writer );
-                       \PHPUnit_Framework_Assert::assertSame( 
$expectedTracker, $tracker );
-                       \PHPUnit_Framework_Assert::assertSame( $expectedDedupe, 
$dedupe );
+                       PHPUnit_Framework_Assert::assertSame( $expectedMode, 
$mode );
+                       PHPUnit_Framework_Assert::assertSame( $expectedVocab, 
$vocab );
+                       PHPUnit_Framework_Assert::assertSame( $expectedWriter, 
$writer );
+                       PHPUnit_Framework_Assert::assertSame( $expectedTracker, 
$tracker );
+                       PHPUnit_Framework_Assert::assertSame( $expectedDedupe, 
$dedupe );
+                       $called = true;
 
-                       return $mockBuilder;
+                       return $valueSnakRdfBuilder;
                };
        }
 
diff --git 
a/extensions/Wikibase/view/tests/phpunit/Template/TemplateFactoryTest.php 
b/extensions/Wikibase/view/tests/phpunit/Template/TemplateFactoryTest.php
index 007a3f5..2bddaa4 100644
--- a/extensions/Wikibase/view/tests/phpunit/Template/TemplateFactoryTest.php
+++ b/extensions/Wikibase/view/tests/phpunit/Template/TemplateFactoryTest.php
@@ -40,9 +40,21 @@
                $this->assertSame( '<PARAM>', $template->plain() );
        }
 
-       public function testRender() {
-               $rendered = $this->newInstance()->render( 'basic', '<PARAM>' );
-               $this->assertSame( '<PARAM>', $rendered );
+       /**
+        * @dataProvider renderParamsProvider
+        */
+       public function testRender( $params, $expected ) {
+               $rendered = $this->newInstance()->render( 'basic', $params );
+               $this->assertSame( $expected, $rendered );
+       }
+
+       public function renderParamsProvider() {
+               return array(
+                       array( '<PARAM>', '<PARAM>' ),
+                       array( array(), '$1' ),
+                       array( array( '<PARAM>' ), '<PARAM>' ),
+                       array( array( '<PARAM>', 'ignored' ), '<PARAM>' ),
+               );
        }
 
 }
diff --git a/vendor/composer/autoload_classmap.php 
b/vendor/composer/autoload_classmap.php
index f9ec0e5..7d8cae5 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -362,7 +362,7 @@
     'Wikibase\\Client\\ForbiddenSerializer' => $baseDir . 
'/extensions/Wikibase/client/includes/ForbiddenSerializer.php',
     'Wikibase\\Client\\Hooks\\BaseTemplateAfterPortletHandler' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/BaseTemplateAfterPortletHandler.php',
     'Wikibase\\Client\\Hooks\\BeforePageDisplayHandler' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/BeforePageDisplayHandler.php',
-    'Wikibase\\Client\\Hooks\\ChangesPageWikibaseFilterHandler' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/ChangesPageWikibaseFilterHandler.php',
+    'Wikibase\\Client\\Hooks\\ChangesListSpecialPageFilterHandler' => $baseDir 
. 
'/extensions/Wikibase/client/includes/Hooks/ChangesListSpecialPageFilterHandler.php',
     'Wikibase\\Client\\Hooks\\DataUpdateHookHandlers' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/DataUpdateHookHandlers.php',
     'Wikibase\\Client\\Hooks\\DeletePageNoticeCreator' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/DeletePageNoticeCreator.php',
     'Wikibase\\Client\\Hooks\\InfoActionHookHandler' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/InfoActionHookHandler.php',
@@ -429,7 +429,7 @@
     
'Wikibase\\Client\\Tests\\DataAccess\\WikibaseDataAccessTestItemSetUpHelper' => 
$baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/WikibaseDataAccessTestItemSetUpHelper.php',
     'Wikibase\\Client\\Tests\\Hooks\\BaseTemplateAfterPortletHandlerTest' => 
$baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/BaseTemplateAfterPortalHandlerTest.php',
     'Wikibase\\Client\\Tests\\Hooks\\BeforePageDisplayHandlerTest' => $baseDir 
. 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/BeforePageDisplayHandlerTest.php',
-    'Wikibase\\Client\\Tests\\Hooks\\ChangesPageWikibaseFilterHandlerTest' => 
$baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesPageWikibaseFilterHandlerTest.php',
+    'Wikibase\\Client\\Tests\\Hooks\\ChangesListSpecialPageFilterHandlerTest' 
=> $baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesListSpecialPageFilterHandlerTest.php',
     'Wikibase\\Client\\Tests\\Hooks\\DataUpdateHookHandlersTest' => $baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/DataUpdateHookHandlersTest.php',
     'Wikibase\\Client\\Tests\\Hooks\\DeletePageNoticeCreatorTest' => $baseDir 
. 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/DeletePageNoticeCreatorTest.php',
     'Wikibase\\Client\\Tests\\Hooks\\InfoActionHookHandlerTest' => $baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/InfoActionHookHandlerTest.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index be152b4..794866f 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1236,12 +1236,12 @@
         "source": {
             "type": "git",
             "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-            "reference": "5b65eea44d1f9867b81b2a3315dc1a98a17e0b6a"
+            "reference": "0632d215a0a00011ac66ea5f088afd1616fdb76c"
         },
         "dist": {
             "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/5b65eea44d1f9867b81b2a3315dc1a98a17e0b6a";,
-            "reference": "5b65eea44d1f9867b81b2a3315dc1a98a17e0b6a",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/0632d215a0a00011ac66ea5f088afd1616fdb76c";,
+            "reference": "0632d215a0a00011ac66ea5f088afd1616fdb76c",
             "shasum": ""
         },
         "require": {
@@ -1273,7 +1273,7 @@
             "jakub-onderka/php-parallel-lint": "0.9",
             "mediawiki/mediawiki-codesniffer": "0.4.0|0.5.0"
         },
-        "time": "2015-11-11 20:57:57",
+        "time": "2015-11-13 09:50:08",
         "type": "mediawiki-extension",
         "installation-source": "dist",
         "autoload": {
@@ -1567,7 +1567,7 @@
         "source": {
             "type": "git",
             "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/WikibaseQualityConstraints";,
-            "reference": "b2dfdbb94f394964493b6d5bfa65fc93e03b6d97"
+            "reference": "7a4a4f71ff982edea41e74db87421bfba2ae6745"
         },
         "require": {
             "php": ">=5.3.0",
@@ -1579,7 +1579,7 @@
             "phpunit/phpunit": "^3.7.37|~4.5",
             "satooshi/php-coveralls": "master-dev"
         },
-        "time": "2015-10-23 19:47:04",
+        "time": "2015-11-11 20:37:51",
         "type": "mediawiki-extension",
         "installation-source": "source",
         "autoload": {

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I41f2a5be414dd02ad44e0be5cb9ad21a281e7e04
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: master
Gerrit-Owner: WikidataBuilder <wikidata-servi...@wikimedia.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to