Thiemo Mättig (WMDE) has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/330194 )
Change subject: Greatly reduce the complexity of InfoActionHookHandlerTest
......................................................................
Greatly reduce the complexity of InfoActionHookHandlerTest
* I found this because this was mocking specific implementations instead
of interfaces.
* InfoActionHookHandler was also expecting a specific implementation,
but should not.
* There was an entirely unused $enabled parameter.
* I turned the $message parameter into actual names for the test cases.
* A method was mocked twice. This never triggered an error because the
return value of this method was never used anyway. I fixed this by
adding with() conditions.
* handle() was called with a pre-set array, even if it does not care
about what is in this array. Replaced with [].
* Replaced a returnCallback() with a more simple returnValue().
* Inlined as well as extracted some code.
* Fixed PHPDocs.
Change-Id: Ie975283a564c2493842bdc7fec13f0d28f5122b8
---
M repo/includes/Hooks/InfoActionHookHandler.php
M repo/tests/phpunit/includes/Hooks/InfoActionHookHandlerTest.php
2 files changed, 65 insertions(+), 83 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/94/330194/1
diff --git a/repo/includes/Hooks/InfoActionHookHandler.php
b/repo/includes/Hooks/InfoActionHookHandler.php
index 133c4b7..f3e5cae 100644
--- a/repo/includes/Hooks/InfoActionHookHandler.php
+++ b/repo/includes/Hooks/InfoActionHookHandler.php
@@ -6,7 +6,7 @@
use IContextSource;
use SiteLookup;
use Title;
-use Wikibase\Store\Sql\SqlSubscriptionLookup;
+use Wikibase\Store\SubscriptionLookup;
use Wikibase\Store\EntityIdLookup;
use Wikibase\Lib\Store\EntityNamespaceLookup;
@@ -24,7 +24,7 @@
private $namespaceChecker;
/**
- * @var SqlSubscriptionLookup
+ * @var SubscriptionLookup
*/
private $subscriptionLookup;
@@ -45,7 +45,7 @@
public function __construct(
EntityNamespaceLookup $namespaceChecker,
- SqlSubscriptionLookup $subscriptionLookup,
+ SubscriptionLookup $subscriptionLookup,
SiteLookup $siteLookup,
EntityIdLookup $entityIdLookup,
IContextSource $context
@@ -77,7 +77,7 @@
/**
* @param Title $title
*
- * @return array
+ * @return string[] HTML
*/
private function getPageInfoRow( Title $title ) {
$entity = $this->entityIdLookup->getEntityIdForTitle( $title );
@@ -93,7 +93,7 @@
* @param string[] $subscriptions
* @param Title $title
*
- * @return string HTML[]
+ * @return string[] HTML
*/
private function formatSubscriptions( array $subscriptions, Title
$title ) {
$output = '';
diff --git a/repo/tests/phpunit/includes/Hooks/InfoActionHookHandlerTest.php
b/repo/tests/phpunit/includes/Hooks/InfoActionHookHandlerTest.php
index 847da7f..b52b600 100644
--- a/repo/tests/phpunit/includes/Hooks/InfoActionHookHandlerTest.php
+++ b/repo/tests/phpunit/includes/Hooks/InfoActionHookHandlerTest.php
@@ -5,15 +5,15 @@
use Html;
use IContextSource;
use RequestContext;
-use FileBasedSiteLookup;
+use SiteLookup;
use Site;
use Title;
-use Wikibase\Client\Store\Sql\PagePropsEntityIdLookup;
+use Wikibase\Store\EntityIdLookup;
use Wikibase\Lib\Store\EntityNamespaceLookup;
use Wikibase\DataModel\Entity\Item;
use Wikibase\DataModel\Entity\ItemId;
use Wikibase\Repo\Hooks\InfoActionHookHandler;
-use Wikibase\Store\Sql\SqlSubscriptionLookup;
+use Wikibase\Store\SubscriptionLookup;
/**
* @covers Wikibase\Repo\Hooks\InfoActionHookHandler
@@ -24,17 +24,22 @@
*
* @license GPL-2.0+
* @author Amir Sarabadani <[email protected]>
+ * @author Thiemo Mättig
*/
class InfoActionHookHandlerTest extends \PHPUnit_Framework_TestCase {
/**
* @dataProvider handleProvider
*/
- public function testHandle( $expected, $context, $pageInfo, $enabled,
$subscriptions, $message ) {
- $hookHandler = $this->newHookHandler( $enabled, $subscriptions,
$context );
- $pageInfo = $hookHandler->handle( $context, $pageInfo );
+ public function testHandle(
+ array $expected,
+ IContextSource $context,
+ array $subscriptions
+ ) {
+ $hookHandler = $this->newHookHandler( $subscriptions, $context
);
+ $pageInfo = $hookHandler->handle( $context, [] );
- $this->assertEquals( $expected, $pageInfo, $message );
+ $this->assertEquals( $expected, $pageInfo );
}
public function handleProvider() {
@@ -44,114 +49,92 @@
$elementElwiki = Html::element( 'a', [ 'href' => $url ],
'elwiki' );
$context = $this->getContext();
- $cases = [];
-
- $cases[] = [
- [
- 'header-properties' => [
+ return [
+ 'dewiki and enwiki' => [
+ [ 'header-properties' => [
[
$context->msg(
'wikibase-pageinfo-subscription' )->escaped(),
"<ul><li>$elementDewiki</li><li>$elementEnwiki</li></ul>",
],
- ]
+ ] ],
+ $context,
+ [ 'dewiki', 'enwiki' ]
],
- $context, [ 'header-properties' => [] ], true, [
'dewiki', 'enwiki' ],
- 'dewiki and enwiki'
- ];
-
- $cases[] = [
- [ 'header-properties' => [
+ 'elwiki' => [
+ [ 'header-properties' => [
[
$context->msg(
'wikibase-pageinfo-subscription' )->escaped(),
"<ul><li>$elementElwiki</li></ul>",
],
- ]
+ ] ],
+ $context,
+ [ 'elwiki' ]
],
- $context,
- [ 'header-properties' => [] ],
- false,
- [ 'elwiki' ],
- 'elwiki'
- ];
-
- $cases[] = [
- [
- 'header-properties' => [
+ 'no subscription' => [
+ [ 'header-properties' => [
[
$context->msg(
'wikibase-pageinfo-subscription' )->escaped(),
$context->msg(
'wikibase-pageinfo-subscription-none' )->escaped()
]
- ]
- ],
- $context, [ 'header-properties' => [] ], true, false,
- 'no subscription'
+ ] ],
+ $context,
+ []
+ ]
];
-
- return $cases;
}
/**
- * @param bool $enabled
- * @param ItemId $entityId
+ * @param string[] $subscriptions
+ * @param IContextSource $context
*
* @return InfoActionHookHandler
*/
- private function newHookHandler( $enabled, $subscriptions, $context ) {
- $namespaceLookup = new EntityNamespaceLookup( [
Item::ENTITY_TYPE => NS_MAIN ] );
+ private function newHookHandler( array $subscriptions, IContextSource
$context ) {
+ $itemId = new ItemId( 'Q4' );
- $subLookup = $this->getMockBuilder(
SqlSubscriptionLookup::class )
- ->disableOriginalConstructor()
- ->getMock();
-
- $subLookup->expects( $this->any() )
+ $subLookup = $this->getMock( SubscriptionLookup::class );
+ $subLookup->expects( $this->once() )
->method( 'getSubscribers' )
+ ->with( $itemId )
->will( $this->returnValue( $subscriptions ) );
- $siteLookup = $this->getMockBuilder( FileBasedSiteLookup::class
)
- ->disableOriginalConstructor()
- ->setMethods( [ 'getSite' ] )
- ->getMock();
-
- $siteLookup->expects( $this->any() )
- ->method( 'getSite' )
- ->will( $this->returnCallback( function () {
- $site = new Site();
- $site->addInterwikiId( 'en' );
- $site->setLinkPath(
'https://en.wikipedia.org/wiki/$1' );
- return $site;
- } ) );
-
- $entityIdLookup = $this->getMockBuilder(
PagePropsEntityIdLookup::class )
- ->disableOriginalConstructor()
- ->setMethods( [ 'getEntityIdForTitle' ] )
- ->getMock();
-
- $entityIdLookup->expects( $this->any() )
+ $entityIdLookup = $this->getMock( EntityIdLookup::class );
+ $entityIdLookup->expects( $this->once() )
->method( 'getEntityIdForTitle' )
- ->will( $this->returnValue( new ItemId( 'Q4' ) ) );
+ ->with( $context->getTitle() )
+ ->will( $this->returnValue( $itemId ) );
- $entityIdLookup->expects( $this->any() )
- ->method( 'getEntityIdForTitle' )
- ->will( $this->returnValue( false ) );
-
- $hookHandler = new InfoActionHookHandler(
- $namespaceLookup,
+ return new InfoActionHookHandler(
+ new EntityNamespaceLookup( [ Item::ENTITY_TYPE =>
NS_MAIN ] ),
$subLookup,
- $siteLookup,
+ $this->newSiteLookup(),
$entityIdLookup,
$context
);
+ }
- return $hookHandler;
+ /**
+ * @return SiteLookup
+ */
+ private function newSiteLookup() {
+ $site = new Site();
+ $site->addInterwikiId( 'en' );
+ $site->setLinkPath( 'https://en.wikipedia.org/wiki/$1' );
+
+ $siteLookup = $this->getMock( SiteLookup::class );
+
+ $siteLookup->expects( $this->any() )
+ ->method( 'getSite' )
+ ->will( $this->returnValue( $site ) );
+
+ return $siteLookup;
}
/**
* @return IContextSource
*/
private function getContext() {
- $title = $this->getMockBuilder( Title::class )
- ->disableOriginalConstructor()
- ->getMock();
+ $title = $this->getMock( Title::class );
$title->expects( $this->any() )
->method( 'exists' )
@@ -167,7 +150,6 @@
$context = new RequestContext();
$context->setTitle( $title );
-
$context->setLanguage( 'en' );
return $context;
--
To view, visit https://gerrit.wikimedia.org/r/330194
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie975283a564c2493842bdc7fec13f0d28f5122b8
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits