jenkins-bot has submitted this change and it was merged.
Change subject: Add hooks to register mediainfo entity type in Wikibase
..
Add hooks to register mediainfo entity type in Wikibase
Change-Id: I44467a292ec8900e86c8b46e4d741523c9ac56af
---
M extension.json
M src/WikibaseMediaInfoHooks.php
M tests/phpunit/integration/WikibaseMediaInfoHooksTest.php
M tests/phpunit/unit/WikibaseMediaInfoHooksTest.php
4 files changed, 97 insertions(+), 0 deletions(-)
Approvals:
Bene: Looks good to me, approved
Thiemo Mättig (WMDE): Looks good to me, approved
jenkins-bot: Verified
diff --git a/extension.json b/extension.json
index cfaffd0..9cb214f 100644
--- a/extension.json
+++ b/extension.json
@@ -18,6 +18,12 @@
"Hooks": {
"UnitTestsList": [
"Wikibase\\MediaInfo\\WikibaseMediaInfoHooks::onUnitTestsList"
+ ],
+ "WikibaseRepoEntityTypes": [
+
"Wikibase\\MediaInfo\\WikibaseMediaInfoHooks::onWikibaseRepoEntityTypes"
+ ],
+ "WikibaseClientEntityTypes": [
+
"Wikibase\\MediaInfo\\WikibaseMediaInfoHooks::onWikibaseClientEntityTypes"
]
},
"MessagesDirs": {
diff --git a/src/WikibaseMediaInfoHooks.php b/src/WikibaseMediaInfoHooks.php
index 722a5bc..9ab548f 100644
--- a/src/WikibaseMediaInfoHooks.php
+++ b/src/WikibaseMediaInfoHooks.php
@@ -23,4 +23,43 @@
$paths[] = __DIR__ . '/../tests/phpunit/';
}
+ /**
+* Returns the common definition of the media info entity type that
both repo and client use.
+*
+* @return array
+*/
+ private static function getCommonMediaInfoDefinition() {
+ return [
+ // TODO
+ ];
+ }
+
+ /**
+* Adds the definition of the media info entity type to the definitions
array Wikibase uses.
+*
+* @param $entityTypeDefinitions
+*/
+ public static function onWikibaseRepoEntityTypes(
&$entityTypeDefinitions ) {
+ $entityTypeDefinitions['mediainfo'] = array_merge(
+ self::getCommonMediaInfoDefinition(),
+ [
+ // TODO
+ ]
+ );
+ }
+
+ /**
+* Adds the definition of the media info entity type to the definitions
array Wikibase uses.
+*
+* @param $entityTypeDefinitions
+*/
+ public static function onWikibaseClientEntityTypes(
&$entityTypeDefinitions ) {
+ $entityTypeDefinitions['mediainfo'] = array_merge(
+ self::getCommonMediaInfoDefinition(),
+ [
+ // TODO
+ ]
+ );
+ }
+
}
diff --git a/tests/phpunit/integration/WikibaseMediaInfoHooksTest.php
b/tests/phpunit/integration/WikibaseMediaInfoHooksTest.php
index d6481bd..55a95b9 100644
--- a/tests/phpunit/integration/WikibaseMediaInfoHooksTest.php
+++ b/tests/phpunit/integration/WikibaseMediaInfoHooksTest.php
@@ -24,4 +24,30 @@
$this->assertContains( $expected, $paths );
}
+ public function testOnWikibaseRepoEntityTypes() {
+ $entityTypeDefinitions = [
+ 'item' => [ 'foo', 'bar' ]
+ ];
+
+ Hooks::run( 'WikibaseRepoEntityTypes', [
&$entityTypeDefinitions ] );
+
+ $this->assertArrayHasKey( 'item', $entityTypeDefinitions );
+ $this->assertEquals( [ 'foo', 'bar' ],
$entityTypeDefinitions['item'] );
+
+ $this->assertArrayHasKey( 'mediainfo', $entityTypeDefinitions );
+ }
+
+ public function testOnWikibaseClientEntityTypes() {
+ $entityTypeDefinitions = [
+ 'item' => [ 'foo', 'bar' ]
+ ];
+
+ Hooks::run( 'WikibaseClientEntityTypes', [
&$entityTypeDefinitions ] );
+
+ $this->assertArrayHasKey( 'item', $entityTypeDefinitions );
+ $this->assertEquals( [ 'foo', 'bar' ],
$entityTypeDefinitions['item'] );
+
+ $this->assertArrayHasKey( 'mediainfo', $entityTypeDefinitions );
+ }
+
}
diff --git a/tests/phpunit/unit/WikibaseMediaInfoHooksTest.php
b/tests/phpunit/unit/WikibaseMediaInfoHooksTest.php
index 0f65899..27535b9 100644
--- a/tests/phpunit/unit/WikibaseMediaInfoHooksTest.php
+++ b/tests/phpunit/unit/WikibaseMediaInfoHooksTest.php
@@ -21,4 +21,30 @@
$this->assertEquals( realpath( __DIR__ . '/../' ), realpath(
$paths[1] ) );
}
+ public function testOnWikibaseRepoEntityTypes() {
+ $entityTypeDefinitions = [
+ 'item' => [ 'foo', 'bar' ]
+ ];
+
+ WikibaseMediaInfoHooks::onWikibaseRepoEntityTypes(
$entit