WMDE-leszek has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/315495

Change subject: [DNM] Integration test for 
Ib23a348034acc8f8d072d96b36dafb9717c1c421
......................................................................

[DNM] Integration test for Ib23a348034acc8f8d072d96b36dafb9717c1c421

Change-Id: I44647dd1804b43bc497909e8f7f3cfee38d323e3
---
M client/includes/Specials/SpecialEntityUsage.php
M client/tests/phpunit/includes/Specials/SpecialEntityUsageTest.php
2 files changed, 77 insertions(+), 29 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/95/315495/8

diff --git a/client/includes/Specials/SpecialEntityUsage.php 
b/client/includes/Specials/SpecialEntityUsage.php
index 3e2a2bc..5291c18 100644
--- a/client/includes/Specials/SpecialEntityUsage.php
+++ b/client/includes/Specials/SpecialEntityUsage.php
@@ -130,9 +130,9 @@
                $conds = [ 'eu_entity_id' => 
$this->entityId->getSerialization() ];
                $groupConcat = wfGetDB( DB_REPLICA )->buildGroupConcatField(
                        '|',
-                       'wbc_entity_usage AS wbc',
+                       'wbc_entity_usage',
                        'eu_aspect',
-                       'wbc.eu_page_id = wbc_entity_usage.eu_page_id'
+                       'eu_page_id = page_id'
                );
 
                return [
diff --git a/client/tests/phpunit/includes/Specials/SpecialEntityUsageTest.php 
b/client/tests/phpunit/includes/Specials/SpecialEntityUsageTest.php
index e3daa05..20d7457 100644
--- a/client/tests/phpunit/includes/Specials/SpecialEntityUsageTest.php
+++ b/client/tests/phpunit/includes/Specials/SpecialEntityUsageTest.php
@@ -6,7 +6,9 @@
 use RequestContext;
 use SpecialPageFactory;
 use SpecialPageTestBase;
+use Title;
 use Wikibase\Client\Specials\SpecialEntityUsage;
+use WikiPage;
 
 /**
  * @covers Wikibase\Client\Specials\SpecialEntityUsage
@@ -21,50 +23,96 @@
  */
 class SpecialEntityUsageTest extends SpecialPageTestBase {
 
-       public function reallyDoQueryMock() {
-               $rows = [
-                       (object)[
-                               'value' => 11,
-                               'namespace' => 0,
-                               'title' => 'Tehran',
-                               'aspects' => 'S|O|L.fa',
-                               'eu_page_id' => 11,
-                               'eu_entity_id' => 'Q3',
+       protected function setUp() {
+               $this->tablesUsed = array_unique(
+                       array_merge( $this->tablesUsed, [ 'page', 
'wbc_entity_usage' ] )
+               );
+               parent::setUp();
+       }
+
+       private function setupEntityUsageFixtures() {
+               $db = wfGetDB( DB_MASTER );
+               $pages = [
+                       [
+                               'page_title' => 'Vienna',
+                               'page_namespace' => 0,
+                               'page_id' => 11,
+                       ],
+                       [
+                               'page_title' => 'Berlin',
+                               'page_namespace' => 0,
+                               'page_id' => 22,
                        ],
                ];
-
-               return new FakeResultWrapper( $rows );
+               $entityUsage = [
+                       [
+                               'eu_page_id' => 11,
+                               'eu_entity_id' => 'Q3',
+                               'eu_aspect' => 'S'
+                       ],
+                       [
+                               'eu_page_id' => 11,
+                               'eu_entity_id' => 'Q3',
+                               'eu_aspect' => 'O'
+                       ],
+                       [
+                               'eu_page_id' => 22,
+                               'eu_entity_id' => 'Q3',
+                               'eu_aspect' => 'L.de'
+                       ],
+               ];
+               foreach ( $pages as $pageData ) {
+                       $page = WikiPage::factory( Title::makeTitle( 
$pageData['page_namespace'], $pageData['page_title'] ) );
+                       $page->insertOn( $db, $pageData['page_id'] );
+               }
+               foreach ( $entityUsage as $item ) {
+                       $db->insert(
+                               'wbc_entity_usage',
+                               $item
+                       );
+               }
        }
 
        /**
         * @return SpecialEntityUsage
         */
        protected function newSpecialPage() {
-               $specialPage = $this->getMockBuilder( SpecialEntityUsage::class 
)
-                       ->setMethods( [ 'reallyDoQuery' ] )
-                       ->getMock();
-
-               $specialPage->expects( $this->any() )
-                       ->method( 'reallyDoQuery' )
-                       ->will( $this->returnValue( $this->reallyDoQueryMock() 
) );
-
-               return $specialPage;
+               return new SpecialEntityUsage();
        }
 
        public function testExecuteWithValidParam() {
-               list( $result, ) = $this->executeSpecialPage( 'Q3' );
-               $aspects = [
+               if ( wfGetDB( DB_SLAVE )->getType() === 'mysql' ) {
+                       $this->markTestSkipped( 'MySQL does not allow selfjoins 
on temporary tables' );
+               }
+
+               $this->setupEntityUsageFixtures();
+
+               $aspectsVienna = [
                        wfMessage( 'wikibase-pageinfo-entity-usage-S' 
)->parse(),
                        wfMessage( 'wikibase-pageinfo-entity-usage-O' 
)->parse(),
-                       wfMessage( 'wikibase-pageinfo-entity-usage-L', 'fa' 
)->parse(),
                ];
-               $aspectList = 
RequestContext::getMain()->getLanguage()->commaList( $aspects );
+               $aspectsBerlin = [
+                       wfMessage( 'wikibase-pageinfo-entity-usage-L', 'de' 
)->parse(),
+               ];
+               $aspectsAll = array_merge( $aspectsVienna, $aspectsBerlin );
+               $lang = RequestContext::getMain()->getLanguage();
+               $aspectListVienna = $lang->commaList( $aspectsVienna );
+               $aspectListBerlin = $lang->commaList( $aspectsBerlin );
+               $aspectListAll = $lang->commaList( $aspectsAll );
 
-               $this->assertContains( 'Tehran', $result );
-               $this->assertNotContains( '<p class="error"', $result );
                $expected = SpecialPageFactory::getLocalNameFor( 'EntityUsage', 
'Q3' );
+
+               list( $result, ) = $this->executeSpecialPage( 'Q3' );
+
+               $this->assertNotContains( '<p class="error"', $result );
                $this->assertContains( $expected, $result );
-               $this->assertContains( $aspectList, $result );
+
+               $this->assertContains( 'Vienna', $result );
+               $this->assertContains( 'Berlin', $result );
+               $this->assertContains( $aspectListVienna, $result );
+               $this->assertContains( $aspectListBerlin, $result );
+
+               $this->assertNotContains( $aspectListAll, $result );
        }
 
        public function testExecuteWithInvalidParam() {

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I44647dd1804b43bc497909e8f7f3cfee38d323e3
Gerrit-PatchSet: 8
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: WMDE-leszek <leszek.mani...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to