diff options
19 files changed, 277 insertions, 121 deletions
diff --git a/core/API/DataTablePostProcessor.php b/core/API/DataTablePostProcessor.php index e62387f451..59be19285e 100644 --- a/core/API/DataTablePostProcessor.php +++ b/core/API/DataTablePostProcessor.php @@ -100,14 +100,14 @@ class DataTablePostProcessor $dataTable = $this->applyLabelFilter($dataTable); $dataTable = $this->applyMetricsFormatting($dataTable); - $dataTable = $this->convertSegmentValueToSegmentFilter($dataTable); + $dataTable = $this->convertSegmentValueToSegment($dataTable); return $dataTable; } - public function convertSegmentValueToSegmentFilter(DataTableInterface $dataTable) + public function convertSegmentValueToSegment(DataTableInterface $dataTable) { - $dataTable->filter('AddSegmentFilterBySegmentValue', array($this->report)); + $dataTable->filter('AddSegmentBySegmentValue', array($this->report)); $dataTable->filter('ColumnCallbackDeleteMetadata', array('segmentValue')); return $dataTable; diff --git a/core/DataTable/Filter/AddSegmentFilter.php b/core/DataTable/Filter/AddSegmentByLabel.php index 48093284a9..a841f18c9a 100644 --- a/core/DataTable/Filter/AddSegmentFilter.php +++ b/core/DataTable/Filter/AddSegmentByLabel.php @@ -17,12 +17,12 @@ use Piwik\Development; * * **Basic usage example** * - * $dataTable->filter('AddSegmentFilter', array('segmentName')); - * $dataTable->filter('AddSegmentFilter', array(array('segmentName1', 'segment2'), ';'); + * $dataTable->filter('AddSegmentByLabel', array('segmentName')); + * $dataTable->filter('AddSegmentByLabel', array(array('segmentName1', 'segment2'), ';'); * * @api */ -class AddSegmentFilter extends BaseFilter +class AddSegmentByLabel extends BaseFilter { private $segments; private $delimiter; @@ -48,7 +48,7 @@ class AddSegmentFilter extends BaseFilter } /** - * See {@link AddSegmentFilter}. + * See {@link AddSegmentByLabel}. * * @param DataTable $table */ @@ -58,7 +58,7 @@ class AddSegmentFilter extends BaseFilter $segments = $this->segments; if (empty($segments)) { - $msg = 'AddSegmentFilter is called without having any segments defined'; + $msg = 'AddSegmentByLabel is called without having any segments defined'; Development::error($msg); return; } diff --git a/core/DataTable/Filter/AddSegmentFilterByLabelMapping.php b/core/DataTable/Filter/AddSegmentByLabelMapping.php index 8a69376938..95d6e05c79 100644 --- a/core/DataTable/Filter/AddSegmentFilterByLabelMapping.php +++ b/core/DataTable/Filter/AddSegmentByLabelMapping.php @@ -18,11 +18,11 @@ use Piwik\DataTable\BaseFilter; * * **Basic usage example** * - * $dataTable->filter('AddSegmentFilterByLabelMapping', array('segmentName', array('1' => 'smartphone, '2' => 'desktop'))); + * $dataTable->filter('AddSegmentByLabelMapping', array('segmentName', array('1' => 'smartphone, '2' => 'desktop'))); * * @api */ -class AddSegmentFilterByLabelMapping extends BaseFilter +class AddSegmentByLabelMapping extends BaseFilter { private $segment; private $mapping; @@ -41,7 +41,7 @@ class AddSegmentFilterByLabelMapping extends BaseFilter } /** - * See {@link AddSegmentFilterByLabelMapping}. + * See {@link AddSegmentByLabelMapping}. * * @param DataTable $table */ diff --git a/core/DataTable/Filter/AddSegmentFilterBySegmentValue.php b/core/DataTable/Filter/AddSegmentBySegmentValue.php index fd185efeaa..89c3b6a59b 100644 --- a/core/DataTable/Filter/AddSegmentFilterBySegmentValue.php +++ b/core/DataTable/Filter/AddSegmentBySegmentValue.php @@ -12,16 +12,16 @@ use Piwik\DataTable\BaseFilter; use Piwik\DataTable; /** - * Converts for each row of a {@link DataTable} a segmentValue to a segmentFilter. The name of the segment + * Converts for each row of a {@link DataTable} a segmentValue to a segment (expression). The name of the segment * is automatically detected based on the given report. * * **Basic usage example** * - * $dataTable->filter('AddSegmentFilterBySegmentValue', array($reportInstance)); + * $dataTable->filter('AddSegmentBySegmentValue', array($reportInstance)); * * @api */ -class AddSegmentFilterBySegmentValue extends BaseFilter +class AddSegmentBySegmentValue extends BaseFilter { /** * @var \Piwik\Plugin\Report @@ -39,7 +39,7 @@ class AddSegmentFilterBySegmentValue extends BaseFilter } /** - * See {@link AddSegmentFilterBySegmentValue}. + * See {@link AddSegmentBySegmentValue}. * * @param DataTable $table * @return int The number of deleted rows. diff --git a/core/DataTable/Filter/PrependSegment.php b/core/DataTable/Filter/PrependSegment.php new file mode 100644 index 0000000000..34d14e6f0a --- /dev/null +++ b/core/DataTable/Filter/PrependSegment.php @@ -0,0 +1,34 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\DataTable\Filter; + +use Piwik\DataTable; + +/** + * Executes a callback for each row of a {@link DataTable} and prepends each existing segment with the + * given segment. + * + * **Basic usage example** + * + * $dataTable->filter('PrependSegment', array('segmentName==segmentValue;')); + * + * @api + */ +class PrependSegment extends PrependValueToMetadata +{ + /** + * @param DataTable $table + * @param string $prependSegment The segment to prepend if a segment is already defined. Make sure to include + * A condition, eg the segment should end with ';' or ',' + */ + public function __construct($table, $prependSegment = '') + { + parent::__construct($table, 'segment', $prependSegment); + } +} diff --git a/core/DataTable/Filter/PrependSegmentFilter.php b/core/DataTable/Filter/PrependSegmentFilter.php deleted file mode 100644 index 41718b661f..0000000000 --- a/core/DataTable/Filter/PrependSegmentFilter.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php -/** - * Piwik - free/libre analytics platform - * - * @link http://piwik.org - * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - * - */ -namespace Piwik\DataTable\Filter; - -use Piwik\DataTable; - -/** - * Executes a callback for each row of a {@link DataTable} and prepends each existing segmentFilter with the - * given segment. - * - * **Basic usage example** - * - * $dataTable->filter('PrependSegmentFilter', array('segmentName==segmentValue;')); - * - * @api - */ -class PrependSegmentFilter extends PrependValueToMetadata -{ - /** - * @param DataTable $table - * @param string $prependSegmentFilter The segment to prepend if a segmentFilter is defined. Make sure to include - * A condition, eg the segment should end with ';' or ',' - */ - public function __construct($table, $prependSegmentFilter = '') - { - parent::__construct($table, 'segment', $prependSegmentFilter); - } -} diff --git a/core/Date.php b/core/Date.php index 63c6384729..a046f4e27a 100644 --- a/core/Date.php +++ b/core/Date.php @@ -154,6 +154,19 @@ class Date } /** + * Returns the current hour in UTC timezone. + * @return string + * @throws Exception + */ + public function getHourUTC() + { + $dateTime = $this->getDatetime(); + $hourInTz = Date::factory($dateTime, 'UTC')->toString('G'); + + return $hourInTz; + } + + /** * Returns the start of the day of the current timestamp in UTC. For example, * if the current timestamp is `'2007-07-24 14:04:24'` in UTC, the result will * be `'2007-07-24'`. @@ -627,14 +640,6 @@ class Date return $out; } - public function getHourInUTC() - { - $dateTime = $this->getDatetime(); - $hourInTz = Date::factory($dateTime, 'UTC')->toString('G'); - - return $hourInTz; - } - /** * Adds `$n` days to `$this` date and returns the result in a new Date. * instance. diff --git a/plugins/DevicesDetection/API.php b/plugins/DevicesDetection/API.php index f1904c3946..36fcd8fb95 100644 --- a/plugins/DevicesDetection/API.php +++ b/plugins/DevicesDetection/API.php @@ -55,7 +55,7 @@ class API extends \Piwik\Plugin\API $this->ensureDefaultRowsInTable($dataTable); $mapping = DeviceParserAbstract::getAvailableDeviceTypeNames(); - $dataTable->filter('AddSegmentFilterByLabelMapping', array('deviceType', $mapping)); + $dataTable->filter('AddSegmentByLabelMapping', array('deviceType', $mapping)); $dataTable->filter('ColumnCallbackAddMetadata', array('label', 'logo', __NAMESPACE__ . '\getDeviceTypeLogo')); $dataTable->filter('ColumnCallbackReplace', array('label', __NAMESPACE__ . '\getDeviceTypeLabel')); return $dataTable; @@ -198,7 +198,7 @@ class API extends \Piwik\Plugin\API $dataTable = $this->getDataTable('DevicesDetection_osVersions', $idSite, $period, $date, $segment); $segments = array('operatingSystemCode', 'operatingSystemVersion'); - $dataTable->filter('AddSegmentFilter', array($segments, Archiver::BROWSER_SEPARATOR)); + $dataTable->filter('AddSegmentByLabel', array($segments, Archiver::BROWSER_SEPARATOR)); $dataTable->filter('ColumnCallbackAddMetadata', array('label', 'logo', __NAMESPACE__ . '\getOsLogo')); // use GroupBy filter to avoid duplicate rows if old (UserSettings) and new (DevicesDetection) reports were combined $dataTable->filter('GroupBy', array('label', __NAMESPACE__ . '\getOsFullName')); @@ -257,7 +257,7 @@ class API extends \Piwik\Plugin\API $dataTable = $this->getDataTable('DevicesDetection_browserVersions', $idSite, $period, $date, $segment); $segments = array('browserCode', 'browserVersion'); - $dataTable->filter('AddSegmentFilter', array($segments, Archiver::BROWSER_SEPARATOR)); + $dataTable->filter('AddSegmentByLabel', array($segments, Archiver::BROWSER_SEPARATOR)); $dataTable->filter('ColumnCallbackAddMetadata', array('label', 'logo', __NAMESPACE__ . '\getBrowserLogo')); $dataTable->filter('ColumnCallbackReplace', array('label', __NAMESPACE__ . '\getBrowserNameWithVersion')); return $dataTable; diff --git a/plugins/Referrers/API.php b/plugins/Referrers/API.php index 992842a294..dbafc293e2 100644 --- a/plugins/Referrers/API.php +++ b/plugins/Referrers/API.php @@ -235,8 +235,8 @@ class API extends \Piwik\Plugin\API { $dataTable = $this->getDataTable(Archiver::SEARCH_ENGINES_RECORD_NAME, $idSite, $period, $date, $segment, $expanded); - $dataTable->filter('AddSegmentFilter', array('referrerName')); - $dataTable->queueFilter('PrependSegmentFilter', array('referrerType==search;')); + $dataTable->filter('AddSegmentByLabel', array('referrerName')); + $dataTable->queueFilter('PrependSegment', array('referrerType==search;')); $dataTable->queueFilter('ColumnCallbackAddMetadata', array('label', 'url', __NAMESPACE__ . '\getSearchEngineUrlFromName')); $dataTable->queueFilter('MetadataCallbackAddMetadata', array('url', 'logo', __NAMESPACE__ . '\getSearchEngineLogoFromUrl')); return $dataTable; @@ -277,8 +277,8 @@ class API extends \Piwik\Plugin\API { $dataTable = $this->getDataTable(Archiver::CAMPAIGNS_RECORD_NAME, $idSite, $period, $date, $segment, $expanded); - $dataTable->filter('AddSegmentFilter', array('referrerName')); - $dataTable->queueFilter('PrependSegmentFilter', array('referrerType==campaign;')); + $dataTable->filter('AddSegmentByLabel', array('referrerName')); + $dataTable->queueFilter('PrependSegment', array('referrerType==campaign;')); return $dataTable; } @@ -292,7 +292,7 @@ class API extends \Piwik\Plugin\API public function getWebsites($idSite, $period, $date, $segment = false, $expanded = false) { $dataTable = $this->getDataTable(Archiver::WEBSITES_RECORD_NAME, $idSite, $period, $date, $segment, $expanded); - $dataTable->filter('AddSegmentFilter', array('referrerName')); + $dataTable->filter('AddSegmentByLabel', array('referrerName')); return $dataTable; } diff --git a/plugins/UserCountry/API.php b/plugins/UserCountry/API.php index c9fcfeec78..38408b39e6 100644 --- a/plugins/UserCountry/API.php +++ b/plugins/UserCountry/API.php @@ -70,7 +70,7 @@ class API extends \Piwik\Plugin\API $dataTable = $this->getDataTable(Archiver::REGION_RECORD_NAME, $idSite, $period, $date, $segment); $segments = array('regionCode', 'countryCode'); - $dataTable->filter('AddSegmentFilter', array($segments, Archiver::LOCATION_SEPARATOR)); + $dataTable->filter('AddSegmentByLabel', array($segments, Archiver::LOCATION_SEPARATOR)); $separator = Archiver::LOCATION_SEPARATOR; $unk = Visit::UNKNOWN_CODE; @@ -115,7 +115,7 @@ class API extends \Piwik\Plugin\API $dataTable = $this->getDataTable(Archiver::CITY_RECORD_NAME, $idSite, $period, $date, $segment); $segments = array('city', 'regionCode', 'countryCode'); - $dataTable->filter('AddSegmentFilter', array($segments, Archiver::LOCATION_SEPARATOR)); + $dataTable->filter('AddSegmentByLabel', array($segments, Archiver::LOCATION_SEPARATOR)); $separator = Archiver::LOCATION_SEPARATOR; $unk = Visit::UNKNOWN_CODE; diff --git a/plugins/VisitTime/API.php b/plugins/VisitTime/API.php index c78534c193..928e8c95f3 100644 --- a/plugins/VisitTime/API.php +++ b/plugins/VisitTime/API.php @@ -52,30 +52,12 @@ class API extends \Piwik\Plugin\API $table = $this->getDataTable(Archiver::SERVER_TIME_RECORD_NAME, $idSite, $period, $date, $segment); $timezone = Site::getTimezoneFor($idSite); - - $range = Range::parseDateRange($date); - - if (!empty($range[2])) { - $endDate = Date::factory($range[2]); - } else if (!empty($range[1])) { - $endDate = Date::factory($range[1]); - } else { - $endDate = Date::factory($date); - } - - $table->filter('AddSegmentValue', array(function ($label) use ($timezone, $endDate) { - $hour = str_pad($label, 2, 0, STR_PAD_LEFT); - $time = $hour . ':00:00'; - - $dateInTimezone = $endDate->setTime($time)->setTimezone($timezone); - $hourInTz = $dateInTimezone->getHourInUTC(); - - return $hourInTz; - })); + $table->filter('Piwik\Plugins\VisitTime\DataTable\Filter\AddSegmentByLabelInUTC', array($timezone, $period, $date)); if ($hideFutureHoursWhenToday) { $table = $this->removeHoursInFuture($table, $idSite, $period, $date); } + return $table; } diff --git a/plugins/VisitTime/DataTable/Filter/AddSegmentByLabelInUTC.php b/plugins/VisitTime/DataTable/Filter/AddSegmentByLabelInUTC.php new file mode 100644 index 0000000000..0808c8c68c --- /dev/null +++ b/plugins/VisitTime/DataTable/Filter/AddSegmentByLabelInUTC.php @@ -0,0 +1,55 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\VisitTime\DataTable\Filter; + +use Piwik\DataTable; +use Piwik\Period; + +/** + * Adds a segment value to each row by interpreting the label value as hour in the website's timezone and + * converting the hour to UTC. + * + * **Basic usage example** + * + * $dataTable->filter('AddSegmentByLabelInUTC', array($idSite = 'UTC+1', $period = 'day', $date = 'today'); + */ +class AddSegmentByLabelInUTC extends DataTable\Filter\AddSegmentValue +{ + private $timezone; + private $date; + + /** + * @param DataTable $table + * @param int $timezone The timezone of the current selected site / the timezone of the labels + * @param string $period The requested period and date is needed to respect daylight saving etc. + * @param string $date + */ + public function __construct($table, $timezone, $period, $date) + { + $this->timezone = $timezone; + $this->date = Period\Factory::build($period, $date)->getDateEnd(); + + $self = $this; + + parent::__construct($table, function ($label) use ($self) { + $hour = str_pad($label, 2, 0, STR_PAD_LEFT); + + return $self->convertHourToUtc($hour); + }); + } + + public function convertHourToUTC($hour) + { + $dateWithHour = $this->date->setTime($hour . ':00:00'); + $dateInTimezone = $dateWithHour->setTimezone($this->timezone); + $hourInUTC = $dateInTimezone->getHourUTC(); + + return $hourInUTC; + } +}
\ No newline at end of file diff --git a/plugins/VisitTime/tests/Unit/AddSegmentByLabelInUTCTest.php b/plugins/VisitTime/tests/Unit/AddSegmentByLabelInUTCTest.php new file mode 100644 index 0000000000..bf0c828321 --- /dev/null +++ b/plugins/VisitTime/tests/Unit/AddSegmentByLabelInUTCTest.php @@ -0,0 +1,114 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +namespace Piwik\Plugins\VisitTime\tests\Unit; + +use Piwik\DataTable\Row; +use Piwik\DataTable; +use Piwik\Tests\Framework\TestCase\UnitTestCase; + +/** + * @group VisitTime + * @group AddSegmentByLabelInUTCTest + * @group Plugins + */ +class AddSegmentByLabelInUTCTest extends UnitTestCase +{ + private $filter = 'Piwik\Plugins\VisitTime\DataTable\Filter\AddSegmentByLabelInUTC'; + + /** + * @var DataTable + */ + private $table; + + public function setUp() + { + $this->table = new DataTable(); + $this->addRow(array('label' => '0')); + $this->addRow(array('label' => '1')); + $this->addRow(array('label' => '2')); + $this->addRow(array('label' => '12')); + $this->addRow(array('label' => '13')); + $this->addRow(array('label' => '14')); + $this->addRow(array('label' => '20')); + } + + private function addRow($columns) + { + $this->table->addRow($this->buildRow($columns)); + } + + private function buildRow($columns) + { + return new Row(array(Row::COLUMNS => $columns)); + } + + public function test_filter_shouldNotChangeHoursIfTimezoneIsUTCAlready() + { + $this->table->filter($this->filter, array('UTC', 'day', 'today')); + + $this->assertSegmentValues(array('0', '1', '2', '12', '13', '14', '20')); + } + + public function test_filter_shouldConvertHoursFromTimezoneIntoUTC_Minus1() + { + $this->table->filter($this->filter, array('UTC-1', 'day', 'today')); + $this->assertSegmentValues(array('1', '2', '3', '13', '14', '15', '21')); + } + + public function test_filter_shouldConvertHoursFromTimezoneIntoUTC_Plus1() + { + $this->table->filter($this->filter, array('UTC+1', 'day', 'today')); + $this->assertSegmentValuesInUTCplus1(); + } + + public function test_filter_shouldHandleRangePeriod_Plus1() + { + $this->table->filter($this->filter, array('UTC+1', 'range', '2015-02-02,2015-02-14')); + $this->assertSegmentValuesInUTCplus1(); + } + + public function test_filter_shouldHandleRangePeriodWithLast7_Plus1() + { + $this->table->filter($this->filter, array('UTC+1', 'range', 'last7')); + $this->assertSegmentValuesInUTCplus1(); + } + + public function test_filter_shouldHandleDayPeriodWithRange_Plus1() + { + $this->table->filter($this->filter, array('UTC+1', 'day', '2015-02-02,2015-02-14')); + $this->assertSegmentValuesInUTCplus1(); + } + + public function test_filter_shouldHandleWeekWithLast7_Plus1() + { + $this->table->filter($this->filter, array('UTC+1', 'day', 'last7')); + $this->assertSegmentValuesInUTCplus1(); + } + + public function test_filter_shouldIgnoreSummaryRow() + { + $row = $this->buildRow(array('label' => 'other')); + $this->table->addSummaryRow($row); + $this->table->filter($this->filter, array('UTC', 'day', 'today')); + + $this->assertFalse($row->getMetadata('segmentValue')); + } + + private function assertSegmentValuesInUTCplus1() + { + $this->assertSegmentValues(array('23', '0', '1', '11', '12', '13', '19')); + } + + private function assertSegmentValues($expectedSegmentValues) + { + $segmentValues = $this->table->getRowsMetadata('segmentValue'); + $this->assertSame($expectedSegmentValues, $segmentValues); + } + +} diff --git a/tests/PHPUnit/System/BackwardsCompatibility1XTest.php b/tests/PHPUnit/System/BackwardsCompatibility1XTest.php index 9c47da6fd5..f22408348d 100644 --- a/tests/PHPUnit/System/BackwardsCompatibility1XTest.php +++ b/tests/PHPUnit/System/BackwardsCompatibility1XTest.php @@ -103,7 +103,7 @@ class BackwardsCompatibility1XTest extends SystemTestCase // the label column is not the first column here 'MultiSites.getAll', - // those reports generate a different segmentFilter as a different raw value was stored that time + // those reports generate a different segment as a different raw value was stored that time 'DevicesDetection.getOsVersions', 'UserSettings.getOS', 'UserSettings.getBrowserType' diff --git a/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterByLabelMappingTest.php b/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterByLabelMappingTest.php index 4e5b128aca..fae1dc46b3 100644 --- a/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterByLabelMappingTest.php +++ b/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterByLabelMappingTest.php @@ -13,15 +13,15 @@ use Piwik\DataTable\Row; use Piwik\Tests\Framework\TestCase\UnitTestCase; /** - * @group AddSegmentFilterByLabelMappingTest + * @group AddSegmentByLabelMappingTest * @group DataTable * @group Filter * @group Unit * @group Core */ -class AddSegmentFilterByLabelMappingTest extends UnitTestCase +class AddSegmentByLabelMappingTest extends UnitTestCase { - private $filter = 'AddSegmentFilterByLabelMapping'; + private $filter = 'AddSegmentByLabelMapping'; /** * @var DataTable diff --git a/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterBySegmentValueTest.php b/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterBySegmentValueTest.php index eb84c2fce9..2815818070 100644 --- a/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterBySegmentValueTest.php +++ b/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterBySegmentValueTest.php @@ -17,15 +17,15 @@ use Piwik\Plugins\VisitsSummary\Reports\Get; use Piwik\Tests\Framework\TestCase\UnitTestCase; /** - * @group AddSegmentFilterBySegmentValueTest + * @group AddSegmentBySegmentValueTest * @group DataTable * @group Filter * @group Unit * @group Core */ -class AddSegmentFilterBySegmentValueTest extends UnitTestCase +class AddSegmentBySegmentValueTest extends UnitTestCase { - private $filter = 'AddSegmentFilterBySegmentValue'; + private $filter = 'AddSegmentBySegmentValue'; /** * @var DataTable @@ -56,18 +56,18 @@ class AddSegmentFilterBySegmentValueTest extends UnitTestCase return $row; } - public function test_filter_shouldGenerateASegmentFilterIfSegmentValueIsPresent() + public function test_filter_shouldGenerateASegmentIfSegmentValueIsPresent() { $segmentValue = 'existing'; - $expectedSegmentFilter = 'city==existing'; - $this->assertSegmentFilterForSegmentValueAndReport($this->report, $segmentValue, $expectedSegmentFilter); + $expectedSegment = 'city==existing'; + $this->assertSegmentForSegmentValueAndReport($this->report, $segmentValue, $expectedSegment); } public function test_filter_shouldUrlEncodeTheValue() { $segmentValue = 'existing täs/ts'; - $expectedSegmentFilter = 'city==existing+t%C3%A4s%2Fts'; - $this->assertSegmentFilterForSegmentValueAndReport($this->report, $segmentValue, $expectedSegmentFilter); + $expectedSegment = 'city==existing+t%C3%A4s%2Fts'; + $this->assertSegmentForSegmentValueAndReport($this->report, $segmentValue, $expectedSegment); } public function test_filter_shouldNotOverwriteAnExistingSegmentValue() @@ -76,7 +76,7 @@ class AddSegmentFilterBySegmentValueTest extends UnitTestCase $this->table->filter($this->filter, array($this->report)); - $this->assertSegmentFilter('city==mytest', $row); + $this->assertSegment('city==mytest', $row); } public function test_filter_shouldUseTheFirstSegment_IfAReportHasMultiple() @@ -84,29 +84,29 @@ class AddSegmentFilterBySegmentValueTest extends UnitTestCase $report = new GetCountry(); $this->assertCount(2, $report->getDimension()->getSegments()); - $this->assertSegmentFilterForSegmentValueAndReport($report, $segmentValue = 'existing', 'countryCode==existing'); + $this->assertSegmentForSegmentValueAndReport($report, $segmentValue = 'existing', 'countryCode==existing'); } - public function test_filter_shouldNotGenerateASegmentFilter_IfReportHasNoDimension() + public function test_filter_shouldNotGenerateASegment_IfReportHasNoDimension() { $report = new Get(); // VisitsSummary.get has no dimension $this->assertNull($report->getDimension()); - $this->assertSegmentFilterForSegmentValueAndReport($report, $segmentValue = 'existing', false); + $this->assertSegmentForSegmentValueAndReport($report, $segmentValue = 'existing', false); } - public function test_filter_shouldNotGenerateASegmentFilter_IfDimensionHasNoSegmentFilter() + public function test_filter_shouldNotGenerateASegment_IfDimensionHasNoSegmentFilter() { // outlinks currently has a dimensions but no segments, we have to use another report once it has segments $report = new GetOutlinks(); $this->assertEmpty($report->getDimension()->getSegments()); - $this->assertSegmentFilterForSegmentValueAndReport($report, $segmentValue = 'existing', false); + $this->assertSegmentForSegmentValueAndReport($report, $segmentValue = 'existing', false); } public function test_filter_shouldNotFail_IfNoReportGiven() { - $this->assertSegmentFilterForSegmentValueAndReport($report = null, $segmentValue = 'existing', false); + $this->assertSegmentForSegmentValueAndReport($report = null, $segmentValue = 'existing', false); } public function test_filter_shouldNotFail_IfDataTableHasNoRows() @@ -116,19 +116,19 @@ class AddSegmentFilterBySegmentValueTest extends UnitTestCase $this->assertSame(0, $table->getRowsCount()); } - private function assertSegmentFilterForSegmentValueAndReport($report, $segmentValue, $expectedSegmentFilter) + private function assertSegmentForSegmentValueAndReport($report, $segmentValue, $expectedSegment) { $row = $this->addRowWithMetadata(array('segmentValue' => $segmentValue)); $this->table->filter($this->filter, array($report)); - $this->assertSegmentFilter($expectedSegmentFilter, $row); + $this->assertSegment($expectedSegment, $row); } - private function assertSegmentFilter($expected, Row $row) + private function assertSegment($expected, Row $row) { - $segmentFilter = $row->getMetadata('segment'); - $this->assertSame($expected, $segmentFilter); + $segment = $row->getMetadata('segment'); + $this->assertSame($expected, $segment); } } diff --git a/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterTest.php b/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterTest.php index 1d9e3f919c..ef08247c9e 100644 --- a/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterTest.php +++ b/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterTest.php @@ -13,15 +13,15 @@ use Piwik\DataTable\Row; use Piwik\Tests\Framework\TestCase\UnitTestCase; /** - * @group AddSegmentFilterTest + * @group AddSegmentByLabelTest * @group DataTable * @group Filter * @group Unit * @group Core */ -class AddSegmentFilterTest extends UnitTestCase +class AddSegmentByLabelTest extends UnitTestCase { - private $filter = 'AddSegmentFilter'; + private $filter = 'AddSegmentByLabel'; /** * @var DataTable diff --git a/tests/PHPUnit/Unit/DataTable/Filter/PrependSegmentFilterTest.php b/tests/PHPUnit/Unit/DataTable/Filter/PrependSegmentFilterTest.php index 5dc4035f6b..d282db4c52 100644 --- a/tests/PHPUnit/Unit/DataTable/Filter/PrependSegmentFilterTest.php +++ b/tests/PHPUnit/Unit/DataTable/Filter/PrependSegmentFilterTest.php @@ -13,15 +13,15 @@ use Piwik\DataTable\Row; use Piwik\Tests\Framework\TestCase\UnitTestCase; /** - * @group PrependSegmentFilterTest + * @group PrependSegmentTest * @group DataTable * @group Filter * @group Unit * @group Core */ -class PrependSegmentFilterTest extends UnitTestCase +class PrependSegmentTest extends UnitTestCase { - private $filter = 'PrependSegmentFilter'; + private $filter = 'PrependSegment'; /** * @var DataTable diff --git a/tests/PHPUnit/Unit/DateTest.php b/tests/PHPUnit/Unit/DateTest.php index 8d29aa5f12..dadbba6461 100644 --- a/tests/PHPUnit/Unit/DateTest.php +++ b/tests/PHPUnit/Unit/DateTest.php @@ -92,21 +92,21 @@ class DateTest extends \PHPUnit_Framework_TestCase public function test_getHourInUTC() { $date = Date::factory('today', 'UTC'); - $hour = $date->getHourInUTC(); + $hour = $date->getHourUTC(); $this->assertSame('0', $hour); // hour is already in UTC $date = Date::factory('today', 'UTC+10'); - $hour = $date->getHourInUTC(); + $hour = $date->getHourUTC(); $this->assertSame('10', $hour); $date = Date::factory('today'); $date = $date->setTime('14:00:00')->setTimezone('UTC+10'); // 14-10 = 4 - $hour = $date->getHourInUTC(); + $hour = $date->getHourUTC(); $this->assertSame('4', $hour); $date = Date::factory('today'); $date = $date->setTime('14:00:00')->setTimezone('UTC-5'); // 14+5 = 19 - $hour = $date->getHourInUTC(); + $hour = $date->getHourUTC(); $this->assertSame('19', $hour); } |