From be25924b5083f17333636df7ddcc4d2f65d97b7f Mon Sep 17 00:00:00 2001
From: mattab <matthieu.aubry@gmail.com>
Date: Wed, 1 Oct 2014 14:10:40 +1300
Subject: [PATCH] Refs #6313 Adding test case showing the bug (it creates a new
 visit but we want this visit to be re-used)

---
 .../FewVisitsWithSetVisitorIdAndUserId.php    |  9 +++-
 ...ITest__Live.getLastVisitsDetails_range.xml |  2 +-
 ...torId__Live.getLastVisitsDetails_month.xml | 50 +++++++++++++------
 ...serId_VisitorId__VisitsSummary.get_day.xml | 14 +++---
 ...rId_VisitorId__VisitsSummary.get_month.xml | 14 +++---
 ...erId_VisitorId__VisitsSummary.get_week.xml | 14 +++---
 ...erId_VisitorId__VisitsSummary.get_year.xml | 12 ++---
 7 files changed, 69 insertions(+), 46 deletions(-)

diff --git a/tests/PHPUnit/Fixtures/FewVisitsWithSetVisitorIdAndUserId.php b/tests/PHPUnit/Fixtures/FewVisitsWithSetVisitorIdAndUserId.php
index 30accf676d..7f7fc8c3d1 100644
--- a/tests/PHPUnit/Fixtures/FewVisitsWithSetVisitorIdAndUserId.php
+++ b/tests/PHPUnit/Fixtures/FewVisitsWithSetVisitorIdAndUserId.php
@@ -80,12 +80,19 @@ class FewVisitsWithSetVisitorId extends Fixture
 
     private function trackVisits_setUserId()
     {
+        $userId = self::USER_ID_EXAMPLE_COM;
         // total = 2 visitors, 3 page views
         $t = self::getTracker($this->idSite, $this->dateTime, $defaultInit = true);
 
         // First, some basic tests
         $this->settingInvalidUserIdShouldThrow($t);
 
+        // We create a visit with no User ID.
+        // When User ID  will be set below, then it will UPDATE this visit here that starts without UserID
+        $t->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(1.9)->getDatetime());
+        $t->setUrl('http://example.org/no-user-id-set-but-should-appear-in-user-id-visit');
+        self::checkResponse($t->doTrackPageView('no User Id set but it should appear in '. $userId .'!'));
+
         // A NEW VISIT
         // Setting both Visitor ID and User ID
         // -> User ID takes precedence
@@ -98,7 +105,6 @@ class FewVisitsWithSetVisitorId extends Fixture
         $this->assertEquals($generatedVisitorId, $t->getVisitorId());
 
         // Set User ID
-        $userId = self::USER_ID_EXAMPLE_COM;
         $t->setUserId($userId);
         $this->assertEquals($userId, $t->getUserId());
 
@@ -113,7 +119,6 @@ class FewVisitsWithSetVisitorId extends Fixture
         $t->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(2.1)->getDatetime());
         self::checkResponse($t->doTrackPageView('second page'));
 
-
         // A NEW VISIT WITH A SET USER ID
         // Change User ID -> This will create a new visit
         $t->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(2.2)->getDatetime());
diff --git a/tests/PHPUnit/Integration/expected/test_AutoSuggestAPITest__Live.getLastVisitsDetails_range.xml b/tests/PHPUnit/Integration/expected/test_AutoSuggestAPITest__Live.getLastVisitsDetails_range.xml
index 6f772e2ef7..3b8eb5d11a 100644
--- a/tests/PHPUnit/Integration/expected/test_AutoSuggestAPITest__Live.getLastVisitsDetails_range.xml
+++ b/tests/PHPUnit/Integration/expected/test_AutoSuggestAPITest__Live.getLastVisitsDetails_range.xml
@@ -446,7 +446,7 @@
 		
 		
 		
-		<visitorType>returningCustomer</visitorType>
+    		<visitorType>returningCustomer</visitorType>
 		<visitorTypeIcon>plugins/Live/images/returningVisitor.gif</visitorTypeIcon>
 		<visitConverted>1</visitConverted>
 		<visitConvertedIcon>plugins/Morpheus/images/goal.png</visitConvertedIcon>
diff --git a/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__Live.getLastVisitsDetails_month.xml b/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__Live.getLastVisitsDetails_month.xml
index 1946cec5ba..4bab18470e 100644
--- a/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__Live.getLastVisitsDetails_month.xml
+++ b/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__Live.getLastVisitsDetails_month.xml
@@ -49,6 +49,24 @@
 	</row>
 	<row>
 		<idVisit>3</idVisit>
+		<visitorId>6be121d126d93581</visitorId>
+		<actionDetails>
+			<row>
+				<type>action</type>
+				<url>http://example.org/no-user-id-set-but-should-appear-in-user-id-visit</url>
+				<pageTitle>no User Id set but it should appear in email@example.com!</pageTitle>
+				<pageIdAction>6</pageIdAction>
+				<serverTimePretty>Sat 6 Mar 13:16:33</serverTimePretty>
+				<pageId>4</pageId>
+				<icon />
+			</row>
+		</actionDetails>
+		<lastActionDateTime>2010-03-06 13:16:33</lastActionDateTime>
+		<actions>1</actions>
+		<userId>0</userId>
+	</row>
+	<row>
+		<idVisit>4</idVisit>
 		<visitorId>9395988394d4568d</visitorId>
 		<actionDetails>
 			<row>
@@ -57,7 +75,7 @@
 				<pageTitle>incredible title!</pageTitle>
 				<pageIdAction>2</pageIdAction>
 				<serverTimePretty>Sat 6 Mar 13:22:33</serverTimePretty>
-				<pageId>4</pageId>
+				<pageId>5</pageId>
 				<timeSpent>360</timeSpent>
 				<timeSpentPretty>6 min 0s</timeSpentPretty>
 				<icon />
@@ -68,7 +86,7 @@
 				<pageTitle>second page</pageTitle>
 				<pageIdAction>2</pageIdAction>
 				<serverTimePretty>Sat 6 Mar 13:28:33</serverTimePretty>
-				<pageId>5</pageId>
+				<pageId>6</pageId>
 				<icon />
 			</row>
 		</actionDetails>
@@ -77,7 +95,7 @@
 		<userId>email@example.com</userId>
 	</row>
 	<row>
-		<idVisit>4</idVisit>
+		<idVisit>5</idVisit>
 		<visitorId>c9ade7a5a103b2ed</visitorId>
 		<actionDetails>
 			<row>
@@ -86,7 +104,7 @@
 				<pageTitle>a new user id was set -&gt; new visit</pageTitle>
 				<pageIdAction>2</pageIdAction>
 				<serverTimePretty>Sat 6 Mar 13:34:33</serverTimePretty>
-				<pageId>6</pageId>
+				<pageId>7</pageId>
 				<icon />
 			</row>
 		</actionDetails>
@@ -95,16 +113,16 @@
 		<userId>new-email@example.com</userId>
 	</row>
 	<row>
-		<idVisit>5</idVisit>
+		<idVisit>6</idVisit>
 		<visitorId>c9ade7a5a103b2ed</visitorId>
 		<actionDetails>
 			<row>
 				<type>action</type>
 				<url>http://example.org/home</url>
 				<pageTitle>same user id was set -&gt; this is the same unique user</pageTitle>
-				<pageIdAction>8</pageIdAction>
+				<pageIdAction>10</pageIdAction>
 				<serverTimePretty>Sat 6 Mar 16:22:33</serverTimePretty>
-				<pageId>7</pageId>
+				<pageId>8</pageId>
 				<timeSpent>360</timeSpent>
 				<timeSpentPretty>6 min 0s</timeSpentPretty>
 				<icon />
@@ -113,9 +131,9 @@
 				<type>action</type>
 				<url>http://example.org/home</url>
 				<pageTitle>second pageview - by this user id</pageTitle>
-				<pageIdAction>8</pageIdAction>
+				<pageIdAction>10</pageIdAction>
 				<serverTimePretty>Sat 6 Mar 16:28:33</serverTimePretty>
-				<pageId>8</pageId>
+				<pageId>9</pageId>
 				<icon />
 			</row>
 			<row>
@@ -150,16 +168,16 @@
 		<userId>new-email@example.com</userId>
 	</row>
 	<row>
-		<idVisit>6</idVisit>
+		<idVisit>7</idVisit>
 		<visitorId>5e15b4d842cc294d</visitorId>
 		<actionDetails>
 			<row>
 				<type>action</type>
 				<url>http://example.org/home</url>
 				<pageTitle>pageview - should not be tracked by our user id but in a new visit</pageTitle>
-				<pageIdAction>8</pageIdAction>
+				<pageIdAction>10</pageIdAction>
 				<serverTimePretty>Sat 6 Mar 16:28:33</serverTimePretty>
-				<pageId>9</pageId>
+				<pageId>10</pageId>
 				<icon />
 			</row>
 		</actionDetails>
@@ -168,7 +186,7 @@
 		<userId>0</userId>
 	</row>
 	<row>
-		<idVisit>7</idVisit>
+		<idVisit>8</idVisit>
 		<visitorId>9395988394d4568d</visitorId>
 		<actionDetails>
 			<row>
@@ -177,7 +195,7 @@
 				<pageTitle>Page view by email@example.com</pageTitle>
 				<pageIdAction>2</pageIdAction>
 				<serverTimePretty>Sun 14 Mar 11:22:33</serverTimePretty>
-				<pageId>10</pageId>
+				<pageId>11</pageId>
 				<icon />
 			</row>
 		</actionDetails>
@@ -186,7 +204,7 @@
 		<userId>email@example.com</userId>
 	</row>
 	<row>
-		<idVisit>8</idVisit>
+		<idVisit>9</idVisit>
 		<visitorId>72d4b5565daf5546</visitorId>
 		<actionDetails>
 			<row>
@@ -195,7 +213,7 @@
 				<pageTitle>A page view by new-user-id@one-weeklater</pageTitle>
 				<pageIdAction>2</pageIdAction>
 				<serverTimePretty>Sun 14 Mar 11:46:33</serverTimePretty>
-				<pageId>11</pageId>
+				<pageId>12</pageId>
 				<icon />
 			</row>
 		</actionDetails>
diff --git a/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__VisitsSummary.get_day.xml b/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__VisitsSummary.get_day.xml
index 4a8baf7fc3..fae6d03541 100644
--- a/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__VisitsSummary.get_day.xml
+++ b/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__VisitsSummary.get_day.xml
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_uniq_visitors>5</nb_uniq_visitors>
+	<nb_uniq_visitors>6</nb_uniq_visitors>
 	<nb_users>2</nb_users>
-	<nb_visits>6</nb_visits>
-	<nb_actions>9</nb_actions>
+	<nb_visits>7</nb_visits>
+	<nb_actions>10</nb_actions>
 	<nb_visits_converted>1</nb_visits_converted>
-	<bounce_count>3</bounce_count>
+	<bounce_count>4</bounce_count>
 	<sum_visit_length>1623</sum_visit_length>
 	<max_actions>2</max_actions>
-	<bounce_rate>50%</bounce_rate>
-	<nb_actions_per_visit>1.5</nb_actions_per_visit>
-	<avg_time_on_site>271</avg_time_on_site>
+	<bounce_rate>57%</bounce_rate>
+	<nb_actions_per_visit>1.4</nb_actions_per_visit>
+	<avg_time_on_site>232</avg_time_on_site>
 </result>
