Tobias Gritschacher has submitted this change and it was merged.

Change subject: Fix DispatchStatsTest and EntityChangeTest
......................................................................


Fix DispatchStatsTest and EntityChangeTest

* renamed misnamed test class
* replaced "truncate" with "delete" for SQLite compatibility
* use generic Site objects
* provide defaults for change_id and user_id

Change-Id: Icae47e5e29217a647b2e0ed513542996b82d40c6
---
M lib/includes/ChangesTable.php
M lib/tests/phpunit/changes/TestChanges.php
M repo/Wikibase.hooks.php
M repo/tests/phpunit/includes/store/sql/DispatchStatsTest.php
4 files changed, 56 insertions(+), 31 deletions(-)

Approvals:
  Tobias Gritschacher: Verified; Looks good to me, approved
  jenkins-bot: Verified



diff --git a/lib/includes/ChangesTable.php b/lib/includes/ChangesTable.php
index 2184ebb..4b3b2cd 100644
--- a/lib/includes/ChangesTable.php
+++ b/lib/includes/ChangesTable.php
@@ -128,23 +128,33 @@
        }
 
        /**
-        * @see ORMTable::getWriteValues()
+        * @see   ORMTable::getWriteValues()
         *
         * @since 0.4
         *
-        * @param \IORMRow $row
+        * @param ChangeRow $row
         *
         * @return array
         */
        protected function getWriteValues( \IORMRow $row ) {
+               assert( $row instanceof ChangeRow );
+
                $values = parent::getWriteValues( $row );
 
-               if ( $row instanceof ChangeRow ) {
-                       $infoField = $this->getPrefixedField( 'info' );
+               $infoField = $this->getPrefixedField( 'info' );
+               $revisionIdField = $this->getPrefixedField( 'revision_id' );
+               $userIdField = $this->getPrefixedField( 'user_id' );
 
-                       if ( isset( $values[$infoField] ) ) {
-                               $values[$infoField] = $row->serializeInfo( 
$values[$infoField] );
-                       }
+               if ( isset( $values[$infoField] ) ) {
+                       $values[$infoField] = $row->serializeInfo( 
$values[$infoField] );
+               }
+
+               if ( !isset( $values[$revisionIdField] ) ) {
+                       $values[$revisionIdField] = 0;
+               }
+
+               if ( !isset( $values[$userIdField] ) ) {
+                       $values[$userIdField] = 0;
                }
 
                return $values;
diff --git a/lib/tests/phpunit/changes/TestChanges.php 
b/lib/tests/phpunit/changes/TestChanges.php
index 6d791fc..a559af7 100644
--- a/lib/tests/phpunit/changes/TestChanges.php
+++ b/lib/tests/phpunit/changes/TestChanges.php
@@ -6,6 +6,7 @@
 use \Wikibase\EntityChange;
 use \Wikibase\DiffChange;
 use \Wikibase\EntityId;
+use Wikibase\SiteLink;
 
 /**
  * Test change data for ChangeRowTest
@@ -41,23 +42,27 @@
  */
 final class TestChanges {
 
+       protected static function getSite( $globalId ) {
+               $site = new \MediaWikiSite();
+               $site->setGlobalId( $globalId );
+
+               return $site;
+       }
+
+       protected static function makeSiteLink( $siteId, $page ) {
+               $site = self::getSite( $siteId );
+               return new SiteLink( $site, $page );
+       }
+
        protected static function getItem() {
                $item = Item::newEmpty();
                $item->setLabel( 'en', 'Venezuela' );
                $item->setDescription( 'en', 'a country' );
                $item->addAliases( 'en', array( 'Bolivarian Republic of 
Venezuela' ) );
 
-               $site = new \Site();
-               $site->setGlobalId( 'enwiki' );
-               $item->addSiteLink( new \Wikibase\SiteLink( $site, 'Venezuela' 
)  );
-
-               $site = new \Site();
-               $site->setGlobalId( 'jawiki' );
-               $item->addSiteLink( new \Wikibase\SiteLink( $site, 'ベネズエラ' )  );
-
-               $site = new \Site();
-               $site->setGlobalId( 'cawiki' );
-               $item->addSiteLink( new \Wikibase\SiteLink( $site, 'Veneçuela' 
)  );
+               $item->addSiteLink( self::makeSiteLink( 'enwiki', 'Venezuela' ) 
 );
+               $item->addSiteLink( self::makeSiteLink( 'jawiki', 'ベネズエラ' )  );
+               $item->addSiteLink( self::makeSiteLink( 'cawiki', 'Veneçuela' ) 
 );
 
                return $item;
        }
@@ -90,31 +95,31 @@
                        // -----
                        $old = Item::newEmpty();
                        $old->setId( new \Wikibase\EntityId( Item::ENTITY_TYPE, 
100 ) );
+
+                       /* @var Item $new */
                        $new = $old->copy();
 
                        $changes['item-creation'] = 
EntityChange::newFromUpdate( EntityChange::ADD, null, $new );
                        $changes['item-deletion'] = 
EntityChange::newFromUpdate( EntityChange::REMOVE, $old, null );
 
                        // -----
-                       $dewiki = \Sites::singleton()->getSite( 'dewiki' );
-                       $link = new \Wikibase\SiteLink( $dewiki, "Dummy" );
+                       $link = self::makeSiteLink( 'dewiki', "Dummy" );
                        $new->addSiteLink( $link, 'add' );
                        $changes['set-dewiki-sitelink'] = 
EntityChange::newFromUpdate( EntityChange::UPDATE, $old, $new );
                        $old = $new->copy();
 
-                       $enwiki = \Sites::singleton()->getSite( 'enwiki' );
-                       $link = new \Wikibase\SiteLink( $enwiki, "Emmy" );
+                       $link = self::makeSiteLink( 'enwiki', "Emmy" );
                        $new->addSiteLink( $link, 'add' );
                        $changes['set-enwiki-sitelink'] = 
EntityChange::newFromUpdate( EntityChange::UPDATE, $old, $new );
                        $old = $new->copy();
 
                        // -----
-                       $link = new \Wikibase\SiteLink( $dewiki, "Dummy2" );
+                       $link = self::makeSiteLink( 'dewiki', "Dummy2" );
                        $new->addSiteLink( $link, 'set' );
                        $changes['change-dewiki-sitelink'] = 
EntityChange::newFromUpdate( EntityChange::UPDATE, $old, $new );
                        $old = $new->copy();
 
-                       $link = new \Wikibase\SiteLink( $enwiki, "Emmy2" );
+                       $link = self::makeSiteLink( 'enwiki', "Emmy2" );
                        $new->addSiteLink( $link, 'set' );
                        $changes['change-enwiki-sitelink'] = 
EntityChange::newFromUpdate( EntityChange::UPDATE, $old, $new );
                        $old = $new->copy();
diff --git a/repo/Wikibase.hooks.php b/repo/Wikibase.hooks.php
index c21c2f5..16501ab 100755
--- a/repo/Wikibase.hooks.php
+++ b/repo/Wikibase.hooks.php
@@ -203,6 +203,7 @@
                        'store/StoreFactory',
                        'store/Store',
 
+                       'store/sql/DispatchStats',
                        'store/sql/SqlIdGenerator',
                        'store/sql/TermSqlIndex',
                        'store/sql/TermSearchKeyBuilder',
diff --git a/repo/tests/phpunit/includes/store/sql/DispatchStatsTest.php 
b/repo/tests/phpunit/includes/store/sql/DispatchStatsTest.php
index fed758b..53b5d07 100644
--- a/repo/tests/phpunit/includes/store/sql/DispatchStatsTest.php
+++ b/repo/tests/phpunit/includes/store/sql/DispatchStatsTest.php
@@ -4,9 +4,6 @@
 use Wikibase\DispatchStats;
 
 /**
- * FIXME: this class is not registered in the test hook
- * FIXME: there already is a EntityChangeTest in lib
- *
  * Tests for the Wikibase\EntityChange class.
  *
  * This program is free software; you can redistribute it and/or modify
@@ -38,7 +35,7 @@
  * @licence GNU GPL v2+
  * @author Daniel Kinzler
  */
-class EntityChangeTest extends \MediaWikiTestCase {
+class DispatchStatsTest extends \MediaWikiTestCase {
 
        /**
         * Creates and loads a DispatchStats object, injecting test data into
@@ -52,16 +49,28 @@
                $changes = $data['changes'];
                $states = $data['states'];
 
-               $dbw = wfGetDB( DB_MASTER ); // write to dummy tables
+               $dbw = wfGetDB( DB_MASTER ); // writes to dummy tables
 
-               $dbw->query( "truncate " . $dbw->tableName( 'wb_changes' ) );
-               $dbw->query( "truncate " . $dbw->tableName( 
'wb_changes_dispatch' ) );
+               $dbw->delete( 'wb_changes', array( "1" ) );
+               $dbw->delete( 'wb_changes_dispatch', array( "1" ) );
 
                foreach ( $changes as $row ) {
                        if ( $row === null ) {
                                continue;
                        }
 
+                       if ( !isset( $row['change_revision_id'] ) ) {
+                               $row['change_revision_id'] = 0;
+                       }
+
+                       if ( !isset( $row['change_user_id'] ) ) {
+                               $row['change_user_id'] = 0;
+                       }
+
+                       if ( !isset( $row['change_info'] ) ) {
+                               $row['change_info'] = ''; // ugh
+                       }
+
                        $dbw->insert( 'wb_changes',
                                $row,
                                __METHOD__

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Icae47e5e29217a647b2e0ed513542996b82d40c6
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Daniel Kinzler <daniel.kinz...@wikimedia.de>
Gerrit-Reviewer: Jeroen De Dauw <jeroended...@gmail.com>
Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@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