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:
Diffstat (limited to 'tests/PHPUnit/Integration/Columns/DimensionMetricFactoryTest.php')
-rw-r--r--tests/PHPUnit/Integration/Columns/DimensionMetricFactoryTest.php159
1 files changed, 159 insertions, 0 deletions
diff --git a/tests/PHPUnit/Integration/Columns/DimensionMetricFactoryTest.php b/tests/PHPUnit/Integration/Columns/DimensionMetricFactoryTest.php
new file mode 100644
index 0000000000..4f03b9f8cc
--- /dev/null
+++ b/tests/PHPUnit/Integration/Columns/DimensionMetricFactoryTest.php
@@ -0,0 +1,159 @@
+<?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\Tests\Integration\Columns;
+
+use Piwik\Columns\ComputedMetricFactory;
+use Piwik\Columns\Dimension;
+use Piwik\Columns\DimensionMetricFactory;
+use Piwik\Columns\MetricsList;
+use Piwik\Plugin\ArchivedMetric;
+use Piwik\Plugin\ComputedMetric;
+use Piwik\Plugins\UserCountry\Columns\Country;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+use Piwik\Translate;
+
+/**
+ * @group Core
+ */
+class DimensionMetricFactoryTest extends IntegrationTestCase
+{
+ /** @var Dimension */
+ private $country;
+
+ public function setUp()
+ {
+ parent::setUp();
+
+ Translate::loadEnglishTranslation();
+
+ $this->country = new Country();
+ }
+
+ public function tearDown()
+ {
+ Translate::unloadEnglishTranslation();
+ parent::tearDown();
+ }
+
+ private function makeFactory($dimension)
+ {
+ return new DimensionMetricFactory($dimension);
+ }
+
+ public function test_createMetric_count()
+ {
+ $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 test_createMetric_uniqueCount()
+ {
+ $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 test_createMetric_sum()
+ {
+ $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 test_createMetric_min()
+ {
+ $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 test_createMetric_max()
+ {
+ $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 test_createMetric_withValue()
+ {
+ $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 test_createCustomMetric()
+ {
+ $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 test_createComputedMetric_average()
+ {
+ $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 test_createComputedMetric_rate()
+ {
+ $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());
+ }
+
+
+} \ No newline at end of file