diff options
author | Thomas Steur <thomas.steur@gmail.com> | 2016-12-01 10:26:40 +0300 |
---|---|---|
committer | Thomas Steur <thomas.steur@gmail.com> | 2016-12-01 10:26:40 +0300 |
commit | 7758015689eb599885d2838713da7d4f7e8d1716 (patch) | |
tree | ac63a09b98b7e39e663c7076d37ac835796c0841 /tests | |
parent | 3ffe8af8280a6cac3f40d06ed1fbe4ecf1430240 (diff) |
fix tests
Diffstat (limited to 'tests')
-rw-r--r-- | tests/PHPUnit/Integration/SegmentTest.php | 72 | ||||
-rw-r--r-- | tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php | 58 |
2 files changed, 72 insertions, 58 deletions
diff --git a/tests/PHPUnit/Integration/SegmentTest.php b/tests/PHPUnit/Integration/SegmentTest.php index 9558cc0929..2023f652c6 100644 --- a/tests/PHPUnit/Integration/SegmentTest.php +++ b/tests/PHPUnit/Integration/SegmentTest.php @@ -426,6 +426,78 @@ class SegmentTest extends IntegrationTestCase $this->assertEquals($this->removeExtraWhiteSpaces($expected), $this->removeExtraWhiteSpaces($query)); } + public function test_getSelectQuery_whenJoiningManyCustomTablesItShouldKeepTheOrderAsDefined() + { + $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_link_visit_action', + 'tableAlias' => 'log_link_visit_action_foo', + 'joinOn' => 'log_link_visit_action.idvisit = log_link_visit_action_foo.idvisit', + ), + array( + 'table' => 'log_action', + 'tableAlias' => 'log_action_foo', + 'joinOn' => 'log_link_visit_action_foo.idaction_url = log_action_foo.idaction', + ), + array( + 'table' => 'log_link_visit_action', + 'tableAlias' => 'log_link_visit_action_bar', + 'joinOn' => "log_link_visit_action.idvisit = log_link_visit_action_bar.idvisit" + ), + array( + 'table' => 'log_action', + 'tableAlias' => 'log_action_bar', + 'joinOn' => "log_link_visit_action_bar.idaction_url = log_action_bar.idaction" + ), + 'log_action', + ); + + $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); + + $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 $logLinkVisitActionTable AS log_link_visit_action_foo + ON log_link_visit_action.idvisit = log_link_visit_action_foo.idvisit + LEFT JOIN $logActionTable AS log_action_foo + ON log_link_visit_action_foo.idaction_url = log_action_foo.idaction + LEFT JOIN $logLinkVisitActionTable AS log_link_visit_action_bar + ON log_link_visit_action.idvisit = log_link_visit_action_bar.idvisit + LEFT JOIN $logActionTable AS log_action_bar + ON log_link_visit_action_bar.idaction_url = log_action_bar.idaction + 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)); + } + public function test_getSelectQuery_whenJoinLogLinkVisitActionOnActionOnVisit_WithSameTableAliasButDifferentJoin() { $actionType = 3; diff --git a/tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php b/tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php index 45e356d13a..cb20726968 100644 --- a/tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php +++ b/tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php @@ -207,64 +207,6 @@ class JoinGeneratorTest extends \PHPUnit_Framework_TestCase $this->assertEquals($expected, $tables); } - public function test_sortTablesForJoin_shouldSortCorrecTWhenManyTableJoins() - { - $tables = array( - 'log_link_visit_action', - 'log_action', - array( - 'table' => 'log_link_visit_action', - 'tableAlias' => 'log_link_visit_action_foo', - 'joinOn' => "log_link_visit_action.idvisit = log_link_visit_action_foo.idvisit" - ), - array( - 'table' => 'log_action', - 'tableAlias' => 'log_action_foo', - 'joinOn' => "log_link_visit_action_foo.idaction_url = log_action_foo.idaction" - ), - array( - 'table' => 'log_link_visit_action', - 'tableAlias' => 'log_link_visit_action_bar', - 'joinOn' => "log_link_visit_action.idvisit = log_link_visit_action_bar.idvisit" - ), - array( - 'table' => 'log_action', - 'tableAlias' => 'log_action_bar', - 'joinOn' => "log_link_visit_action_bar.idaction_url = log_action_bar.idaction" - ) - ); - - $generator = $this->makeGenerator($tables); - usort($tables, array($generator, 'sortTablesForJoin')); - - $expected = array( - array( - 'table' => 'log_link_visit_action', - 'tableAlias' => 'log_link_visit_action_foo', - 'joinOn' => 'log_link_visit_action.idvisit = log_link_visit_action_foo.idvisit', - ), - array( - 'table' => 'log_link_visit_action', - 'tableAlias' => 'log_link_visit_action_bar', - 'joinOn' => "log_link_visit_action.idvisit = log_link_visit_action_bar.idvisit" - ), - array( - 'table' => 'log_action', - 'tableAlias' => 'log_action_foo', - 'joinOn' => 'log_link_visit_action_foo.idaction_url = log_action_foo.idaction', - ), - array( - 'table' => 'log_action', - 'tableAlias' => 'log_action_bar', - 'joinOn' => "log_link_visit_action_bar.idaction_url = log_action_bar.idaction" - ), - 'log_link_visit_action', - 'log_action', - ); - - $this->assertEquals($expected, $tables); - } - private function generate($tables) { $generator = $this->makeGenerator($tables); |