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
path: root/tests
diff options
context:
space:
mode:
authorThomas Steur <thomas.steur@gmail.com>2015-12-02 04:47:26 +0300
committerThomas Steur <thomas.steur@gmail.com>2015-12-02 04:47:26 +0300
commit233c20b20e16d4a58e7bd1157d4a845649ba4f94 (patch)
treea79d79a60d26cf8f417601c34180254e4c7d75a4 /tests
parent7fbea546f7f23ff438c0f9c4c2db0c77a367aed8 (diff)
only ignore join when it was given with exact same match
Diffstat (limited to 'tests')
-rw-r--r--tests/PHPUnit/Integration/SegmentTest.php47
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/PHPUnit/Integration/SegmentTest.php b/tests/PHPUnit/Integration/SegmentTest.php
index 80c17ebe63..d5a6ff7b0e 100644
--- a/tests/PHPUnit/Integration/SegmentTest.php
+++ b/tests/PHPUnit/Integration/SegmentTest.php
@@ -371,6 +371,53 @@ class SegmentTest extends IntegrationTestCase
$this->assertEquals($this->removeExtraWhiteSpaces($expected), $this->removeExtraWhiteSpaces($query));
}
+ public function test_getSelectQuery_whenJoinLogLinkVisitActionOnActionOnVisit_WithSameTableAlias()
+ {
+ $actionType = 3;
+ $idSite = 1;
+ $select = 'log_link_visit_action.custom_dimension_1,
+ 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_link_visit_action',
+ array('table' => 'log_visit', 'joinOn' => 'log_visit.idvisit = log_link_visit_action.idvisit'),
+ array('table' => 'log_action', 'joinOn' => 'log_link_visit_action.idaction_url = log_action.idaction')
+ );
+ $where = 'log_link_visit_action.server_time >= ?
+ AND log_link_visit_action.server_time <= ?
+ AND log_link_visit_action.idsite = ?';
+ $bind = array('2015-11-30 11:00:00', '2015-12-01 10:59:59', $idSite);
+
+ $segment = 'actionType==' . $actionType;
+ $segment = new Segment($segment, $idSites = array());
+
+ $query = $segment->getSelectQuery($select, $from, $where, $bind);
+
+ $logVisitTable = Common::prefixTable('log_visit');
+ $logActionTable = Common::prefixTable('log_action');
+ $logLinkVisitActionTable = Common::prefixTable('log_link_visit_action');
+
+ $expected = array(
+ "sql" => "
+ SELECT log_link_visit_action.custom_dimension_1,
+ 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 $logLinkVisitActionTable AS log_link_visit_action
+ 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_url = log_action.idaction
+ WHERE ( log_link_visit_action.server_time >= ?
+ AND log_link_visit_action.server_time <= ?
+ AND log_link_visit_action.idsite = ? )
+ AND ( log_action.type = ? )",
+ "bind" => array('2015-11-30 11:00:00', '2015-12-01 10:59:59', $idSite, $actionType));
+
+ $this->assertEquals($this->removeExtraWhiteSpaces($expected), $this->removeExtraWhiteSpaces($query));
+ }
+
/**
* visit is joined on action, then conversion is joined
* make sure that conversion is joined on action not visit