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 'plugins/CustomDimensions/tests/Unit/Dimension/ExtractionsTest.php')
m---------plugins/CustomDimensions0
-rw-r--r--plugins/CustomDimensions/tests/Unit/Dimension/ExtractionsTest.php83
2 files changed, 83 insertions, 0 deletions
diff --git a/plugins/CustomDimensions b/plugins/CustomDimensions
deleted file mode 160000
-Subproject 318661a2fb1ef3b3e5d6d999ae8b9628cb5a113
diff --git a/plugins/CustomDimensions/tests/Unit/Dimension/ExtractionsTest.php b/plugins/CustomDimensions/tests/Unit/Dimension/ExtractionsTest.php
new file mode 100644
index 0000000000..97f7495371
--- /dev/null
+++ b/plugins/CustomDimensions/tests/Unit/Dimension/ExtractionsTest.php
@@ -0,0 +1,83 @@
+<?php
+/**
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CustomDimensions\tests\Unit\Dimension;
+use Piwik\Plugins\CustomDimensions\Dimension\Extractions;
+
+/**
+ * @group CustomDimensions
+ * @group ExtractionsTest
+ * @group Extractions
+ * @group Plugins
+ */
+class ExtractionsTest extends \PHPUnit\Framework\TestCase
+{
+ public function test_check_shouldFailWhenExtractionsIsNotAnArray()
+ {
+ $this->expectException(\Exception::class);
+ $this->expectExceptionMessage("extractions has to be an array");
+
+ $this->buildExtractions('')->check();
+ }
+
+ public function test_check_shouldFailWhenExtractionsDoesNotContainArrays()
+ {
+ $this->expectException(\Exception::class);
+ $this->expectExceptionMessage("Each extraction within extractions has to be an array");
+
+ $this->buildExtractions(array('5'))->check();
+ }
+
+ /**
+ * @dataProvider getInvalidExtraction
+ */
+ public function test_check_shouldFailWhenExtractionsDoesNotContainValidExtraction($extraction)
+ {
+ $this->expectException(\Exception::class);
+ $this->expectExceptionMessage('Each extraction within extractions must have a key "dimension" and "pattern" only');
+
+ $this->buildExtractions(array($extraction))->check();
+ }
+
+ public function getInvalidExtraction()
+ {
+ return array(
+ array(array()),
+ array(array('dimension' => 'url')),
+ array(array('pattern' => 'index(.+).html')),
+ array(array('dimension' => 'url', 'anything' => 'invalid')),
+ array(array('dimension' => 'url', 'pattern' => 'index(.+).html', 'anything' => 'invalid')),
+ );
+ }
+
+ public function test_check_shouldAlsoCheckExtractionAndFailIfValueIsInvalid()
+ {
+ $this->expectException(\Exception::class);
+ $this->expectExceptionMessage("Invald dimension 'invalId' used in an extraction. Available dimensions are: url, urlparam, action_name");
+
+ $extraction1 = array('dimension' => 'url', 'pattern' => 'index(.+).html');
+ $extraction2 = array('dimension' => 'invalId', 'pattern' => 'index');
+ $this->buildExtractions(array($extraction1, $extraction2))->check();
+ }
+
+ public function test_check_shouldNotFailWhenExtractionsDefinitionIsValid()
+ {
+ $extraction1 = array('dimension' => 'url', 'pattern' => 'index(.+).html');
+ $extraction2 = array('dimension' => 'urlparam', 'pattern' => 'index');
+ $ex = $this->buildExtractions(array($extraction1, $extraction2));
+ $ex->check();
+
+ self::assertInstanceOf(Extractions::class, $ex);
+ }
+
+ private function buildExtractions($extractions)
+ {
+ return new Extractions($extractions);
+ }
+
+}