From f1d8f1c1da91c515682c8fe528c3573bf72167af Mon Sep 17 00:00:00 2001 From: mattpiwik <matthieu.aubry@gmail.com> Date: Tue, 13 Jul 2010 16:43:28 +0000 Subject: [PATCH] Refs #1446 Integration tests were often different simply because the internal idsubdatatable in the response was different. However. this idsubtable is really just an internal ID and it is not expected that this ID is the same across several archiving processes. Therefore integration tests will now set a special flag to remove the ID from the response, to minimize noise. git-svn-id: http://dev.piwik.org/svn/trunk@2495 59fd770c-687e-43c8-a1e3-f5a4ff64c105 --- core/API/DocumentationGenerator.php | 2 ++ core/API/ResponseBuilder.php | 1 + core/DataTable/Renderer.php | 6 +++++ core/DataTable/Renderer/Csv.php | 3 ++- core/DataTable/Renderer/Json.php | 1 + core/DataTable/Renderer/Php.php | 25 ++++++++++++------- core/DataTable/Renderer/Xml.php | 1 + tests/integration/Integration.php | 3 ++- ...torTwoVisits__Actions.getDownloads_day.xml | 1 - ...itorTwoVisits__Actions.getOutlinks_day.xml | 1 - ...itorTwoVisits__Actions.getPageUrls_day.xml | 1 - ...torTwoVisits__Referers.getKeywords_day.xml | 1 - ...oVisits__Referers.getSearchEngines_day.xml | 1 - ...torTwoVisits__Referers.getWebsites_day.xml | 1 - ...ifferentDays__Referers.getWebsites_day.xml | 3 --- ...ferentDays__Referers.getWebsites_month.xml | 2 -- ...fferentDays__Referers.getWebsites_week.xml | 3 --- ...fferentDays__Referers.getWebsites_year.xml | 2 -- 18 files changed, 31 insertions(+), 27 deletions(-) diff --git a/core/API/DocumentationGenerator.php b/core/API/DocumentationGenerator.php index 1e98c81f87..f8fc5803af 100644 --- a/core/API/DocumentationGenerator.php +++ b/core/API/DocumentationGenerator.php @@ -156,7 +156,9 @@ class Piwik_API_DocumentationGenerator $aParameters = Piwik_API_Proxy::getInstance()->getParametersList($class, $methodName); // Kindly force some known generic parameters to appear in the final list // the parameter 'format' can be set to all API methods (used in tests) + // the parameter 'hideIdSubDatable' is used for integration tests only $aParameters['format'] = false; + $aParameters['hideIdSubDatable'] = false; $moduleName = Piwik_API_Proxy::getInstance()->getModuleNameFromClassName($class); $urlExample = '?module=API&method='.$moduleName.'.'.$methodName.'&'; diff --git a/core/API/ResponseBuilder.php b/core/API/ResponseBuilder.php index 2d06ead09c..0e708fa006 100644 --- a/core/API/ResponseBuilder.php +++ b/core/API/ResponseBuilder.php @@ -182,6 +182,7 @@ class Piwik_API_ResponseBuilder $renderer = Piwik_DataTable_Renderer::factory($format); $renderer->setTable($dataTable); $renderer->setRenderSubTables(Piwik_Common::getRequestVar('expanded', false, 'int', $this->request)); + $renderer->setHideIdSubDatableFromResponse(Piwik_Common::getRequestVar('hideIdSubDatable', false, 'int', $this->request)); if($format == 'php') { $renderer->setSerialize( $this->caseRendererPHPSerialize()); diff --git a/core/DataTable/Renderer.php b/core/DataTable/Renderer.php index 84efd8c935..50e940e346 100644 --- a/core/DataTable/Renderer.php +++ b/core/DataTable/Renderer.php @@ -26,6 +26,7 @@ abstract class Piwik_DataTable_Renderer protected $table; protected $exception; protected $renderSubTables = false; + protected $hideIdSubDatatable = false; public function __construct() { @@ -35,6 +36,11 @@ abstract class Piwik_DataTable_Renderer { $this->renderSubTables = (bool)$enableRenderSubTable; } + + public function setHideIdSubDatableFromResponse($bool) + { + $this->hideIdSubDatatable = (bool)$bool; + } protected function isRenderSubtables() { diff --git a/core/DataTable/Renderer/Csv.php b/core/DataTable/Renderer/Csv.php index 3ff46a3dd4..e0f2524dfe 100644 --- a/core/DataTable/Renderer/Csv.php +++ b/core/DataTable/Renderer/Csv.php @@ -185,7 +185,8 @@ class Piwik_DataTable_Renderer_Csv extends Piwik_DataTable_Renderer if($this->exportIdSubtable) { $idsubdatatable = $row->getIdSubDataTable(); - if($idsubdatatable !== false) + if($idsubdatatable !== false + && $this->hideIdSubDatatable === false) { $csvRow['idsubdatatable'] = $idsubdatatable; } diff --git a/core/DataTable/Renderer/Json.php b/core/DataTable/Renderer/Json.php index e6bd6a72d9..95b580ca28 100644 --- a/core/DataTable/Renderer/Json.php +++ b/core/DataTable/Renderer/Json.php @@ -42,6 +42,7 @@ class Piwik_DataTable_Renderer_Json extends Piwik_DataTable_Renderer $renderer->setTable($table); $renderer->setRenderSubTables($this->isRenderSubtables()); $renderer->setSerialize(false); + $renderer->setHideIdSubDatableFromResponse($this->hideIdSubDatatable); $array = $renderer->flatRender(); if(!is_array($array)) diff --git a/core/DataTable/Renderer/Php.php b/core/DataTable/Renderer/Php.php index 18f24452e0..cebda20266 100644 --- a/core/DataTable/Renderer/Php.php +++ b/core/DataTable/Renderer/Php.php @@ -30,6 +30,7 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer { $this->serialize = (bool)$bool; } + public function setPrettyDisplay($bool) { $this->prettyDisplay = (bool)$bool; @@ -145,13 +146,14 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer foreach($array as $row) { $newRow = $row['columns'] + $row['metadata']; - if(isset($row['idsubdatatable'])) + if(isset($row['idsubdatatable']) + && $this->hideIdSubDatatable === false) { $newRow += array('idsubdatatable' => $row['idsubdatatable']); - if(isset($row['subtable'])) - { - $newRow += array('subtable' => $this->flattenArray($row['subtable']) ); - } + } + if(isset($row['subtable'])) + { + $newRow += array('subtable' => $this->flattenArray($row['subtable']) ); } $flatArray[] = $newRow; } @@ -192,18 +194,23 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer && $row->getIdSubDataTable() !== null) { try{ - $subTable = $this->renderTable( Piwik_DataTable_Manager::getInstance()->getTable($row->getIdSubDataTable())); + $subTable = $this->renderTable( Piwik_DataTable_Manager::getInstance()->getTable($row->getIdSubDataTable())); $newRow['subtable'] = $subTable; - if(isset($newRow['metadata']['idsubdatatable_in_db'])) + if($this->hideIdSubDatatable === false + && isset($newRow['metadata']['idsubdatatable_in_db'])) { $newRow['columns']['idsubdatatable'] = $newRow['metadata']['idsubdatatable_in_db']; - unset($newRow['metadata']['idsubdatatable_in_db']); } + unset($newRow['metadata']['idsubdatatable_in_db']); } catch (Exception $e) { // the subtables are not loaded we dont do anything } } - + if($this->hideIdSubDatatable !== false) + { + unset($newRow['idsubdatatable']); + } + $array[] = $newRow; } return $array; diff --git a/core/DataTable/Renderer/Xml.php b/core/DataTable/Renderer/Xml.php index 828b890ab7..e28965be62 100644 --- a/core/DataTable/Renderer/Xml.php +++ b/core/DataTable/Renderer/Xml.php @@ -47,6 +47,7 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer $renderer->setRenderSubTables($this->isRenderSubtables()); $renderer->setSerialize(false); $renderer->setTable($table); + $renderer->setHideIdSubDatableFromResponse($this->hideIdSubDatatable); return $renderer->flatRender(); } diff --git a/tests/integration/Integration.php b/tests/integration/Integration.php index 27e54c003e..3167239ada 100644 --- a/tests/integration/Integration.php +++ b/tests/integration/Integration.php @@ -210,7 +210,6 @@ abstract class Test_Integration extends Test_Database */ protected function generateUrlsApi( $parametersToSet, $formats, $periods, $setDateLastN = false ) { - // Get the URLs to query against the API for all functions starting with get* $skipped = $requestUrls = array(); $apiMetadata = new Piwik_API_DocumentationGenerator; @@ -259,6 +258,7 @@ abstract class Test_Integration extends Test_Database foreach($formats as $format) { $parametersToSet['format'] = $format; + $parametersToSet['hideIdSubDatable'] = 1; $exampleUrl = $apiMetadata->getExampleUrl($class, $methodName, $parametersToSet); if($exampleUrl === false) { @@ -283,6 +283,7 @@ abstract class Test_Integration extends Test_Database } // var_dump($skipped); // var_dump($requestUrls); +// exit; return $requestUrls; } diff --git a/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getDownloads_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getDownloads_day.xml index 1613d9a045..48775fd2e4 100644 --- a/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getDownloads_day.xml +++ b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getDownloads_day.xml @@ -5,7 +5,6 @@ <nb_visits>1</nb_visits> <nb_hits>1</nb_hits> <sum_time_spent>180</sum_time_spent> - <idsubdatatable>55</idsubdatatable> <subtable> <row> <label> /latest.zip</label> diff --git a/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getOutlinks_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getOutlinks_day.xml index 543130f18e..2175803fa4 100644 --- a/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getOutlinks_day.xml +++ b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getOutlinks_day.xml @@ -5,7 +5,6 @@ <nb_visits>1</nb_visits> <nb_hits>1</nb_hits> <sum_time_spent>360</sum_time_spent> - <idsubdatatable>57</idsubdatatable> <subtable> <row> <label> /svn</label> diff --git a/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getPageUrls_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getPageUrls_day.xml index 0e92e9173e..ac862948f6 100644 --- a/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getPageUrls_day.xml +++ b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getPageUrls_day.xml @@ -13,7 +13,6 @@ <avg_time_on_page>0</avg_time_on_page> <bounce_rate>100%</bounce_rate> <exit_rate>100%</exit_rate> - <idsubdatatable>53</idsubdatatable> <subtable> <row> <label>/purchase.htm</label> diff --git a/tests/integration/expected/test_OneVisitorTwoVisits__Referers.getKeywords_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits__Referers.getKeywords_day.xml index ee03451407..c38aef473b 100644 --- a/tests/integration/expected/test_OneVisitorTwoVisits__Referers.getKeywords_day.xml +++ b/tests/integration/expected/test_OneVisitorTwoVisits__Referers.getKeywords_day.xml @@ -17,7 +17,6 @@ </goals> <nb_conversions>1</nb_conversions> <revenue>1</revenue> - <idsubdatatable>76</idsubdatatable> <subtable> <row> <label>Yahoo!</label> diff --git a/tests/integration/expected/test_OneVisitorTwoVisits__Referers.getSearchEngines_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits__Referers.getSearchEngines_day.xml index 774d97c1ff..284b5f7bab 100644 --- a/tests/integration/expected/test_OneVisitorTwoVisits__Referers.getSearchEngines_day.xml +++ b/tests/integration/expected/test_OneVisitorTwoVisits__Referers.getSearchEngines_day.xml @@ -17,7 +17,6 @@ </goals> <nb_conversions>1</nb_conversions> <revenue>1</revenue> - <idsubdatatable>74</idsubdatatable> <url>http://search.yahoo.com</url> <logo>plugins/Referers/images/searchEngines/search.yahoo.com.png</logo> <subtable> diff --git a/tests/integration/expected/test_OneVisitorTwoVisits__Referers.getWebsites_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits__Referers.getWebsites_day.xml index 7a11ca1cea..99eb85a678 100644 --- a/tests/integration/expected/test_OneVisitorTwoVisits__Referers.getWebsites_day.xml +++ b/tests/integration/expected/test_OneVisitorTwoVisits__Referers.getWebsites_day.xml @@ -9,7 +9,6 @@ <sum_visit_length>1620</sum_visit_length> <bounce_count>0</bounce_count> <nb_visits_converted>1</nb_visits_converted> - <idsubdatatable>79</idsubdatatable> <subtable> <row> <label>http://referer.com/page.htm?param=valuewith some spaces</label> diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Referers.getWebsites_day.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Referers.getWebsites_day.xml index d19de5fc29..6c7bf55c66 100644 --- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Referers.getWebsites_day.xml +++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Referers.getWebsites_day.xml @@ -11,7 +11,6 @@ <sum_visit_length>0</sum_visit_length> <bounce_count>1</bounce_count> <nb_visits_converted>0</nb_visits_converted> - <idsubdatatable>80</idsubdatatable> <subtable> <row> <label>http://referer.com/page.htm?param=valuewith some spaces</label> @@ -37,7 +36,6 @@ <sum_visit_length>360</sum_visit_length> <bounce_count>0</bounce_count> <nb_visits_converted>0</nb_visits_converted> - <idsubdatatable>22</idsubdatatable> <subtable> <row> <label>http://referer.com/Other_Page.htm</label> @@ -69,7 +67,6 @@ <sum_visit_length>0</sum_visit_length> <bounce_count>1</bounce_count> <nb_visits_converted>0</nb_visits_converted> - <idsubdatatable>22</idsubdatatable> <subtable> <row> <label>http://only-homepage-referer.com/</label> diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Referers.getWebsites_month.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Referers.getWebsites_month.xml index b6eda6eb51..46f4f132c8 100644 --- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Referers.getWebsites_month.xml +++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Referers.getWebsites_month.xml @@ -11,7 +11,6 @@ <bounce_count>1</bounce_count> <nb_visits_converted>0</nb_visits_converted> <sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors> - <idsubdatatable>132</idsubdatatable> <subtable> <row> <label>http://referer.com/Other_Page.htm</label> @@ -54,7 +53,6 @@ <bounce_count>1</bounce_count> <nb_visits_converted>0</nb_visits_converted> <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> - <idsubdatatable>133</idsubdatatable> <subtable> <row> <label>http://only-homepage-referer.com/</label> diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Referers.getWebsites_week.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Referers.getWebsites_week.xml index ba834c454c..8696568992 100644 --- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Referers.getWebsites_week.xml +++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Referers.getWebsites_week.xml @@ -11,7 +11,6 @@ <bounce_count>1</bounce_count> <nb_visits_converted>0</nb_visits_converted> <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> - <idsubdatatable>40</idsubdatatable> <subtable> <row> <label>http://referer.com/page.htm?param=valuewith some spaces</label> @@ -36,7 +35,6 @@ <bounce_count>0</bounce_count> <nb_visits_converted>0</nb_visits_converted> <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> - <idsubdatatable>35</idsubdatatable> <subtable> <row> <label>http://referer.com/Other_Page.htm</label> @@ -69,7 +67,6 @@ <bounce_count>1</bounce_count> <nb_visits_converted>0</nb_visits_converted> <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> - <idsubdatatable>34</idsubdatatable> <subtable> <row> <label>http://only-homepage-referer.com/</label> diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Referers.getWebsites_year.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Referers.getWebsites_year.xml index a8be3758e4..fcfb7e7f27 100644 --- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Referers.getWebsites_year.xml +++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Referers.getWebsites_year.xml @@ -11,7 +11,6 @@ <bounce_count>1</bounce_count> <nb_visits_converted>0</nb_visits_converted> <sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors> - <idsubdatatable>54</idsubdatatable> <subtable> <row> <label>http://referer.com/Other_Page.htm</label> @@ -54,7 +53,6 @@ <bounce_count>1</bounce_count> <nb_visits_converted>0</nb_visits_converted> <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> - <idsubdatatable>54</idsubdatatable> <subtable> <row> <label>http://only-homepage-referer.com/</label> -- GitLab