1
0
قرینه از https://github.com/matomo-org/matomo.git synced 2025-08-22 15:07:44 +00:00
Files
matomo/plugins/Transitions/tests/Integration/TransitionsMaxAllowedPeriodTest.php
Stefan Giehl d6d72d1fa7 [Coding Style] Enable rule PSR1.Methods.CamelCapsMethodName.NotCamelCaps (#22144)
* [Coding Style] Enable rule PSR1.Methods.CamelCapsMethodName.NotCamelCaps

* [Coding Style] Use camel case for method names in API plugin tests (#22145)

* [Coding Style] Use camel case for method names in Core* plugin tests (#22147)

* [Coding Style] Use camel case for method names in core Unit tests (#22149)

* [Coding Style] Use camel case for method names in Actions and BulkTracking plugin tests (#22146)

* [Coding Style] Use camel case for method names in CustomDimensions and CustomJSTracker plugin tests (#22148)

* [Coding Style] Use camel case for method names in core Integration tests (#22151)

* [Coding Style] Use camel case for method names in more core plugin tests (#22153)

* [Coding Style] Use camel case for method names in more core plugin tests (#22157)

* [Coding Style] Use camel case for method names in more core plugin tests

* Update plugins/Monolog/tests/Unit/Processor/ExceptionToTextProcessorTest.php

Co-authored-by: Michal Kleiner <michal@innocraft.com>

---------

Co-authored-by: Michal Kleiner <michal@innocraft.com>

* [Coding Style] Use camel case for method names in more core plugin tests (#22159)

* [Coding Style] Use camel case for method names in remaining tests (#22160)

* [Coding Style] Use camel case for method names in remaining tests

* rename expected test files

---------

Co-authored-by: Michal Kleiner <michal@innocraft.com>
2024-04-25 20:57:55 +02:00

193 خطوط
6.1 KiB
PHP

<?php
/**
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
namespace Piwik\Plugins\Transitions\tests\Integration;
use Piwik\Plugins\Transitions\Transitions;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Config;
use Piwik\Tests\Framework\Fixture;
use Piwik\Plugins\Transitions\API;
/**
* Tests the transitions plugin max_period_allowed setting
*
* @group TransitionsMaxAllowedPeriodTest
* @group Plugins
*/
class TransitionsMaxAllowedPeriodTest extends IntegrationTestCase
{
public $api;
protected static function configureFixture($fixture)
{
parent::configureFixture($fixture);
$fixture->createSuperUser = true;
}
public function setUp(): void
{
parent::setUp();
Fixture::createWebsite('2010-02-03 00:00:00');
$this->api = API::getInstance();
$t = Fixture::getTracker(1, '2012-08-09 01:02:03', $defaultInit = true, $useLocalTracker = false);
$t->setUrl('http://example.org/page/one.html');
$t->doTrackPageView('incredible title ');
}
public function testShouldThrowExceptionIfPeriodNotAllowed()
{
$invalidPeriods = [
'day' => ['week', 'month', 'year'],
'week' => ['month', 'year'],
'month' => ['year'],
];
foreach ($invalidPeriods as $period => $invalids) {
Config::setSetting('Transitions_1', 'max_period_allowed', $period);
foreach ($invalids as $ip) {
try {
$this->api->getTransitionsForAction(
'http://example.org/page/one.html',
'url',
1,
$ip,
'2012-08-09'
);
$this->fail("Failed asserting that exception 'PeriodNotAllowed' was thrown");
} catch (\Exception $e) {
$this->assertEquals('PeriodNotAllowed', $e->getMessage());
}
}
}
}
public function testShouldReturnDataIfPeriodAllowed()
{
$validPeriods = [
'day' => ['day'],
'week' => ['day', 'week'],
'month' => ['day', 'week', 'month'],
'year' => ['day', 'week', 'month', 'year'],
'all' => ['day', 'week', 'month', 'year'],
];
foreach ($validPeriods as $period => $valids) {
Config::setSetting('Transitions_1', 'max_period_allowed', $period);
foreach ($valids as $vp) {
$r = $this->api->getTransitionsForAction(
'http://example.org/page/one.html',
'url',
1,
$vp,
'2012-08-09'
);
self::assertEquals(1, $r['pageMetrics']['pageviews']);
}
}
}
public function testShouldThrowExceptionIfInvalidLimitBeforeGroup()
{
$this->expectException(\Exception::class);
$this->expectExceptionMessage('limitBeforeGrouping has to be an integer.');
$this->api->getTransitionsForAction(
'http://example.org/page/one.html',
'url',
1,
'range',
'2012-08-09,2012-08-10',
false,
'all'
);
}
public function testShouldPassIfLimitBeforeGroupPassingIntAsString()
{
$report = $this->api->getTransitionsForAction(
'http://example.org/page/one.html',
'url',
1,
'range',
'2012-08-09,2012-08-10',
false,
'100'
);
$this->assertIsArray($report);
}
public function testShouldThrowExceptionIfRangeDayCountIsLargerThanDayPeriod()
{
Config::setSetting('Transitions_1', 'max_period_allowed', 'day');
$this->expectException(\Exception::class);
$this->expectExceptionMessage('PeriodNotAllowed');
$this->api->getTransitionsForAction(
'http://example.org/page/one.html',
'url',
1,
'range',
'2012-08-09,2012-08-10'
);
}
public function testShouldThrowExceptionIfRangeDayCountIsLargerThanWeekPeriod()
{
Config::setSetting('Transitions_1', 'max_period_allowed', 'day');
$this->expectException(\Exception::class);
$this->expectExceptionMessage('PeriodNotAllowed');
$this->api->getTransitionsForAction(
'http://example.org/page/one.html',
'url',
1,
'range',
'2012-08-09,2012-08-17'
);
}
public function testShouldThrowExceptionIfRangeDayCountIsLargerThanMonthPeriod()
{
Config::setSetting('Transitions_1', 'max_period_allowed', 'day');
$this->expectException(\Exception::class);
$this->expectExceptionMessage('PeriodNotAllowed');
$this->api->getTransitionsForAction(
'http://example.org/page/one.html',
'url',
1,
'range',
'2012-08-09,2012-09-10'
);
}
public function testShouldThrowExceptionIfRangeDayCountIsLargerThanYearPeriod()
{
Config::setSetting('Transitions_1', 'max_period_allowed', 'day');
$this->expectException(\Exception::class);
$this->expectExceptionMessage('PeriodNotAllowed');
$this->api->getTransitionsForAction(
'http://example.org/page/one.html',
'url',
1,
'range',
'2012-08-09,2013-08-10'
);
}
public function testShouldUseSiteConfigInsteadOfGeneralIfSiteConfigExists()
{
Config::setSetting('Transitions_1', 'max_period_allowed', null);
Config::setSetting('Transitions', 'max_period_allowed', 'month');
$maxAllowedPeriod = Transitions::getPeriodAllowedConfig(1);
$this->assertEquals('month', $maxAllowedPeriod);
Config::setSetting('Transitions_1', 'max_period_allowed', 'week');
$maxAllowedPeriod = Transitions::getPeriodAllowedConfig(1);
$this->assertEquals('week', $maxAllowedPeriod);
}
}