Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'tests/PHPUnit/Integration/SegmentTest.php')
-rw-r--r--tests/PHPUnit/Integration/SegmentTest.php97
1 files changed, 95 insertions, 2 deletions
diff --git a/tests/PHPUnit/Integration/SegmentTest.php b/tests/PHPUnit/Integration/SegmentTest.php
index 20b23065db..0558d6a381 100644
--- a/tests/PHPUnit/Integration/SegmentTest.php
+++ b/tests/PHPUnit/Integration/SegmentTest.php
@@ -512,7 +512,7 @@ class SegmentTest extends IntegrationTestCase
$this->assertEquals($this->removeExtraWhiteSpaces($expected), $this->removeExtraWhiteSpaces($query));
}
- public function test_getSelectQuery_whenJoinLogLinkVisitActionOnActionOnVisit_WithSameTableAliasButDifferentJoin()
+ public function test_getSelectQuery_whenJoinLogLinkVisitActionOnActionOnVisit_WithNoTableAliasButDifferentJoin()
{
$actionType = 3;
$idSite = 1;
@@ -549,7 +549,7 @@ class SegmentTest extends IntegrationTestCase
LEFT JOIN $logVisitTable AS log_visit
ON log_visit.idvisit = log_link_visit_action.idvisit
LEFT JOIN $logActionTable AS log_action
- ON (log_link_visit_action.idaction_name = log_action.idaction AND log_link_visit_action.idaction_url = log_action.idaction)
+ ON log_link_visit_action.idaction_name = log_action.idaction
WHERE ( log_link_visit_action.server_time >= ?
AND log_link_visit_action.server_time <= ?
AND log_link_visit_action.idsite = ? )
@@ -929,6 +929,99 @@ class SegmentTest extends IntegrationTestCase
$this->assertEquals($this->removeExtraWhiteSpaces($expected), $this->removeExtraWhiteSpaces($query));
}
+ public function test_getSelectQuery_whenLimit_withCustomJoinsAndSameColumns()
+ {
+ $select = "log_action_visit_entry_idaction_name.name AS 'EntryPageTitle', log_action_idaction_event_action.name AS 'EventAction', count(distinct log_visit.idvisit) AS 'nb_uniq_visits', count(distinct log_visit.idvisitor) AS 'nb_uniq_visitors', sum(case log_visit.visit_total_actions when 1 then 1 when 0 then 1 else 0 end) AS 'bounce_count', sum(log_visit.visit_total_actions) AS 'sum_actions', sum(log_visit.visit_goal_converted) AS 'sum_visit_goal_converted'";
+ $from = array('log_visit', array('table' => 'log_action', 'tableAlias' => 'log_action_visit_entry_idaction_name', 'joinOn' => 'log_visit.visit_entry_idaction_name = log_action_visit_entry_idaction_name.idaction'), 'log_link_visit_action', array('table' => 'log_action', 'tableAlias' => 'log_action_idaction_event_action', 'joinOn' => 'log_link_visit_action.idaction_event_action = log_action_idaction_event_action.idaction'));
+ $where = '';
+ $bind = array(1);
+
+ $segment = '';
+ $segment = new Segment($segment, $idSites = array());
+
+ $orderBy = 'nb_uniq_visits, log_action_idaction_event_action.name';
+ $groupBy = 'log_action_visit_entry_idaction_name.name, log_action_idaction_event_action.name';
+ $limit = 33;
+
+ $query = $segment->getSelectQuery($select, $from, $where, $bind, $orderBy, $groupBy, $limit);
+
+ $expected = array(
+ "sql" => "
+ SELECT log_inner.name AS 'EntryPageTitle', log_inner.name02fd90a35677a359ea5611a4bc456a6f AS 'EventAction', count(distinct log_inner.idvisit) AS 'nb_uniq_visits', count(distinct log_inner.idvisitor) AS 'nb_uniq_visitors', sum(case log_inner.visit_total_actions when 1 then 1 when 0 then 1 else 0 end) AS 'bounce_count', sum(log_inner.visit_total_actions) AS 'sum_actions', sum(log_inner.visit_goal_converted) AS 'sum_visit_goal_converted'
+ FROM (
+ SELECT log_action_visit_entry_idaction_name.name, log_action_idaction_event_action.name as name02fd90a35677a359ea5611a4bc456a6f, log_visit.idvisit, log_visit.idvisitor, log_visit.visit_total_actions, log_visit.visit_goal_converted
+ FROM log_visit AS log_visit
+ LEFT JOIN log_action AS log_action_visit_entry_idaction_name ON log_visit.visit_entry_idaction_name = log_action_visit_entry_idaction_name.idaction
+ LEFT JOIN log_link_visit_action AS log_link_visit_action ON log_link_visit_action.idvisit = log_visit.idvisit
+ LEFT JOIN log_action AS log_action_idaction_event_action ON log_link_visit_action.idaction_event_action = log_action_idaction_event_action.idaction
+ ORDER BY nb_uniq_visits, log_action_idaction_event_action.name LIMIT 0, 33 )
+ AS log_inner
+ GROUP BY log_inner.name, log_inner.name02fd90a35677a359ea5611a4bc456a6f
+ ORDER BY nb_uniq_visits, log_inner.name02fd90a35677a359ea5611a4bc456a6f",
+ "bind" => array(1));
+
+ $this->assertEquals($this->removeExtraWhiteSpaces($expected), $this->removeExtraWhiteSpaces($query));
+ }
+
+ public function test_getSelectQuery_whenLimit_withCustomJoinsAndSameColumnsAndSimilarColumns()
+ {
+ $select = 'log_link_visit_action.idvisit,
+ log_visit.idvisit,
+ count(log_visit.idvisit) as numvisits,
+ count(distinct log_visit.idvisit ) as numvisitors,
+ log_visit.idvisitor,
+ log_action.name as url,
+ sum(log_link_visit_action.time_spent) as `13`,
+ sum(case log_visit.visit_total_actions when 1 then 1 when 0 then 1 else 0 end) as `6`';
+ $from = array('log_visit', 'log_link_visit_action');
+ $where = '';
+ $bind = array(1);
+
+ $segment = '';
+ $segment = new Segment($segment, $idSites = array());
+
+ $orderBy = 'url, log_visit.idvisit';
+ $groupBy = 'log_visit.idvisit, log_visit.idvisit , log_visit.idvisitor, log_visit.idvisitor , log_link_visit_action.idvisit';
+ $limit = 33;
+
+ $query = $segment->getSelectQuery($select, $from, $where, $bind, $orderBy, $groupBy, $limit);
+
+ // should have replaced some idvisit columns but not idvisitor column
+ $expected = array(
+ "sql" => "
+ SELECT
+ log_inner.idvisit,
+ log_inner.idvisit5d489886e80b4258a9407b219a4e2811,
+ count(log_inner.idvisit5d489886e80b4258a9407b219a4e2811) as numvisits,
+ count(distinct log_inner.idvisit5d489886e80b4258a9407b219a4e2811 ) as numvisitors,
+ log_inner.idvisitor,
+ log_inner.name as url,
+ sum(log_inner.time_spent) as `13`,
+ sum(case log_inner.visit_total_actions when 1 then 1 when 0 then 1 else 0 end) as `6`
+ FROM
+
+ (
+
+ SELECT
+ log_link_visit_action.idvisit,
+log_visit.idvisit as idvisit5d489886e80b4258a9407b219a4e2811,
+log_visit.idvisitor,
+log_action.name,
+log_link_visit_action.time_spent,
+log_visit.visit_total_actions
+ FROM
+ log_visit AS log_visit LEFT JOIN log_link_visit_action AS log_link_visit_action ON log_link_visit_action.idvisit = log_visit.idvisit
+ ORDER BY
+ url, log_visit.idvisit LIMIT 0, 33
+ ) AS log_inner
+ GROUP BY
+ log_inner.idvisit5d489886e80b4258a9407b219a4e2811, log_inner.idvisit5d489886e80b4258a9407b219a4e2811 , log_inner.idvisitor, log_inner.idvisitor , log_inner.idvisit
+ ORDER BY
+ url, log_inner.idvisit5d489886e80b4258a9407b219a4e2811",
+ "bind" => array(1));
+
+ $this->assertEquals($this->removeExtraWhiteSpaces($expected), $this->removeExtraWhiteSpaces($query));
+ }
public function test_getSelectQuery_whenLimitAndOffset_outerQueryShouldNotHaveOffset()
{