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