Aude has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/345278 )

Change subject: Introduce MediaInfoFieldDefinitions and register w/ 
MediaInfoHandler
......................................................................

Introduce MediaInfoFieldDefinitions and register w/ MediaInfoHandler

Bug: T161673
Change-Id: Ic0fbcd18ffb9f74cf26c6496ffa6bb018ed2e222
---
M WikibaseMediaInfo.entitytypes.php
M src/Content/MediaInfoHandler.php
A src/Search/MediaInfoFieldDefinitions.php
M tests/phpunit/mediawiki/Content/MediaInfoHandlerTest.php
A tests/phpunit/mediawiki/Search/MediaInfoFieldDefinitionsTest.php
5 files changed, 95 insertions(+), 2 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseMediaInfo 
refs/changes/78/345278/1

diff --git a/WikibaseMediaInfo.entitytypes.php 
b/WikibaseMediaInfo.entitytypes.php
index 21c3f4f..5775ad5 100644
--- a/WikibaseMediaInfo.entitytypes.php
+++ b/WikibaseMediaInfo.entitytypes.php
@@ -29,6 +29,7 @@
 use Wikibase\MediaInfo\DataModel\Serialization\MediaInfoSerializer;
 use Wikibase\MediaInfo\DataModel\Services\Diff\MediaInfoDiffer;
 use Wikibase\MediaInfo\DataModel\Services\Diff\MediaInfoPatcher;
+use Wikibase\MediaInfo\Search\MediaInfoFieldDefinitions;
 use Wikibase\MediaInfo\Services\MediaInfoServices;
 use Wikibase\MediaInfo\View\MediaInfoView;
 use Wikibase\Repo\MediaWikiLanguageDirectionalityLookup;
@@ -93,7 +94,11 @@
                                        MediaInfoServices::getFilePageLookup(),
                                        
$wikibaseRepo->getEntityParserOutputGeneratorFactory()
                                ),
-                               MediaInfoServices::getFilePageLookup()
+                               MediaInfoServices::getFilePageLookup(),
+                               new MediaInfoFieldDefinitions(
+                                       
$wikibaseRepo->getLabelProviderDefinitions(),
+                                       
$wikibaseRepo->getDescriptionProviderDefinitions()
+                               )
                        );
                },
                'entity-id-pattern' => MediaInfoId::PATTERN,
diff --git a/src/Content/MediaInfoHandler.php b/src/Content/MediaInfoHandler.php
index 431fd6f..4b31eab 100644
--- a/src/Content/MediaInfoHandler.php
+++ b/src/Content/MediaInfoHandler.php
@@ -14,6 +14,7 @@
 use Wikibase\MediaInfo\Actions\ViewMediaInfoAction;
 use Wikibase\MediaInfo\DataModel\MediaInfo;
 use Wikibase\MediaInfo\DataModel\MediaInfoId;
+use Wikibase\MediaInfo\Search\MediaInfoFieldDefinitions;
 use Wikibase\MediaInfo\Services\FilePageLookup;
 use Wikibase\Repo\Content\EntityHandler;
 use Wikibase\Repo\Store\EntityPerPage;
@@ -60,6 +61,7 @@
         * @param LanguageFallbackLabelDescriptionLookupFactory 
$labelLookupFactory
         * @param MissingMediaInfoHandler $missingMediaInfoHandler
         * @param FilePageLookup $filePageLookup
