diff options
author | diosmosis <benaka@piwik.pro> | 2014-09-19 21:42:50 +0400 |
---|---|---|
committer | diosmosis <benaka@piwik.pro> | 2014-09-19 21:42:50 +0400 |
commit | 71dfe38e139e860ea460e0a98fa09c30d9dcbedb (patch) | |
tree | c4a9721425eb2c10c14e2edc5b47eef6949e6cec /tests/PHPUnit/Core | |
parent | 1ad956d65c6eb49c3d6b192d0adac9ce33aa0989 (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.php | 32 |
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')); |