Adrian Lang has uploaded a new change for review.

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

Change subject: Inject DataTypeFactory into PropertyView
......................................................................

Inject DataTypeFactory into PropertyView

Change-Id: I6c4bf56c6acd6f89549e6b864a39ccc71019b0ad
---
M repo/includes/View/EntityViewFactory.php
M repo/includes/View/PropertyView.php
M repo/includes/WikibaseRepo.php
M repo/tests/phpunit/includes/View/EntityViewFactoryTest.php
M repo/tests/phpunit/includes/View/PropertyViewTest.php
5 files changed, 59 insertions(+), 3 deletions(-)


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

diff --git a/repo/includes/View/EntityViewFactory.php 
b/repo/includes/View/EntityViewFactory.php
index 803f229..d6d8bfd 100644
--- a/repo/includes/View/EntityViewFactory.php
+++ b/repo/includes/View/EntityViewFactory.php
@@ -2,6 +2,7 @@
 
 namespace Wikibase\Repo\View;
 
+use DataTypes\DataTypeFactory;
 use InvalidArgumentException;
 use Language;
 use SiteStore;
@@ -49,6 +50,11 @@
        private $siteStore;
 
        /**
+        * @var DataTypeFactory
+        */
+       private $dataTypeFactory;
+
+       /**
         * @var string[]
         */
        private $siteLinkGroups;
@@ -68,12 +74,14 @@
         * @param OutputFormatSnakFormatterFactory $snakFormatterFactory
         * @param EntityLookup $entityLookup
         * @param SiteStore $siteStore
+        * @param DataTypeFactory $dataTypeFactory
         */
        public function __construct(
                EntityIdFormatterFactory $idFormatterFactory,
                OutputFormatSnakFormatterFactory $snakFormatterFactory,
                EntityLookup $entityLookup,
                SiteStore $siteStore,
+               DataTypeFactory $dataTypeFactory,
                array $siteLinkGroups,
                array $specialSiteLinkGroups,
                array $badgeItems
@@ -85,6 +93,7 @@
                $this->sectionEditLinkGenerator = new 
SectionEditLinkGenerator();
                $this->entityLookup = $entityLookup;
                $this->siteStore = $siteStore;
+               $this->dataTypeFactory = $dataTypeFactory;
                $this->siteLinkGroups = $siteLinkGroups;
                $this->specialSiteLinkGroups = $specialSiteLinkGroups;
                $this->badgeItems = $badgeItems;
@@ -148,7 +157,13 @@
                                        $editable
                                );
                        case 'property':
-                               return new PropertyView( $fingerprintView, 
$claimsView, $language, $editable );
+                               return new PropertyView(
+                                       $fingerprintView,
+                                       $claimsView,
+                                       $this->dataTypeFactory,
+                                       $language,
+                                       $editable
+                               );
                }
 
                throw new InvalidArgumentException( 'No EntityView for entity 
type: ' . $entityType );
diff --git a/repo/includes/View/PropertyView.php 
b/repo/includes/View/PropertyView.php
index d9c3fec..d04c3e8 100644
--- a/repo/includes/View/PropertyView.php
+++ b/repo/includes/View/PropertyView.php
@@ -2,8 +2,10 @@
 
 namespace Wikibase\Repo\View;
 
+use DataTypes\DataTypeFactory;
 use DataTypes\DataType;
 use InvalidArgumentException;
+use Language;
 use Wikibase\DataModel\Entity\Property;
 use Wikibase\EntityRevision;
 use Wikibase\Repo\WikibaseRepo;
@@ -19,6 +21,29 @@
  * @author H. Snater < mediaw...@snater.com >
  */
 class PropertyView extends EntityView {
+
+       /**
+        * @var DataTypeFactory
+        */
+       private $dataTypeFactory;
+
+       /**
+        * @param FingerprintView $fingerprintView
+        * @param ClaimsView $claimsView
+        * @param Language $language
+        * @param bool $editable
+        */
+       public function __construct(
+               FingerprintView $fingerprintView,
+               ClaimsView $claimsView,
+               DataTypeFactory $dataTypeFactory,
+               Language $language,
+               $editable = true
+       ) {
+               parent::__construct( $fingerprintView, $claimsView, $language, 
$editable );
+
+               $this->dataTypeFactory = $dataTypeFactory;
+       }
 
        /**
         * @see EntityView::getMainHtml
@@ -52,8 +77,7 @@
        }
 
        private function getDataType( Property $property ) {
-               return WikibaseRepo::getDefaultInstance()->getDataTypeFactory()
-                       ->getType( $property->getDataTypeId() );
+               return $this->dataTypeFactory->getType( 
$property->getDataTypeId() );
        }
 
        /**
diff --git a/repo/includes/WikibaseRepo.php b/repo/includes/WikibaseRepo.php
index 9c4d948..faf7126 100644
--- a/repo/includes/WikibaseRepo.php
+++ b/repo/includes/WikibaseRepo.php
@@ -993,6 +993,7 @@
                        $this->getSnakFormatterFactory(),
                        $this->getEntityLookup(),
                        $this->getSiteStore(),
+                       $this->getDataTypeFactory(),
                        $this->getSettings()->getSetting( 'siteLinkGroups' ),
                        $this->getSettings()->getSetting( 
'specialSiteLinkGroups' ),
                        $this->getSettings()->getSetting( 'badgeItems' )
diff --git a/repo/tests/phpunit/includes/View/EntityViewFactoryTest.php 
b/repo/tests/phpunit/includes/View/EntityViewFactoryTest.php
index 135e3f2..848587a 100644
--- a/repo/tests/phpunit/includes/View/EntityViewFactoryTest.php
+++ b/repo/tests/phpunit/includes/View/EntityViewFactoryTest.php
@@ -61,6 +61,7 @@
                        $this->getSnakFormatterFactory(),
                        $this->getMock( 'Wikibase\Lib\Store\EntityLookup' ),
                        $this->getSiteStore(),
+                       $this->getMock( 'DataTypes\DataTypeFactory' ),
                        array(),
                        array(),
                        array()
diff --git a/repo/tests/phpunit/includes/View/PropertyViewTest.php 
b/repo/tests/phpunit/includes/View/PropertyViewTest.php
index 21f82bb..21455d6 100644
--- a/repo/tests/phpunit/includes/View/PropertyViewTest.php
+++ b/repo/tests/phpunit/includes/View/PropertyViewTest.php
@@ -2,6 +2,7 @@
 
 namespace Wikibase\Test;
 
+use DataTypes\DataType;
 use Language;
 use Wikibase\DataModel\Entity\Entity;
 use Wikibase\DataModel\Entity\EntityId;
@@ -81,6 +82,7 @@
                        $this->getMockBuilder( 'Wikibase\Repo\View\ClaimsView' )
                                ->disableOriginalConstructor()
                                ->getMock(),
+                       $this->getDataTypeFactory(),
                        Language::factory( 'en' ),
                        true,
                        false
@@ -97,4 +99,17 @@
                );
        }
 
+       private function getDataTypeFactory() {
+               $dataTypeFactory = $this->getMock( 'DataTypes\DataTypeFactory' 
);
+
+               $dataTypeFactory->expects( $this->any() )
+                       ->method( 'getType' )
+                       ->will( $this->returnValue( new DataType(
+                               'type',
+                               'datavalue',
+                               array()
+                       ) ) );
+
+               return $dataTypeFactory;
+       }
 }

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6c4bf56c6acd6f89549e6b864a39ccc71019b0ad
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Adrian Lang <adrian.l...@wikimedia.de>

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

Reply via email to