diff --git a/tests/PHPUnit/Fixtures/SomeVisitsManyPageviewsWithTransitions.php b/tests/PHPUnit/Fixtures/SomeVisitsManyPageviewsWithTransitions.php index ed793bb0bc19082425d56e4e9a86d17b103fed5a..d221194cb180738bcfd60c21b666b7d735bee9a7 100644 --- a/tests/PHPUnit/Fixtures/SomeVisitsManyPageviewsWithTransitions.php +++ b/tests/PHPUnit/Fixtures/SomeVisitsManyPageviewsWithTransitions.php @@ -30,64 +30,117 @@ class Test_Piwik_Fixture_SomeVisitsManyPageviewsWithTransitions extends Test_Piw private function setUpWebsitesAndGoals() { - self::createWebsite($this->dateTime); + self::createWebsite($this->dateTime, $ecommerce = 0, $siteName = 'Piwik test', $siteUrl = false, + $siteSearch = 1); } private function trackVisits() { - $visit1 = $this->createVisit(1); - $visit1->setUrlReferrer('http://www.google.com.vn/url?sa=t&rct=j&q=%3C%3E%26%5C%22the%20pdo%20extension%20is%20required%20for%20this%20adapter%20but%20the%20extension%20is%20not%20loaded&source=web&cd=4&ved=0FjAD&url=http%3A%2F%2Fforum.piwik.org%2Fread.php%3F2%2C1011&ei=y-HHAQ&usg=AFQjCN2-nt5_GgDeg&cad=rja'); - $this->trackPageView($visit1, 0, 'page/one.html'); - $this->trackPageView($visit1, 0.1, 'sub/dir/page2.html'); - $this->trackPageView($visit1, 0.2, 'page/one.html'); - $this->trackPageView($visit1, 0.3, 'the/third_page.html?foo=bar'); - $this->trackPageView($visit1, 0.4, 'page/one.html'); - $this->trackPageView($visit1, 0.5, 'the/third_page.html?foo=bar'); - $this->trackPageView($visit1, 0.6, 'page/one.html'); - $this->trackPageView($visit1, 0.7, 'the/third_page.html?foo=baz#anchor1'); - $this->trackPageView($visit1, 0.8, 'page/one.html'); - $this->trackPageView($visit1, 0.9, 'page/one.html'); - $this->trackPageView($visit1, 1.0, 'the/third_page.html?foo=baz#anchor2'); - $this->trackPageView($visit1, 1.1, 'page/one.html'); - $this->trackPageView($visit1, 1.2, 'page3.html'); + $tracker = self::getTracker($this->idSite, $this->dateTime, $defaultInit = true); + $tracker->setTokenAuth(self::getTokenAuth()); + $tracker->enableBulkTracking(); + + $tracker->setIp('156.5.3.1'); + $tracker->setUrlReferrer('http://www.google.com.vn/url?sa=t&rct=j&q=%3C%3E%26%5C%22the%20pdo%20extension%20is%20required%20for%20this%20adapter%20but%20the%20extension%20is%20not%20loaded&source=web&cd=4&ved=0FjAD&url=http%3A%2F%2Fforum.piwik.org%2Fread.php%3F2%2C1011&ei=y-HHAQ&usg=AFQjCN2-nt5_GgDeg&cad=rja'); + $this->trackPageView($tracker, 0, 'page/one.html'); + $this->trackPageView($tracker, 0.1, 'sub/dir/page2.html'); + $this->trackPageView($tracker, 0.2, 'page/one.html'); + $this->trackPageView($tracker, 0.3, 'the/third_page.html?foo=bar'); + $this->trackPageView($tracker, 0.4, 'page/one.html'); + $this->trackPageView($tracker, 0.5, 'the/third_page.html?foo=bar'); + $this->trackPageView($tracker, 0.6, 'page/one.html'); + $this->trackPageView($tracker, 0.7, 'the/third_page.html?foo=baz#anchor1'); + $this->trackPageView($tracker, 0.8, 'page/one.html'); + $this->trackPageView($tracker, 0.9, 'page/one.html'); + $this->trackPageView($tracker, 1.0, 'the/third_page.html?foo=baz#anchor2'); + $this->trackPageView($tracker, 1.1, 'page/one.html'); + $this->trackPageView($tracker, 1.2, 'page3.html'); - $visit2 = $this->createVisit(2); - $visit2->setUrlReferrer('http://www.external.com.vn/referrerPage-notCounted.html'); - $this->trackPageView($visit2, 0, 'sub/dir/page2.html'); - $this->trackPageView($visit2, 0.1, 'the/third_page.html?foo=bar'); - $this->trackPageView($visit2, 0.2, 'page/one.html'); - $this->trackPageView($visit2, 0.3, 'the/third_page.html?foo=baz#anchor1'); + $tracker->setIp('156.5.3.2'); + $tracker->setNewVisitorId(); + $tracker->setUrlReferrer('http://www.external.com.vn/referrerPage-notCounted.html'); + $this->trackPageView($tracker, 0, 'sub/dir/page2.html'); + $this->trackPageView($tracker, 0.1, 'the/third_page.html?foo=bar'); + $this->trackPageView($tracker, 0.2, 'page/one.html'); + $this->trackPageView($tracker, 0.3, 'the/third_page.html?foo=baz#anchor1'); - $visit3 = $this->createVisit(3); - $visit3->setUrlReferrer('http://www.external.com.vn/referrerPage-counted.html'); - $this->trackPageView($visit3, 0.1, 'page/one.html'); - $this->trackPageView($visit3, 0.2, 'sub/dir/page2.html'); - $this->trackPageView($visit3, 0.3, 'page/one.html'); + $tracker->setIp('156.5.3.3'); + $tracker->setNewVisitorId(); + $tracker->setUrlReferrer('http://www.external.com.vn/referrerPage-counted.html'); + $this->trackPageView($tracker, 0.1, 'page/one.html'); + $this->trackPageView($tracker, 0.2, 'sub/dir/page2.html'); + $this->trackPageView($tracker, 0.3, 'page/one.html'); - $visit4 = $this->createVisit(4); - $this->trackPageView($visit4, 0, 'page/one.html?pk_campaign=TestCampaign&pk_kwd=TestKeyword'); + $tracker->setIp('156.5.3.4'); + $tracker->setNewVisitorId(); + $tracker->setUrlReferrer(''); + $this->trackPageView($tracker, 0, 'page/one.html?pk_campaign=TestCampaign&pk_kwd=TestKeyword'); - $visit5 = $this->createVisit(5); - $this->trackPageView($visit5, 0, 'page/one.html'); + $tracker->setIp('156.5.3.5'); + $tracker->setNewVisitorId(); + $tracker->setUrlReferrer(''); + $this->trackPageView($tracker, 0, 'page/one.html'); + + // perform site search before & after page/one.html, then outlink after page/one.html, then download + // before & after + $tracker->setIp('156.5.3.6'); + $tracker->setNewVisitorId(); + $this->trackPageView($tracker, 0, 'page/search.html#q=mykwd', $this->dateTime, $pageViewType = 'site-search', + $searchKeyword = 'mykwd', $searchCategory = 'mysearchcat'); + $this->trackPageView($tracker, 0.1, 'page/one.html'); + $this->trackPageView($tracker, 0.2, 'page/search.html#q=anotherkwd', $this->dateTime, + $pageViewType = 'site-search', $searchKeyword = 'anotherkwd', + $searchCategory = 'mysearchcat'); + $this->trackPageView($tracker, 0.25, 'page/one.html'); + $this->trackPageView($tracker, 0.3, 'to/outlink/page.html', $this->dateTime, $pageViewType = 'outlink'); + $this->trackPageView($tracker, 0.35, 'page/one.html'); + $this->trackPageView($tracker, 0.4, '', $this->dateTime, $pageViewType = 'download'); + $this->trackPageView($tracker, 0.45, 'page/one.html'); + $this->trackPageView($tracker, 0.5, '', $this->dateTime, $pageViewType = 'download'); + $this->trackPageView($tracker, 0.55, 'page/one.html'); + $this->trackPageView($tracker, 0.6, 'to/outlink/page2.html', $this->dateTime, $pageViewType = 'outlink'); + + // perform new searches/outlinks before & after in later date to test 'month' period + $laterDate = Piwik_Date::factory($this->dateTime)->addDay(8)->getDatetime(); + $tracker->setIp('156.5.3.7'); + $tracker->setNewVisitorId(); + $this->trackPageView($tracker, 0, 'page/search.html#q=thirdkwd', $laterDate, $pageViewType = 'site-search', + $searchKeyword = 'thirdkwd', $searchCategory = 'mysearchcat'); + $this->trackPageView($tracker, 0.1, 'page/one.html', $laterDate); + $this->trackPageView($tracker, 0.15, 'to/another/outlink.html', $laterDate, $pageViewType = 'outlink'); + $this->trackPageView($tracker, 0.2, 'page/one.html', $laterDate); + $this->trackPageView($tracker, 0.25, 'page/search.html#q=anotherkwd', $laterDate, + $pageViewType = 'site-search', $searchKeyword = 'anotherkwd', + $searchCategory = 'mysearchcat'); + + self::checkResponse($tracker->doBulkTrack()); } - private function createVisit($id) - { - $visit = self::getTracker($this->idSite, $this->dateTime, $defaultInit = true); - $visit->setIp('156.5.3.' . $id); - return $visit; - } - - private function trackPageView($visit, $timeOffset, $path) + private function trackPageView($visit, $timeOffset, $path, $dateTime = null, $pageViewType = 'normal', + $searchKeyword = null, $searchCategory = null) { + if ($dateTime === null) { + $dateTime = $this->dateTime; + } + // rotate protocol and www to make sure it doesn't matter $prefixes = array('http://', 'http://www.', 'https://', 'https://'); - $prefix = $prefixes[$this->prefixCounter]; - $this->prefixCounter = ($this->prefixCounter + 1) % 4; + $prefix = $prefixes[$this->prefixCounter % 4]; + $this->prefixCounter = $this->prefixCounter + 1; /** @var $visit PiwikTracker */ $visit->setUrl($prefix . 'example.org/' . $path); - $visit->setForceVisitDateTime(Piwik_Date::factory($this->dateTime)->addHour($timeOffset)->getDatetime()); - self::checkResponse($visit->doTrackPageView('page title')); + $visit->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour($timeOffset)->getDatetime()); + + if ($pageViewType == 'normal') { + self::assertTrue($visit->doTrackPageView('page title - ' . $path)); + } else if ($pageViewType == 'outlink') { + self::assertTrue($visit->doTrackAction($prefix . 'anothersite.com/' . $path, 'link')); + } else if ($pageViewType == 'download') { + $downloadUrl = $prefix . 'example.org/downloads/' . $this->prefixCounter . '.tar.gz'; + self::assertTrue($visit->doTrackAction($downloadUrl, 'download')); + } else if ($pageViewType == 'site-search') { + self::assertTrue($visit->doTrackSiteSearch($searchKeyword, $searchCategory, $this->prefixCounter)); + } } } diff --git a/tests/PHPUnit/Integration/TransitionsTest.php b/tests/PHPUnit/Integration/TransitionsTest.php index 0523feec4c3333be9a7309e2deb467675858f5ce..318a6bc0ce53c92443f43f0d9ebd469e64e8ede6 100644 --- a/tests/PHPUnit/Integration/TransitionsTest.php +++ b/tests/PHPUnit/Integration/TransitionsTest.php @@ -23,6 +23,46 @@ class Test_Piwik_Integration_Transitions extends IntegrationTestCase $return[] = array('Transitions.getTransitionsForPageUrl', array( 'idSite' => self::$fixture->idSite, 'date' => self::$fixture->dateTime, + 'periods' => array('day', 'month'), + 'testSuffix' => '_noLimit', + 'otherRequestParameters' => array( + 'pageUrl' => 'http://example.org/page/one.html', + ) + )); + $return[] = array('Transitions.getTransitionsForPageTitle', array( + 'idSite' => self::$fixture->idSite, + 'date' => self::$fixture->dateTime, + 'periods' => array('day', 'month'), + 'testSuffix' => '_noLimit', + 'otherRequestParameters' => array( + 'pageTitle' => 'page title - page/one.html', + ) + )); + + // test w/ pages that don't exist + $return[] = array('Transitions.getTransitionsForPageUrl', array( + 'idSite' => self::$fixture->idSite, + 'date' => self::$fixture->dateTime, + 'periods' => array('day', 'month'), + 'testSuffix' => '_noData', + 'otherRequestParameters' => array( + 'pageUrl' => 'http://example.org/not/a/page.html', + ) + )); + $return[] = array('Transitions.getTransitionsForPageTitle', array( + 'idSite' => self::$fixture->idSite, + 'date' => self::$fixture->dateTime, + 'periods' => array('day', 'month'), + 'testSuffix' => '_noData', + 'otherRequestParameters' => array( + 'pageTitle' => 'not a page title', + ) + )); + + $return[] = array('Transitions.getTransitionsForPageUrl', array( // test w/ limiting + 'idSite' => self::$fixture->idSite, + 'date' => self::$fixture->dateTime, + 'periods' => array('day', 'month'), 'otherRequestParameters' => array( 'pageUrl' => 'http://example.org/page/one.html', 'limitBeforeGrouping' => 2