+        * @param MediaInfoFieldDefinitions $fieldDefinitions
         * @param callable|null $legacyExportFormatDetector
         */
        public function __construct(
@@ -73,6 +75,7 @@
                LanguageFallbackLabelDescriptionLookupFactory 
$labelLookupFactory,
                MissingMediaInfoHandler $missingMediaInfoHandler,
                FilePageLookup $filePageLookup,
+               MediaInfoFieldDefinitions $fieldDefinitions,
                $legacyExportFormatDetector = null
        ) {
                parent::__construct(
@@ -83,6 +86,7 @@
                        $constraintProvider,
                        $errorLocalizer,
                        $entityIdParser,
+                       $fieldDefinitions,
                        $legacyExportFormatDetector
                );
                $this->entityIdLookup = $entityIdLookup;
diff --git a/src/Search/MediaInfoFieldDefinitions.php 
b/src/Search/MediaInfoFieldDefinitions.php
new file mode 100644
index 0000000..15d8553
--- /dev/null
+++ b/src/Search/MediaInfoFieldDefinitions.php
@@ -0,0 +1,52 @@
+<?php
+
+namespace Wikibase\MediaInfo\Search;
+
+use Wikibase\Repo\Search\Elastic\Fields\DescriptionsProviderFieldDefinitions;
+use Wikibase\Repo\Search\Elastic\Fields\FieldDefinitions;
+use Wikibase\Repo\Search\Elastic\Fields\LabelsProviderFieldDefinitions;
+use Wikibase\Repo\Search\Elastic\Fields\StatementCountField;
+
+/**
+ * @license GPL-2.0+
+ * @author Katie Filbert < aude.w...@gmail.com >
+ */
+class MediaInfoFieldDefinitions implements FieldDefinitions {
+
+       /**
+        * @var LabelsProviderFieldDefinitions
+        */
+       private $labelsProviderFieldDefinitions;
+
+       /**
+        * @var DescriptionsProviderFieldDefinitions
+        */
+       private $descriptionsProviderFieldDefinitions;
+
+       /**
+        * @param LabelsProviderFieldDefinitions $labelsProviderFieldDefinitions
+        * @param DescriptionsProviderFieldDefinitions 
$descriptionsProviderFieldDefinitions
+        */
+       public function __construct(
+               LabelsProviderFieldDefinitions $labelsProviderFieldDefinitions,
+               DescriptionsProviderFieldDefinitions 
$descriptionsProviderFieldDefinitions
+       ) {
+               $this->labelsProviderFieldDefinitions = 
$labelsProviderFieldDefinitions;
+               $this->descriptionsProviderFieldDefinitions = 
$descriptionsProviderFieldDefinitions;
+       }
+
+       /**
+        * @return SearchIndexField[]
+        */
+       public function getFields() {
+               $fields = array_merge(
+                       $this->labelsProviderFieldDefinitions->getFields(),
+                       $this->descriptionsProviderFieldDefinitions->getFields()
+               );
+
+               $fields['statement_count'] = new StatementCountField();
+
+               return $fields;
+       }
+
+}
\ No newline at end of file
diff --git a/tests/phpunit/mediawiki/Content/MediaInfoHandlerTest.php 
b/tests/phpunit/mediawiki/Content/MediaInfoHandlerTest.php
index 3ef4e13..9d11d98 100644
--- a/tests/phpunit/mediawiki/Content/MediaInfoHandlerTest.php
+++ b/tests/phpunit/mediawiki/Content/MediaInfoHandlerTest.php
@@ -20,7 +20,10 @@
 use Wikibase\MediaInfo\Content\MissingMediaInfoHandler;
 use Wikibase\MediaInfo\DataModel\MediaInfo;
 use Wikibase\MediaInfo\DataModel\MediaInfoId;
+use Wikibase\MediaInfo\Search\MediaInfoFieldDefinitions;
 use Wikibase\MediaInfo\Services\FilePageLookup;
+use Wikibase\Repo\Search\Elastic\Fields\DescriptionsProviderFieldDefinitions;
+use Wikibase\Repo\Search\Elastic\Fields\LabelsProviderFieldDefinitions;
 use Wikibase\Repo\Store\EntityPerPage;
 use Wikibase\Repo\Validators\EntityConstraintProvider;
 use Wikibase\Repo\Validators\ValidatorErrorLocalizer;
@@ -88,7 +91,11 @@
                        $this->getMock( EntityIdLookup::class ),
                        $labelLookupFactory,
                        $missingMediaInfoHandler,
-                       $filePageLookup
+                       $filePageLookup,
+                       new MediaInfoFieldDefinitions(
+                               new LabelsProviderFieldDefinitions( [ 'ar', 
'de' ] ),
+                               new DescriptionsProviderFieldDefinitions( [ 
'ar', 'de' ] )
+                       )
                );
        }
 
diff --git a/tests/phpunit/mediawiki/Search/MediaInfoFieldDefinitionsTest.php 
b/tests/phpunit/mediawiki/Search/MediaInfoFieldDefinitionsTest.php
new file mode 100644
index 0000000..2afcac1
--- /dev/null
+++ b/tests/phpunit/mediawiki/Search/MediaInfoFieldDefinitionsTest.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Wikibase\MediaInfo\Tests\MediaWiki\Search;
+
+use PHPUnit_Framework_TestCase;
+use Wikibase\MediaInfo\Search\MediaInfoFieldDefinitions;
+use Wikibase\Repo\Search\Elastic\Fields\DescriptionsProviderFieldDefinitions;
+use Wikibase\Repo\Search\Elastic\Fields\LabelsProviderFieldDefinitions;
+
+class MediaInfoFieldDefinitionsTest extends PHPUnit_Framework_TestCase {
+
+       public function testGetFields() {
+               $languageCodes = [ 'ar', 'de', 'es' ];
+
+               $mediaInfoFieldDefinitions = new MediaInfoFieldDefinitions(
+                       new LabelsProviderFieldDefinitions( $languageCodes ),
+                       new DescriptionsProviderFieldDefinitions( 
$languageCodes )
+               );
+
+               $expectedKeys = [ 'label_count', 'statement_count' ];
+
+               $this->assertSame( $expectedKeys, array_keys( 
$mediaInfoFieldDefinitions->getFields() ) );
+       }
+
+}
\ No newline at end of file

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic0fbcd18ffb9f74cf26c6496ffa6bb018ed2e222
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikibaseMediaInfo
Gerrit-Branch: master
Gerrit-Owner: Aude <aude.w...@gmail.com>

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

Reply via email to