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