Skip to content
Extraits de code Groupes Projets
Valider fa36f400 rédigé par mattab's avatar mattab
Parcourir les fichiers

Adding failing test case showing the bug (visit over several days, creates too...

Adding failing test case showing the bug (visit over several days, creates too many visits) refs #3957
parent 32266f76
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -734,6 +734,11 @@ class Piwik_Tracker
self::updateTrackerConfig('use_third_party_id_cookie', 1);
}
// Tests using window_look_back_for_visitor
if (Piwik_Common::getRequestVar('forceLargeWindowLookBackForVisitor', false, null, $args) == 1) {
self::updateTrackerConfig('window_look_back_for_visitor', 2678400);
}
// Tests can force the enabling of IP anonymization
$forceIpAnonymization = false;
if (Piwik_Common::getRequestVar('forceIpAnonymization', false, null, $args) == 1) {
......
......@@ -22,6 +22,7 @@ class Test_Piwik_Fixture_VisitsOverSeveralDays extends Test_Piwik_BaseFixture
public $idSite = 1;
public $idSite2 = 2;
public $forceLargeWindowLookBackForVisitor = false;
// one per visit
public $referrerUrls = array(
......@@ -57,16 +58,18 @@ class Test_Piwik_Fixture_VisitsOverSeveralDays extends Test_Piwik_BaseFixture
private function trackVisits()
{
$dateTimes = $this->dateTimes;
$idSite = $this->idSite;
$i = 0;
$days = 0;
$ridx = 0;
foreach ($dateTimes as $dateTime) {
$i++;
$visitor = self::getTracker($idSite, $dateTime, $defaultInit = true);
$days++;
// Fake the visit count cookie
$visitor->setDebugStringAppend("&_idvc=$i");
$debugStringAppend = "&_idvc=$days";
$visitor = $this->makeTracker($this->idSite, $dateTime, $debugStringAppend);
// FIRST VISIT THIS DAY
$visitor->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(0.1)->getDatetime());
$visitor->setUrl('http://example.org/homepage');
$visitor->setUrlReferrer($this->referrerUrls[$ridx++]);
......@@ -79,15 +82,14 @@ class Test_Piwik_Fixture_VisitsOverSeveralDays extends Test_Piwik_BaseFixture
$visitor->setUrl('http://example.org/news');
self::checkResponse($visitor->doTrackPageView('ou pas'));
// SECOND VISIT THIS DAY
$visitor->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(1)->getDatetime());
$visitor->setUrl('http://example.org/news');
$visitor->setUrlReferrer($this->referrerUrls[$ridx++]);
self::checkResponse($visitor->doTrackPageView('ou pas'));
if ($i <= 3) {
$visitor = self::getTracker($this->idSite2, $dateTime, $defaultInit = true);
if ($days <= 3) {
$visitor = $this->makeTracker($this->idSite2, $dateTime);
$visitor->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(0.1)->getDatetime());
$visitor->setUrl('http://example.org/homepage');
$visitor->setUrlReferrer($this->referrerUrls[$ridx - 1]);
......@@ -95,4 +97,21 @@ class Test_Piwik_Fixture_VisitsOverSeveralDays extends Test_Piwik_BaseFixture
}
}
}
protected function makeTracker($idSite, $dateTime, $debugStringAppend = '')
{
$tracker = parent::getTracker($idSite, $dateTime, $defaultInit = true);
if($this->forceLargeWindowLookBackForVisitor) {
// Fakes the config value window_look_back_for_visitor tested in TrackerWindowLookBack
$debugStringAppend .= '&forceLargeWindowLookBackForVisitor=1';
// Here we force the visitor ID cookie value sent to piwik.php, to create a "unique visitor" for all visits in fixture
// we do not use setVisitorId(), because we want shouldLookupOneVisitorFieldOnly() to return false for this particular test case
$debugStringAppend .= '&_id=2f4f673d4732e11d';
$tracker->setDebugStringAppend($debugStringAppend);
}
return $tracker;
}
}
<?php
/**
* Piwik - Open source web analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
/**
* Testing that, when using window_look_back_for_visitor with a high value,
* works well with the use case of a returning visitor being assigned to today's visit
*
*/
class Test_Piwik_Integration_TrackerWindowLookBack extends IntegrationTestCase
{
public static $fixture = null; // initialized below class definition
/**
* @dataProvider getApiForTesting
* @group Integration
* @group OneVisitorOneWebsite_SeveralDaysDateRange
*/
public function testApi($api, $params)
{
$this->runApiTests($api, $params);
}
public function getApiForTesting()
{
$idSite = self::$fixture->idSite;
return array(
array('VisitsSummary.getVisits', array( 'date' => '2010-12-01,2011-01-31',
'periods' => array('range'),
'idSite' => $idSite,
))
);
}
public function getOutputPrefix()
{
return 'TrackerWindowLookBack';
}
}
Test_Piwik_Integration_TrackerWindowLookBack::$fixture = new Test_Piwik_Fixture_VisitsOverSeveralDays();
Test_Piwik_Integration_TrackerWindowLookBack::$fixture->forceLargeWindowLookBackForVisitor = true;
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter