From 95c64604f7b73c46cc018b49dcd098d94b69ac71 Mon Sep 17 00:00:00 2001
From: mattpiwik <matthieu.aubry@gmail.com>
Date: Thu, 1 Dec 2011 08:50:46 +0000
Subject: [PATCH] Ensuring consistent output (on my box plugins load in
 different orders causing Xml comparison to fail) + adding test refs #2795

git-svn-id: http://dev.piwik.org/svn/trunk@5499 59fd770c-687e-43c8-a1e3-f5a4ff64c105
---
 plugins/API/API.php                           |  1 +
 tests/core/PHP_Related.test.php               |  6 +++++
 tests/integration/Main.test.php               |  4 ++--
 ..._disabledAfter__VisitsSummary.get_week.xml |  6 ++---
 ...ortMetadata__API.getReportMetadata_day.xml | 24 +++++++++----------
 ...test_apiGetReportMetadata__API.get_day.xml | 20 ++++++++--------
 ...adata_year__API.getReportMetadata_year.xml | 24 +++++++++----------
 ...rceOrderWithItems_API_get__API.get_day.xml |  2 +-
 ...ceOrderWithItems_API_get__API.get_week.xml |  2 +-
 9 files changed, 48 insertions(+), 41 deletions(-)

diff --git a/plugins/API/API.php b/plugins/API/API.php
index a6407f8fac..4d7f872e23 100644
--- a/plugins/API/API.php
+++ b/plugins/API/API.php
@@ -894,6 +894,7 @@ class Piwik_API_API
 				}
 			}
 		}
+		krsort($columnsByPlugin);
 		
 		$mergedDataTable = false;
 		$params = compact('idSite', 'period', 'date', 'segment', 'idGoal');
diff --git a/tests/core/PHP_Related.test.php b/tests/core/PHP_Related.test.php
index 28f92dc694..42351a8a07 100644
--- a/tests/core/PHP_Related.test.php
+++ b/tests/core/PHP_Related.test.php
@@ -391,6 +391,12 @@ class Test_PHP_Related extends UnitTestCase
 		$this->assertEqual((bool)"false", true);
 		$this->assertEqual((bool)"0", false);
 	}
+	
+	function test_urldecode()
+	{
+		$this->assertEqual(urldecode('Zubeh%C3%B6rshop+Homepage+'), urldecode('Zubeh%C3%B6rshop%20Homepage%20'));
+		$this->assertEqual(urldecode('+%20'), '  ');
+	}
 }
 
 
diff --git a/tests/integration/Main.test.php b/tests/integration/Main.test.php
index 399368d126..dbb0de862c 100644
--- a/tests/integration/Main.test.php
+++ b/tests/integration/Main.test.php
@@ -773,8 +773,8 @@ class Test_Piwik_Integration_Main extends Test_Integration
         $visitorB->setUrlReferrer('');
         
         $attribution = array(
-        	'CAMPAIGN NAME - YEAH!',
-        	'CAMPAIGN KEYWORD - RIGHT...',
+        	' CAMPAIGN NAME -%20YEAH! ',
+        	' CAMPAIGN%20KEYWORD - RIGHT... ',
         	1302306504,
         	'http://www.example.org/test/really?q=yes'
         );
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_week.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_week.xml
index 524f36b46d..c01069b78a 100755
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_week.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_ArchivingDisabled_disabledAfter__VisitsSummary.get_week.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <results>
 	<result idSite="1">
-		<nb_uniq_visitors>1</nb_uniq_visitors>
-		<nb_visits>1</nb_visits>
-		<nb_actions>1</nb_actions>
 		<bounce_count>1</bounce_count>
 		<max_actions>1</max_actions>
+		<nb_actions>1</nb_actions>
+		<nb_uniq_visitors>1</nb_uniq_visitors>
+		<nb_visits>1</nb_visits>
 		<bounce_rate>100%</bounce_rate>
 		<nb_actions_per_visit>1</nb_actions_per_visit>
 		<avg_time_on_site>0</avg_time_on_site>
diff --git a/tests/integration/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml b/tests/integration/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml
index 608f7dcd42..8785814236 100644
--- a/tests/integration/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml
+++ b/tests/integration/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml
@@ -6,12 +6,6 @@
 		<module>API</module>
 		<action>get</action>
 		<metrics>
-			<nb_pageviews>Pageviews</nb_pageviews>
-			<nb_uniq_pageviews>Unique Pageviews</nb_uniq_pageviews>
-			<nb_downloads>Downloads</nb_downloads>
-			<nb_uniq_downloads>Unique Downloads</nb_uniq_downloads>
-			<nb_outlinks>Outlinks</nb_outlinks>
-			<nb_uniq_outlinks>Unique Outlinks</nb_uniq_outlinks>
 			<nb_uniq_visitors>Unique visitors</nb_uniq_visitors>
 			<nb_visits>Visits</nb_visits>
 			<nb_actions>Actions</nb_actions>
@@ -19,6 +13,12 @@
 			<bounce_rate>Bounce Rate</bounce_rate>
 			<avg_time_on_site>Avg. Visit Duration (in seconds)</avg_time_on_site>
 			<max_actions>Maximum actions in one visit</max_actions>
+			<nb_pageviews>Pageviews</nb_pageviews>
+			<nb_uniq_pageviews>Unique Pageviews</nb_uniq_pageviews>
+			<nb_downloads>Downloads</nb_downloads>
+			<nb_uniq_downloads>Unique Downloads</nb_uniq_downloads>
+			<nb_outlinks>Outlinks</nb_outlinks>
+			<nb_uniq_outlinks>Unique Outlinks</nb_uniq_outlinks>
 			<nb_visits_returning>Returning Visits</nb_visits_returning>
 			<nb_actions_returning>Actions by Returning Visits</nb_actions_returning>
 			<avg_time_on_site_returning>Avg. Duration of a Returning Visit (in sec)</avg_time_on_site_returning>
@@ -38,12 +38,6 @@
 
 		</metrics>
 		<metricsDocumentation>
-			<nb_pageviews>The number of times this page was visited.</nb_pageviews>
-			<nb_uniq_pageviews>The number of visits that included this page. If a page was viewed multiple times during one visit, it is only counted once.</nb_uniq_pageviews>
-			<nb_downloads>The number of times this link was clicked.</nb_downloads>
-			<nb_uniq_downloads>The number of visits that involved a click on this link. If a link was clicked multiple times during one visit, it is only counted once.</nb_uniq_downloads>
-			<nb_outlinks>The number of times this link was clicked.</nb_outlinks>
-			<nb_uniq_outlinks>The number of visits that involved a click on this link. If a link was clicked multiple times during one visit, it is only counted once.</nb_uniq_outlinks>
 			<nb_visits>If a visitor comes to your website for the first time or if he visits a page more than 30 minutes after his last page view, this will be recorded as a new visit.</nb_visits>
 			<nb_uniq_visitors>The number of unduplicated visitors coming to your website. Every user is only counted once, even if he visits the website multiple times a day.</nb_uniq_visitors>
 			<nb_actions>The number of actions performed by your visitors. Actions can be page views, downloads or outlinks.</nb_actions>
@@ -54,6 +48,12 @@
 			<avg_time_on_page>The average amount of time visitors spent on this page (only the page, not the entire website).</avg_time_on_page>
 			<nb_hits>The number of times this page was visited.</nb_hits>
 			<exit_rate>The percentage of visits that left the website after viewing this page.</exit_rate>
+			<nb_pageviews>The number of times this page was visited.</nb_pageviews>
+			<nb_uniq_pageviews>The number of visits that included this page. If a page was viewed multiple times during one visit, it is only counted once.</nb_uniq_pageviews>
+			<nb_downloads>The number of times this link was clicked.</nb_downloads>
+			<nb_uniq_downloads>The number of visits that involved a click on this link. If a link was clicked multiple times during one visit, it is only counted once.</nb_uniq_downloads>
+			<nb_outlinks>The number of times this link was clicked.</nb_outlinks>
+			<nb_uniq_outlinks>The number of visits that involved a click on this link. If a link was clicked multiple times during one visit, it is only counted once.</nb_uniq_outlinks>
 
 		</metricsDocumentation>
 		<uniqueId>API_get</uniqueId>
