Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
/**
* Tests the transitions plugin.
*/
class Test_Piwik_Integration_Transitions extends IntegrationTestCase
{
protected static $dateTime = '2010-03-06 11:22:33';
protected static $idSite = 1;
private static $prefixCounter = 0;
public static function setUpBeforeClass()
{
parent::setUpBeforeClass();
try {
self::setUpWebsitesAndGoals();
self::trackVisits();
} catch(Exception $e) {
// Skip whole test suite if an error occurs during setup
throw new PHPUnit_Framework_SkippedTestSuiteError($e->getMessage());
}
}
/**
* @dataProvider getApiForTesting
* @group Integration
* @group Transitions
*/
public function testApi($api, $params)
{
$this->runApiTests($api, $params);
}
public function getApiForTesting()
{
$return = array();
$return[] = array('Transitions.getTransitionsForPageUrl', array(
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
'idSite' => self::$idSite,
'date' => self::$dateTime,
'otherRequestParameters' => array(
'pageUrl' => 'http://example.org/page/one.html',
'limitBeforeGrouping' => 2
)
));
return $return;
}
public function getOutputPrefix()
{
return 'Transitions';
}
protected static function setUpWebsitesAndGoals()
{
self::createWebsite(self::$dateTime);
}
protected static function trackVisits()
{
$visit1 = self::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');
self::trackPageView($visit1, 0, 'page/one.html');
self::trackPageView($visit1, 0.1, 'sub/dir/page2.html');
self::trackPageView($visit1, 0.2, 'page/one.html');
self::trackPageView($visit1, 0.3, 'the/third_page.html?foo=bar');
self::trackPageView($visit1, 0.4, 'page/one.html');
self::trackPageView($visit1, 0.5, 'the/third_page.html?foo=bar');
self::trackPageView($visit1, 0.6, 'page/one.html');
self::trackPageView($visit1, 0.7, 'the/third_page.html?foo=baz#anchor1');
self::trackPageView($visit1, 0.8, 'page/one.html');
self::trackPageView($visit1, 0.9, 'page/one.html');
self::trackPageView($visit1, 1.0, 'the/third_page.html?foo=baz#anchor2');
self::trackPageView($visit1, 1.1, 'page/one.html');
self::trackPageView($visit1, 1.2, 'page3.html');
$visit2 = self::createVisit(2);
$visit2->setUrlReferrer('http://www.external.com.vn/referrerPage-notCounted.html');
self::trackPageView($visit2, 0, 'sub/dir/page2.html');
self::trackPageView($visit2, 0.1, 'the/third_page.html?foo=bar');
self::trackPageView($visit2, 0.2, 'page/one.html');
self::trackPageView($visit2, 0.3, 'the/third_page.html?foo=baz#anchor1');
$visit3 = self::createVisit(3);
$visit3->setUrlReferrer('http://www.external.com.vn/referrerPage-counted.html');
self::trackPageView($visit3, 0.1, 'page/one.html');
self::trackPageView($visit3, 0.2, 'sub/dir/page2.html');
self::trackPageView($visit3, 0.3, 'page/one.html');
$visit4 = self::createVisit(4);
self::trackPageView($visit4, 0, 'page/one.html?pk_campaign=TestCampaign&pk_kwd=TestKeyword');
$visit5 = self::createVisit(5);
self::trackPageView($visit5, 0, 'page/one.html');
}
private static function createVisit($id) {
$visit = self::getTracker(self::$idSite, self::$dateTime, $defaultInit = true);
$visit->setIp('156.5.3.'.$id);
return $visit;
}
private static function trackPageView($visit, $timeOffset, $path) {
// rotate protocol and www to make sure it doesn't matter
$prefixes = array('http://', 'http://www.', 'https://', 'https://');
$prefix = $prefixes[self::$prefixCounter];
self::$prefixCounter = (self::$prefixCounter + 1) % 4;
/** @var $visit PiwikTracker */
$visit->setUrl($prefix.'example.org/'.$path);
$visit->setForceVisitDateTime(Piwik_Date::factory(self::$dateTime)->addHour($timeOffset)->getDatetime());
self::checkResponse($visit->doTrackPageView('page title'));
}
}