\ No newline at end of file
diff --git a/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__VisitsSummary.get_month.xml b/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__VisitsSummary.get_month.xml
index 94ed6f59e0..fb725dd44a 100644
--- a/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__VisitsSummary.get_month.xml
+++ b/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__VisitsSummary.get_month.xml
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_uniq_visitors>6</nb_uniq_visitors>
+	<nb_uniq_visitors>7</nb_uniq_visitors>
 	<nb_users>3</nb_users>
-	<nb_visits>8</nb_visits>
-	<nb_actions>11</nb_actions>
+	<nb_visits>9</nb_visits>
+	<nb_actions>12</nb_actions>
 	<nb_visits_converted>1</nb_visits_converted>
-	<bounce_count>5</bounce_count>
+	<bounce_count>6</bounce_count>
 	<sum_visit_length>1623</sum_visit_length>
 	<max_actions>2</max_actions>
-	<bounce_rate>63%</bounce_rate>
-	<nb_actions_per_visit>1.4</nb_actions_per_visit>
-	<avg_time_on_site>203</avg_time_on_site>
+	<bounce_rate>67%</bounce_rate>
+	<nb_actions_per_visit>1.3</nb_actions_per_visit>
+	<avg_time_on_site>180</avg_time_on_site>
 </result>
\ No newline at end of file
diff --git a/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__VisitsSummary.get_week.xml b/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__VisitsSummary.get_week.xml
index 4a8baf7fc3..fae6d03541 100644
--- a/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__VisitsSummary.get_week.xml
+++ b/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__VisitsSummary.get_week.xml
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_uniq_visitors>5</nb_uniq_visitors>
+	<nb_uniq_visitors>6</nb_uniq_visitors>
 	<nb_users>2</nb_users>
-	<nb_visits>6</nb_visits>
-	<nb_actions>9</nb_actions>
+	<nb_visits>7</nb_visits>
+	<nb_actions>10</nb_actions>
 	<nb_visits_converted>1</nb_visits_converted>
-	<bounce_count>3</bounce_count>
+	<bounce_count>4</bounce_count>
 	<sum_visit_length>1623</sum_visit_length>
 	<max_actions>2</max_actions>
-	<bounce_rate>50%</bounce_rate>
-	<nb_actions_per_visit>1.5</nb_actions_per_visit>
-	<avg_time_on_site>271</avg_time_on_site>
+	<bounce_rate>57%</bounce_rate>
+	<nb_actions_per_visit>1.4</nb_actions_per_visit>
+	<avg_time_on_site>232</avg_time_on_site>
 </result>
\ No newline at end of file
diff --git a/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__VisitsSummary.get_year.xml b/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__VisitsSummary.get_year.xml
index 107fa6ae8a..27c9a85e60 100644
--- a/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__VisitsSummary.get_year.xml
+++ b/tests/PHPUnit/Integration/expected/test_UserId_VisitorId__VisitsSummary.get_year.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <result>
-	<nb_visits>8</nb_visits>
-	<nb_actions>11</nb_actions>
+	<nb_visits>9</nb_visits>
+	<nb_actions>12</nb_actions>
 	<nb_visits_converted>1</nb_visits_converted>
-	<bounce_count>5</bounce_count>
+	<bounce_count>6</bounce_count>
 	<sum_visit_length>1623</sum_visit_length>
 	<max_actions>2</max_actions>
-	<bounce_rate>63%</bounce_rate>
-	<nb_actions_per_visit>1.4</nb_actions_per_visit>
-	<avg_time_on_site>203</avg_time_on_site>
+	<bounce_rate>67%</bounce_rate>
+	<nb_actions_per_visit>1.3</nb_actions_per_visit>
+	<avg_time_on_site>180</avg_time_on_site>
 </result>
\ No newline at end of file
-- 
GitLab