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