diff options
author | diosmosis <benakamoorthi@fastmail.fm> | 2014-07-08 08:17:22 +0400 |
---|---|---|
committer | diosmosis <benakamoorthi@fastmail.fm> | 2014-07-08 08:17:22 +0400 |
commit | 1e4c9506ad5bf927a40d4fd6a6092d63fde5b881 (patch) | |
tree | 76711401d225bb9408b2f0567fcdb86764cb741c /tests | |
parent | dea3e06134c54116171d73ef72d48b6d2a7f330a (diff) |
Modified SetupFixture to save SQL dumps of fixtures when needed, make sure OmniFixture can be used w/ SetupFixture, and use SQL dump of OmniFixture in UI tests instead of running OmniFixture every time (so changes in fixtures do not result in changes to screenshots).
Diffstat (limited to 'tests')
-rw-r--r-- | tests/PHPUnit/Fixture.php | 21 | ||||
-rw-r--r-- | tests/PHPUnit/Fixtures/OmniFixture.php | 17 | ||||
-rw-r--r-- | tests/PHPUnit/Fixtures/UITestFixture.php | 23 | ||||
-rw-r--r-- | tests/PHPUnit/Integration/BackwardsCompatibility1XTest.php | 24 | ||||
-rw-r--r-- | tests/resources/OmniFixture-dump.sql.gz | bin | 0 -> 624382 bytes |
5 files changed, 55 insertions, 30 deletions
diff --git a/tests/PHPUnit/Fixture.php b/tests/PHPUnit/Fixture.php index 281c452333..f8ff1c6a67 100644 --- a/tests/PHPUnit/Fixture.php +++ b/tests/PHPUnit/Fixture.php @@ -29,6 +29,8 @@ use Piwik\Site; use Piwik\Tracker\Cache; use Piwik\Translate; use Piwik\Url; +use Piwik\Plugins\CoreUpdater\CoreUpdater; +use Piwik\Updater; /** * Base type for all integration test fixtures. Integration test fixtures @@ -781,6 +783,25 @@ class Fixture extends PHPUnit_Framework_Assert } return $result; } + + public static function updateDatabase() + { + $updater = new Updater(); + $componentsWithUpdateFile = CoreUpdater::getComponentUpdates($updater); + if (empty($componentsWithUpdateFile)) { + return false; + } + + $result = CoreUpdater::updateComponents($updater, $componentsWithUpdateFile); + if (!empty($result['coreError']) + && !empty($result['warnings']) + && !empty($result['errors']) + ) { + throw new \Exception("Failed to update database (errors or warnings found): " . print_r($result, true)); + } + + return $result; + } } // TODO: remove when other plugins don't use BaseFixture diff --git a/tests/PHPUnit/Fixtures/OmniFixture.php b/tests/PHPUnit/Fixtures/OmniFixture.php index a688a91f3f..3eb5cb9ac2 100644 --- a/tests/PHPUnit/Fixtures/OmniFixture.php +++ b/tests/PHPUnit/Fixtures/OmniFixture.php @@ -8,7 +8,10 @@ namespace Piwik\Tests\Fixtures; use Piwik\Date; +use Piwik\Access; +use Piwik\Option; use ReflectionClass; +use Piwik\Plugins\VisitsSummary\API as VisitsSummaryAPI; /** * This fixture is the combination of every other fixture defined by Piwik. Should be used @@ -42,6 +45,7 @@ class OmniFixture extends \Fixture && $className != __CLASS__ && $className != "Piwik_Test_Fixture_SqlDump" && $className != "Piwik\\Tests\\Fixtures\\UpdaterTestFixture" + && $className != "Piwik\\Tests\\Fixtures\\UITestFixture" ) { $klassReflect = new ReflectionClass($className); if (!strpos($klassReflect->getFilename(), "tests/PHPUnit/Fixtures") @@ -87,6 +91,13 @@ class OmniFixture extends \Fixture foreach ($this->fixtures as $name => $fixture) { $fixture->setUp(); } + + Option::set("Tests.forcedNowTimestamp", $this->now->getTimestamp()); + + // launch archiving so tests don't run out of time + $date = Date::factory($this->dateTime)->toString(); + VisitsSummaryAPI::getInstance()->get($this->idSite, 'year', $date); + VisitsSummaryAPI::getInstance()->get($this->idSite, 'year', $date, urlencode($this->segment)); } public function tearDown() @@ -95,4 +106,10 @@ class OmniFixture extends \Fixture $fixture->tearDown(); } } + + public static function createAccessInstance() + { + Access::setSingletonInstance($access = new \Test_Access_OverrideLogin()); + \Piwik\Piwik::postEvent('Request.initAuthenticationObject'); + } }
\ No newline at end of file diff --git a/tests/PHPUnit/Fixtures/UITestFixture.php b/tests/PHPUnit/Fixtures/UITestFixture.php index 23fc35aac9..ed19987143 100644 --- a/tests/PHPUnit/Fixtures/UITestFixture.php +++ b/tests/PHPUnit/Fixtures/UITestFixture.php @@ -8,8 +8,8 @@ namespace Piwik\Tests\Fixtures; use Exception; -use Piwik\Access; use Piwik\AssetManager; +use Piwik\Access; use Piwik\Common; use Piwik\Date; use Piwik\Db; @@ -18,18 +18,28 @@ use Piwik\FrontController; use Piwik\Option; use Piwik\Plugins\SegmentEditor\API as APISegmentEditor; use Piwik\Plugins\UsersManager\API as UsersManagerAPI; -use Piwik\Plugins\VisitsSummary\API as VisitsSummaryAPI; use Piwik\WidgetsList; +use Fixture; /** * Fixture for UI tests. */ -class UITestFixture extends OmniFixture +class UITestFixture extends \Piwik_Test_Fixture_SqlDump { + const FIXTURE_LOCATION = '/tests/resources/OmniFixture-dump.sql.gz'; + + public function __construct() + { + $this->dumpUrl = PIWIK_INCLUDE_PATH . self::FIXTURE_LOCATION; + $this->tablesPrefix = ''; + } + public function setUp() { parent::setUp(); + self::updateDatabase(); + // make sure site has an early enough creation date (for period selector tests) Db::get()->update(Common::prefixTable("site"), array('ts_created' => '2011-01-01'), @@ -41,13 +51,6 @@ class UITestFixture extends OmniFixture DbHelper::createAnonymousUser(); UsersManagerAPI::getInstance()->setSuperUserAccess('superUserLogin', true); - - Option::set("Tests.forcedNowTimestamp", $this->now->getTimestamp()); - - // launch archiving so tests don't run out of time - $date = Date::factory($this->dateTime)->toString(); - VisitsSummaryAPI::getInstance()->get($this->idSite, 'year', $date); - VisitsSummaryAPI::getInstance()->get($this->idSite, 'year', $date, urlencode($this->segment)); } public function performSetUp($setupEnvironmentOnly = false) diff --git a/tests/PHPUnit/Integration/BackwardsCompatibility1XTest.php b/tests/PHPUnit/Integration/BackwardsCompatibility1XTest.php index da23211edf..f69e4d0c56 100644 --- a/tests/PHPUnit/Integration/BackwardsCompatibility1XTest.php +++ b/tests/PHPUnit/Integration/BackwardsCompatibility1XTest.php @@ -8,9 +8,7 @@ use Piwik\Common; use Piwik\Db; -use Piwik\Plugins\CoreUpdater\CoreUpdater; use Piwik\Plugins\VisitFrequency\API as VisitFrequencyApi; -use Piwik\Updater; /** * Tests that Piwik 2.0 works w/ data from Piwik 1.12. @@ -27,7 +25,10 @@ class Test_Piwik_Integration_BackwardsCompatibility1XTest extends IntegrationTes { parent::setUpBeforeClass(); - self::updateDatabase(); + $result = Fixture::updateDatabase(); + if ($result === false) { + throw new \Exception("Failed to update pre-2.0 database (nothing to update)."); + } // truncate log tables so old data won't be re-archived foreach (array('log_visit', 'log_link_visit_action', 'log_conversion', 'log_conversion_item') as $table) { @@ -49,23 +50,6 @@ class Test_Piwik_Integration_BackwardsCompatibility1XTest extends IntegrationTes VisitFrequencyApi::getInstance()->get(1, 'year', '2012-12-29'); } - private static function updateDatabase() - { - $updater = new Updater(); - $componentsWithUpdateFile = CoreUpdater::getComponentUpdates($updater); - if (empty($componentsWithUpdateFile)) { - throw new \Exception("Failed to update pre-2.0 database (nothing to update)."); - } - - $result = CoreUpdater::updateComponents($updater, $componentsWithUpdateFile); - if (!empty($result['coreError']) - && !empty($result['warnings']) - && !empty($result['errors']) - ) { - throw new \Exception("Failed to update pre-2.0 database (errors or warnings found): " . print_r($result, true)); - } - } - public function setUp() { parent::setUp(); diff --git a/tests/resources/OmniFixture-dump.sql.gz b/tests/resources/OmniFixture-dump.sql.gz Binary files differnew file mode 100644 index 0000000000..9c8dc1b75a --- /dev/null +++ b/tests/resources/OmniFixture-dump.sql.gz |