diff options
author | Thomas Steur <thomas.steur@googlemail.com> | 2014-10-05 15:05:47 +0400 |
---|---|---|
committer | Thomas Steur <thomas.steur@googlemail.com> | 2014-10-05 15:05:47 +0400 |
commit | 5a1eab97f54b44f57356b4276b9c9df2a8eef51b (patch) | |
tree | 83864ece2806ccf6e6bb49abf3fd65de92c13ad8 /tests/PHPUnit/System/RowEvolutionTest.php | |
parent | 19bcd2d262343eae9d553378e4c66ce7e033b4d8 (diff) |
refs #5940 put tests in correct folders, better testsuite names, some tests still fail and I cannot figure out why
Diffstat (limited to 'tests/PHPUnit/System/RowEvolutionTest.php')
-rwxr-xr-x | tests/PHPUnit/System/RowEvolutionTest.php | 239 |
1 files changed, 239 insertions, 0 deletions
diff --git a/tests/PHPUnit/System/RowEvolutionTest.php b/tests/PHPUnit/System/RowEvolutionTest.php new file mode 100755 index 0000000000..9eb55e282b --- /dev/null +++ b/tests/PHPUnit/System/RowEvolutionTest.php @@ -0,0 +1,239 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ +namespace Piwik\Tests\System; + +use Piwik\Tests\SystemTestCase; +use Piwik\Tests\Fixtures\TwoSitesManyVisitsOverSeveralDaysWithSearchEngineReferrers; + +/** + * Tests the method API.getRowEvolution + * + * @group RowEvolutionTest + * @group Plugins + */ +class RowEvolutionTest extends SystemTestCase +{ + public static $fixture = null; // initialized below class definition + + /** + * @dataProvider getApiForTesting + */ + public function testApi($api, $params) + { + $this->runApiTests($api, $params); + } + + public function getApiForTesting() + { + $idSite = self::$fixture->idSite; + $idSite2 = self::$fixture->idSite2; + $dateTime = self::$fixture->dateTime; + $keywords = self::$fixture->keywords; + + $return = array(); + + $config = array( + 'testSuffix' => '_referrer1', + 'idSite' => $idSite, + 'date' => $dateTime, + 'otherRequestParameters' => array( + 'date' => '2010-02-06,2010-03-06', + 'period' => 'day', + 'apiModule' => 'Referrers', + 'apiAction' => 'getWebsites', + 'label' => 'www.referrer2.com', + 'expanded' => 0 + ) + ); + + $return[] = array('API.getRowEvolution', $config); + + // Websites, hierarchical + $config['testSuffix'] = '_referrer2'; + $referrerLabel = urlencode('www.referrer0.com') . '>' . urlencode('theReferrerPage1.html'); + $config['otherRequestParameters']['label'] = ($referrerLabel); + $return[] = array('API.getRowEvolution', $config); + + // Websites, multiple labels including one hierarchical + $config['testSuffix'] = '_referrerMulti1'; + $referrerLabel = $referrerLabel . ',' . urlencode('www.referrer2.com'); + $config['otherRequestParameters']['label'] = ($referrerLabel); + $return[] = array('API.getRowEvolution', $config); + + // Keywords, label containing > and , + $config['otherRequestParameters']['apiAction'] = 'getKeywords'; + $config['testSuffix'] = '_LabelReservedCharacters'; + $keywordsStr = urlencode($keywords[0]) . ',' . urlencode($keywords[1]); + $config['otherRequestParameters']['label'] = ($keywordsStr); + $return[] = array('API.getRowEvolution', $config); + + // Keywords, hierarchical + $config['otherRequestParameters']['apiAction'] = 'getSearchEngines'; + $config['testSuffix'] = '_LabelReservedCharactersHierarchical'; + $keywordsStr = "Google>" . urlencode(strtolower($keywords[0])) + . ',Google>' . urlencode(strtolower($keywords[1])) + . ',Google>' . urlencode(strtolower($keywords[2])); + // Test multiple labels search engines, Google should also have a 'logo' entry + $config['otherRequestParameters']['label'] = ($keywordsStr . ",Google"); + $config['otherRequestParameters']['filter_limit'] = 1; // should have no effect + $return[] = array('API.getRowEvolution', $config); + + // Actions > Pages titles, standard label + $config['testSuffix'] = '_pageTitles'; + $config['periods'] = array('day', 'week'); + $config['otherRequestParameters']['apiModule'] = 'Actions'; + $config['otherRequestParameters']['apiAction'] = 'getPageTitles'; + $config['otherRequestParameters']['label'] = ('incredible title 0'); + $config['otherRequestParameters']['filter_limit'] = 1; // should have no effect + $return[] = array('API.getRowEvolution', $config); + + // Actions > Page titles, multiple labels + $config['testSuffix'] = '_pageTitlesMulti'; + $label = urlencode('incredible title 0') . ',' . urlencode('incredible title 2'); + $config['otherRequestParameters']['label'] = ($label); + $return[] = array('API.getRowEvolution', $config); + + // standard label, entry page titles + $config['testSuffix'] = '_entryPageTitles'; + $config['periods'] = 'day'; + $config['otherRequestParameters']['apiModule'] = 'Actions'; + $config['otherRequestParameters']['apiAction'] = 'getEntryPageTitles'; + $config['otherRequestParameters']['label'] = urlencode('incredible title 0'); + $return[] = array('API.getRowEvolution', $config); + + // Actions > Page URLS, hierarchical label + $config['testSuffix'] = '_pageUrls'; + $config['periods'] = array('range'); + $config['otherRequestParameters']['date'] = '2010-03-01,2010-03-06'; + $config['otherRequestParameters']['apiModule'] = 'Actions'; + $config['otherRequestParameters']['apiAction'] = 'getPageUrls'; + $config['otherRequestParameters']['label'] = ('my>dir>' . urlencode('/page3?foo=bar&baz=bar')); + $return[] = array('API.getRowEvolution', $config); + + // Goals > Visits Until Conversion, idGoal != 0 + $config['testSuffix'] = '_goals_visitsUntilConversion'; + $config['periods'] = array('day'); + $config['otherRequestParameters']['date'] = '2010-02-06,2010-03-06'; + $config['otherRequestParameters']['period'] = 'day'; + $config['otherRequestParameters']['apiModule'] = 'Goals'; + $config['otherRequestParameters']['apiAction'] = 'getVisitsUntilConversion'; + $config['otherRequestParameters']['label'] = ('1 visit, 2 visits'); + $config['otherRequestParameters']['idGoal'] = '2'; + $return[] = array('API.getRowEvolution', $config); + + // Goals > Visits Until Conversion, idGoal != 0, without specifying labels + $config['testSuffix'] = '_goals_visitsUntilConversion_WithoutLabels'; + $config['periods'] = array('day'); + $config['otherRequestParameters']['date'] = '2010-02-06,2010-03-06'; + $config['otherRequestParameters']['period'] = 'day'; + $config['otherRequestParameters']['apiModule'] = 'Goals'; + $config['otherRequestParameters']['apiAction'] = 'getVisitsUntilConversion'; + $config['otherRequestParameters']['label'] = false; + $config['otherRequestParameters']['filter_limit'] = 2; + $config['otherRequestParameters']['filter_sort_column'] = 'nb_conversions'; + $config['otherRequestParameters']['idGoal'] = '2'; + $return[] = array('API.getRowEvolution', $config); + + // test date range where most recent date has no data (for #3465) + $return[] = array('API.getRowEvolution', array( + 'testSuffix' => '_multipleDates_lastNoData', + 'periods' => 'month', + 'idSite' => $idSite, + 'date' => $dateTime, + 'otherRequestParameters' => array( + 'date' => '2010-02-01,2010-04-08', + 'period' => 'month', + 'apiModule' => 'Referrers', + 'apiAction' => 'getKeywords', + // no label + ) + )); + + // test that reports that process row labels are treated correctly + $return[] = array('API.getRowEvolution', array( + 'testSuffix' => '_processedRowLabel', + 'periods' => 'day', + 'idSite' => $idSite2, + 'date' => $dateTime, + 'otherRequestParameters' => array( + 'date' => '2010-03-01,2010-03-06', + 'period' => 'month', + 'apiModule' => 'UserSettings', + 'apiAction' => 'getBrowser', + 'label' => 'Firefox,Chrome,Opera' + ) + )); + + // test Row Evolution on Desktop VS Mobile, special "view" report + $return[] = array('API.getRowEvolution', array( + 'testSuffix' => '_mobileDesktop', + 'periods' => 'day', + 'idSite' => $idSite2, + 'date' => $dateTime, + 'otherRequestParameters' => array( + 'date' => '2010-03-01,2010-03-06', + 'period' => 'month', + 'apiModule' => 'UserSettings', + 'apiAction' => 'getMobileVsDesktop', + 'label' => 'Desktop,Mobile' + ) + )); + + // test multi row evolution w/ filter_limit to limit all available labels + $return[] = array('API.getRowEvolution', array( + 'testSuffix' => '_multiWithFilterLimit', + 'periods' => 'day', + 'idSite' => $idSite, + 'date' => $dateTime, + 'otherRequestParameters' => array( + 'date' => '2010-03-01,2010-03-06', + 'period' => 'day', + 'apiModule' => 'Referrers', + 'apiAction' => 'getWebsites', + 'filter_limit' => 3, // only 3 labels should show up + ) + )); + + // test multi row evolution when there is no data + $return[] = array('API.getRowEvolution', array( + 'testSuffix' => '_multiWithNoData', + 'periods' => 'day', + 'idSite' => $idSite, + 'date' => $dateTime, + 'otherRequestParameters' => array( + 'date' => '2010-04-01,2010-04-06', + 'period' => 'day', + 'apiModule' => 'Referrers', + 'apiAction' => 'getWebsites', + // no label + ) + )); + + // (non-rowevolution test) test flattener w/ search engines to make sure + // queued filters are not applied twice + $return[] = array('Referrers.getSearchEngines', array( + 'testSuffix' => '_flatFilters', + 'periods' => 'month', + 'idSite' => $idSite, + 'date' => '2010-02-01', + 'otherRequestParameters' => array( + 'flat' => 1, + 'expanded' => '0' + ) + )); + + return $return; + } + + public static function getOutputPrefix() + { + return 'RowEvolution'; + } +} + +RowEvolutionTest::$fixture = new TwoSitesManyVisitsOverSeveralDaysWithSearchEngineReferrers();
\ No newline at end of file |