diff --git a/tests/integration/expected/test_apiGetReportMetadata__API.get_day.xml b/tests/integration/expected/test_apiGetReportMetadata__API.get_day.xml
index 9bde2b3b80..cefd78bdf5 100644
--- a/tests/integration/expected/test_apiGetReportMetadata__API.get_day.xml
+++ b/tests/integration/expected/test_apiGetReportMetadata__API.get_day.xml
@@ -7,20 +7,20 @@
 	<bounce_rate>100%</bounce_rate>
 	<nb_actions_per_visit>1</nb_actions_per_visit>
 	<avg_time_on_site>1086</avg_time_on_site>
-	<nb_pageviews>1</nb_pageviews>
-	<nb_uniq_pageviews>1</nb_uniq_pageviews>
-	<nb_downloads>0</nb_downloads>
-	<nb_uniq_downloads>0</nb_uniq_downloads>
-	<nb_outlinks>0</nb_outlinks>
-	<nb_uniq_outlinks>0</nb_uniq_outlinks>
-	<nb_conversions>1</nb_conversions>
-	<nb_visits_converted>1</nb_visits_converted>
-	<conversion_rate>100</conversion_rate>
-	<revenue>42.26</revenue>
 	<nb_visits_returning>0</nb_visits_returning>
 	<nb_actions_returning>0</nb_actions_returning>
 	<nb_uniq_visitors_returning>0</nb_uniq_visitors_returning>
 	<bounce_rate_returning>0%</bounce_rate_returning>
 	<nb_actions_per_visit_returning>0</nb_actions_per_visit_returning>
 	<avg_time_on_site_returning>0</avg_time_on_site_returning>
+	<nb_conversions>1</nb_conversions>
+	<nb_visits_converted>1</nb_visits_converted>
+	<conversion_rate>100</conversion_rate>
+	<revenue>42.26</revenue>
+	<nb_pageviews>1</nb_pageviews>
+	<nb_uniq_pageviews>1</nb_uniq_pageviews>
+	<nb_downloads>0</nb_downloads>
+	<nb_uniq_downloads>0</nb_uniq_downloads>
+	<nb_outlinks>0</nb_outlinks>
+	<nb_uniq_outlinks>0</nb_uniq_outlinks>
 </result>
\ No newline at end of file
diff --git a/tests/integration/expected/test_apiGetReportMetadata_year__API.getReportMetadata_year.xml b/tests/integration/expected/test_apiGetReportMetadata_year__API.getReportMetadata_year.xml
index d7dcf308c7..57d70a3205 100644
--- a/tests/integration/expected/test_apiGetReportMetadata_year__API.getReportMetadata_year.xml
+++ b/tests/integration/expected/test_apiGetReportMetadata_year__API.getReportMetadata_year.xml
@@ -6,12 +6,6 @@
 		<module>API</module>
 		<action>get</action>
 		<metrics>
-			<nb_pageviews>Pageviews</nb_pageviews>
-			<nb_uniq_pageviews>Unique Pageviews</nb_uniq_pageviews>
-			<nb_downloads>Downloads</nb_downloads>
-			<nb_uniq_downloads>Unique Downloads</nb_uniq_downloads>
-			<nb_outlinks>Outlinks</nb_outlinks>
-			<nb_uniq_outlinks>Unique Outlinks</nb_uniq_outlinks>
 			<nb_uniq_visitors>Unique visitors</nb_uniq_visitors>
 			<nb_visits>Visits</nb_visits>
 			<nb_actions>Actions</nb_actions>
@@ -19,6 +13,12 @@
 			<bounce_rate>Bounce Rate</bounce_rate>
 			<avg_time_on_site>Avg. Visit Duration (in seconds)</avg_time_on_site>
 			<max_actions>Maximum actions in one visit</max_actions>
+			<nb_pageviews>Pageviews</nb_pageviews>
+			<nb_uniq_pageviews>Unique Pageviews</nb_uniq_pageviews>
+			<nb_downloads>Downloads</nb_downloads>
+			<nb_uniq_downloads>Unique Downloads</nb_uniq_downloads>
+			<nb_outlinks>Outlinks</nb_outlinks>
+			<nb_uniq_outlinks>Unique Outlinks</nb_uniq_outlinks>
 			<nb_visits_returning>Returning Visits</nb_visits_returning>
 			<nb_actions_returning>Actions by Returning Visits</nb_actions_returning>
 			<avg_time_on_site_returning>Avg. Duration of a Returning Visit (in sec)</avg_time_on_site_returning>
