Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authordiosmosis <benakamoorthi@fastmail.fm>2014-07-08 08:17:22 +0400
committerdiosmosis <benakamoorthi@fastmail.fm>2014-07-08 08:17:22 +0400
commit1e4c9506ad5bf927a40d4fd6a6092d63fde5b881 (patch)
tree76711401d225bb9408b2f0567fcdb86764cb741c /tests
parentdea3e06134c54116171d73ef72d48b6d2a7f330a (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.php21
-rw-r--r--tests/PHPUnit/Fixtures/OmniFixture.php17
-rw-r--r--tests/PHPUnit/Fixtures/UITestFixture.php23
-rw-r--r--tests/PHPUnit/Integration/BackwardsCompatibility1XTest.php24
-rw-r--r--tests/resources/OmniFixture-dump.sql.gzbin0 -> 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
new file mode 100644
index 0000000000..9c8dc1b75a
--- /dev/null
+++ b/tests/resources/OmniFixture-dump.sql.gz
Binary files differ