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:
authordiosmosis <benaka@piwik.pro>2014-09-19 21:42:50 +0400
committerdiosmosis <benaka@piwik.pro>2014-09-19 21:42:50 +0400
commit71dfe38e139e860ea460e0a98fa09c30d9dcbedb (patch)
treec4a9721425eb2c10c14e2edc5b47eef6949e6cec /tests/PHPUnit/Core
parent1ad956d65c6eb49c3d6b192d0adac9ce33aa0989 (diff)
Make sure PivotByDimension respects original segment query parameter when fetching intersected tables by segment.
Diffstat (limited to 'tests/PHPUnit/Core')
-rw-r--r--tests/PHPUnit/Core/DataTable/Filter/PivotByDimensionTest.php32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/PHPUnit/Core/DataTable/Filter/PivotByDimensionTest.php b/tests/PHPUnit/Core/DataTable/Filter/PivotByDimensionTest.php
index 790c3cb6fe..976c4dee48 100644
--- a/tests/PHPUnit/Core/DataTable/Filter/PivotByDimensionTest.php
+++ b/tests/PHPUnit/Core/DataTable/Filter/PivotByDimensionTest.php
@@ -29,6 +29,14 @@ class PivotByDimensionTest extends PHPUnit_Framework_TestCase
*/
private $segmentTableCount;
+ /**
+ * Segment query params used to fetch intersected tables in PivotByDimension filter. Captured by mock
+ * API\Proxy class.
+ *
+ * @var array
+ */
+ public $segmentUsedToGetIntersected = array();
+
public function setUp()
{
$self = $this;
@@ -38,6 +46,8 @@ class PivotByDimensionTest extends PHPUnit_Framework_TestCase
if ($className == "\\Piwik\\Plugins\\UserCountry\\API"
&& $methodName == 'getCity'
) {
+ $self->segmentUsedToGetIntersected[] = $parameters['segment'];
+
return $self->getSegmentTable();
} else {
throw new Exception("Unknown API request: $className::$methodName.");
@@ -161,6 +171,9 @@ class PivotByDimensionTest extends PHPUnit_Framework_TestCase
$pivotFilter = new PivotByDimension($table, "Referrers.getKeywords", "UserCountry.City", 'nb_visits');
$pivotFilter->filter($table);
+ $expectedSegmentParams = array('referrerKeyword==row+1', 'referrerKeyword==row+2', 'referrerKeyword==row+3');
+ $this->assertEquals($expectedSegmentParams, $this->segmentUsedToGetIntersected);
+
$expectedRows = array(
array('label' => 'row 1', 'col 0' => 2, 'col 1' => false, 'col 2' => false),
array('label' => 'row 2', 'col 0' => 2, 'col 1' => 4, 'col 2' => false),
@@ -169,6 +182,25 @@ class PivotByDimensionTest extends PHPUnit_Framework_TestCase
$this->assertTableRowsEquals($expectedRows, $table);
}
+ public function testFilterUsesCorrectSegmentWhenPivotingSegmentedReport()
+ {
+ PluginManager::getInstance()->loadPlugins(array('Referrers', 'UserCountry', 'CustomVariables'));
+
+ $table = $this->getTableToFilter(true);
+
+ $_GET['segment'] = 'asegment==value';
+
+ $pivotFilter = new PivotByDimension($table, "Referrers.getKeywords", "UserCountry.City", 'nb_visits');
+ $pivotFilter->filter($table);
+
+ $expectedSegmentParams = array(
+ 'asegment==value;referrerKeyword==row+1',
+ 'asegment==value;referrerKeyword==row+2',
+ 'asegment==value;referrerKeyword==row+3'
+ );
+ $this->assertEquals($expectedSegmentParams, $this->segmentUsedToGetIntersected);
+ }
+
public function testFilterCorrectlyCreatesPivotTableWhenPivotMetricDoesNotExistInTable()
{
PluginManager::getInstance()->loadPlugins(array('Referrers', 'UserCountry', 'CustomVariables'));