1
0
قرینه از https://github.com/matomo-org/matomo.git synced 2025-08-24 16:07:37 +00:00
Files
matomo/tests/PHPUnit/Integration/Columns/DimensionMetricFactoryTest.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

157 خطوط
6.5 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\Tests\Integration\Columns;
use Piwik\Columns\Dimension;
use Piwik\Columns\DimensionMetricFactory;
use Piwik\Plugin\ArchivedMetric;
use Piwik\Plugin\ComputedMetric;
use Piwik\Plugins\UserCountry\Columns\Country;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
/**
* @group Core
*/
class DimensionMetricFactoryTest extends IntegrationTestCase
{
/** @var Dimension */
private $country;
public function setUp(): void
{
parent::setUp();
Fixture::loadAllTranslations();
$this->country = new Country();
}
public function tearDown(): void
{
Fixture::resetTranslations();
parent::tearDown();
}
private function makeFactory($dimension)
{
return new DimensionMetricFactory($dimension);
}
public function testCreateMetricCount()
{
$factory = $this->makeFactory($this->country);
$metric = $factory->createMetric(ArchivedMetric::AGGREGATION_COUNT);
$this->assertSame('nb_usercountry_country', $metric->getName());
$this->assertSame('Countries', $metric->getTranslatedName());
$this->assertSame('The number of Countries', $metric->getDocumentation());
$this->assertSame('UserCountry_VisitLocation', $metric->getCategoryId());
$this->assertSame('count(log_visit.location_country)', $metric->getQuery());
}
public function testCreateMetricUniqueCount()
{
$factory = $this->makeFactory($this->country);
$metric = $factory->createMetric(ArchivedMetric::AGGREGATION_UNIQUE);
$this->assertSame('nb_uniq_usercountry_country', $metric->getName());
$this->assertSame('Unique Countries', $metric->getTranslatedName());
$this->assertSame('The unique number of Countries', $metric->getDocumentation());
$this->assertSame('UserCountry_VisitLocation', $metric->getCategoryId());
$this->assertSame('count(distinct log_visit.location_country)', $metric->getQuery());
}
public function testCreateMetricSum()
{
$factory = $this->makeFactory($this->country);
$metric = $factory->createMetric(ArchivedMetric::AGGREGATION_SUM);
$this->assertSame('sum_usercountry_country', $metric->getName());
$this->assertSame('Total Countries', $metric->getTranslatedName());
$this->assertSame('The total number (sum) of Countries', $metric->getDocumentation());
$this->assertSame('UserCountry_VisitLocation', $metric->getCategoryId());
$this->assertSame('sum(log_visit.location_country)', $metric->getQuery());
}
public function testCreateMetricMin()
{
$factory = $this->makeFactory($this->country);
$metric = $factory->createMetric(ArchivedMetric::AGGREGATION_MIN);
$this->assertSame('min_usercountry_country', $metric->getName());
$this->assertSame('Min Countries', $metric->getTranslatedName());
$this->assertSame('The minimum value for Countries', $metric->getDocumentation());
$this->assertSame('UserCountry_VisitLocation', $metric->getCategoryId());
$this->assertSame('min(log_visit.location_country)', $metric->getQuery());
}
public function testCreateMetricMax()
{
$factory = $this->makeFactory($this->country);
$metric = $factory->createMetric(ArchivedMetric::AGGREGATION_MAX);
$this->assertSame('max_usercountry_country', $metric->getName());
$this->assertSame('Max Countries', $metric->getTranslatedName());
$this->assertSame('The maximum value for Countries', $metric->getDocumentation());
$this->assertSame('UserCountry_VisitLocation', $metric->getCategoryId());
$this->assertSame('max(log_visit.location_country)', $metric->getQuery());
}
public function testCreateMetricWithValue()
{
$factory = $this->makeFactory($this->country);
$metric = $factory->createMetric(ArchivedMetric::AGGREGATION_COUNT_WITH_NUMERIC_VALUE);
$this->assertSame('nb_with_usercountry_country', $metric->getName());
$this->assertSame('Entries with Country', $metric->getTranslatedName());
$this->assertSame('The number of entries that have a value set for Country', $metric->getDocumentation());
$this->assertSame('UserCountry_VisitLocation', $metric->getCategoryId());
$this->assertSame('sum(if(log_visit.location_country > 0, 1, 0))', $metric->getQuery());
}
public function testCreateCustomMetric()
{
$factory = $this->makeFactory($this->country);
$metric = $factory->createCustomMetric($name = 'sum_times_10', $translated = 'MyMetric', $aggregation = 'sum(%s) * 10', $documentation = 'FoobarBaz');
$this->assertSame($name, $metric->getName());
$this->assertSame($translated, $metric->getTranslatedName());
$this->assertSame($documentation, $metric->getDocumentation());
$this->assertSame('UserCountry_VisitLocation', $metric->getCategoryId());
$this->assertSame('sum(log_visit.location_country) * 10', $metric->getQuery());
}
public function testCreateComputedMetricAverage()
{
$factory = $this->makeFactory($this->country);
$metric = $factory->createComputedMetric($metricName1 = 'bounce_count', 'nb_visits', ComputedMetric::AGGREGATION_AVG);
$this->assertSame('avg_bounce_count_per_visits', $metric->getName());
$this->assertSame('Avg. Actions In Visit per Visit', $metric->getTranslatedName());
$this->assertSame('Average value of "Actions In Visit" per "Visits".', $metric->getDocumentation());
$this->assertSame('UserCountry_VisitLocation', $metric->getCategoryId());
$this->assertCount(2, $metric->getDependentMetrics());
}
public function testCreateComputedMetricRate()
{
$factory = $this->makeFactory($this->country);
$metric = $factory->createComputedMetric($metricName1 = 'bounce_count', 'nb_visits', ComputedMetric::AGGREGATION_RATE);
$this->assertSame('bounce_count_visits_rate', $metric->getName());
$this->assertSame('Bounces Rate', $metric->getTranslatedName());
$this->assertSame('The ratio of "Actions In Visit" out of all "Visits".', $metric->getDocumentation());
$this->assertSame('UserCountry_VisitLocation', $metric->getCategoryId());
$this->assertCount(2, $metric->getDependentMetrics());
}
}