@@ -32,12 +32,6 @@
 
 		</metrics>
 		<metricsDocumentation>
-			<nb_pageviews>The number of times this page was visited.</nb_pageviews>
-			<nb_uniq_pageviews>The number of visits that included this page. If a page was viewed multiple times during one visit, it is only counted once.</nb_uniq_pageviews>
-			<nb_downloads>The number of times this link was clicked.</nb_downloads>
-			<nb_uniq_downloads>The number of visits that involved a click on this link. If a link was clicked multiple times during one visit, it is only counted once.</nb_uniq_downloads>
-			<nb_outlinks>The number of times this link was clicked.</nb_outlinks>
-			<nb_uniq_outlinks>The number of visits that involved a click on this link. If a link was clicked multiple times during one visit, it is only counted once.</nb_uniq_outlinks>
 			<nb_visits>If a visitor comes to your website for the first time or if he visits a page more than 30 minutes after his last page view, this will be recorded as a new visit.</nb_visits>
 			<nb_uniq_visitors>The number of unduplicated visitors coming to your website. Every user is only counted once, even if he visits the website multiple times a day.</nb_uniq_visitors>
 			<nb_actions>The number of actions performed by your visitors. Actions can be page views, downloads or outlinks.</nb_actions>
@@ -48,6 +42,12 @@
 			<avg_time_on_page>The average amount of time visitors spent on this page (only the page, not the entire website).</avg_time_on_page>
 			<nb_hits>The number of times this page was visited.</nb_hits>
 			<exit_rate>The percentage of visits that left the website after viewing this page.</exit_rate>
+			<nb_pageviews>The number of times this page was visited.</nb_pageviews>
+			<nb_uniq_pageviews>The number of visits that included this page. If a page was viewed multiple times during one visit, it is only counted once.</nb_uniq_pageviews>
+			<nb_downloads>The number of times this link was clicked.</nb_downloads>
+			<nb_uniq_downloads>The number of visits that involved a click on this link. If a link was clicked multiple times during one visit, it is only counted once.</nb_uniq_downloads>
+			<nb_outlinks>The number of times this link was clicked.</nb_outlinks>
+			<nb_uniq_outlinks>The number of visits that involved a click on this link. If a link was clicked multiple times during one visit, it is only counted once.</nb_uniq_outlinks>
 
 		</metricsDocumentation>
 		<uniqueId>API_get</uniqueId>
diff --git a/tests/integration/expected/test_ecommerceOrderWithItems_API_get__API.get_day.xml b/tests/integration/expected/test_ecommerceOrderWithItems_API_get__API.get_day.xml
index 95f6f614b0..f321ae62e1 100644
--- a/tests/integration/expected/test_ecommerceOrderWithItems_API_get__API.get_day.xml
+++ b/tests/integration/expected/test_ecommerceOrderWithItems_API_get__API.get_day.xml
@@ -2,6 +2,6 @@
 <result>
 	<nb_visits>3</nb_visits>
 	<avg_time_on_site>1801</avg_time_on_site>
-	<nb_pageviews>13</nb_pageviews>
 	<nb_visits_converted>2</nb_visits_converted>
+	<nb_pageviews>13</nb_pageviews>
 </result>
\ No newline at end of file
diff --git a/tests/integration/expected/test_ecommerceOrderWithItems_API_get__API.get_week.xml b/tests/integration/expected/test_ecommerceOrderWithItems_API_get__API.get_week.xml
index 75b96fb22b..330e0110bf 100644
--- a/tests/integration/expected/test_ecommerceOrderWithItems_API_get__API.get_week.xml
+++ b/tests/integration/expected/test_ecommerceOrderWithItems_API_get__API.get_week.xml
@@ -2,6 +2,6 @@
 <result>
 	<nb_visits>5</nb_visits>
 	<avg_time_on_site>1369</avg_time_on_site>
-	<nb_pageviews>16</nb_pageviews>
 	<nb_visits_converted>4</nb_visits_converted>
+	<nb_pageviews>16</nb_pageviews>
 </result>
\ No newline at end of file
-- 
GitLab