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/Commands/AddCustomDimensionTest.php')
m---------plugins/CustomDimensions0
-rw-r--r--plugins/CustomDimensions/tests/Commands/AddCustomDimensionTest.php164
2 files changed, 164 insertions, 0 deletions
diff --git a/plugins/CustomDimensions b/plugins/CustomDimensions
deleted file mode 160000
-Subproject 318661a2fb1ef3b3e5d6d999ae8b9628cb5a113
diff --git a/plugins/CustomDimensions/tests/Commands/AddCustomDimensionTest.php b/plugins/CustomDimensions/tests/Commands/AddCustomDimensionTest.php
new file mode 100644
index 0000000000..b96286f0da
--- /dev/null
+++ b/plugins/CustomDimensions/tests/Commands/AddCustomDimensionTest.php
@@ -0,0 +1,164 @@
+<?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\Commands;
+
+use Piwik\Plugins\CustomDimensions\Commands\AddCustomDimension;
+use Piwik\Plugins\CustomDimensions\CustomDimensions;
+use Piwik\Plugins\CustomDimensions\Dao\LogTable;
+use Symfony\Component\Console\Application;
+use Symfony\Component\Console\Tester\CommandTester;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+
+/**
+ * @group CustomDimensions
+ * @group CustomDimensionsTest
+ * @group Plugins
+ * @group Plugins
+ */
+class AddCustomDimensionTest extends IntegrationTestCase
+{
+ public function testExecute_ShouldThrowException_IfArgumentIsMissing()
+ {
+ $this->expectException(\InvalidArgumentException::class);
+ $this->expectExceptionMessage('The specified scope is invalid. Use either');
+
+ $this->executeCommand(null, null);
+ }
+
+ public function testExecute_ShouldThrowException_IfScopeIsInvalid()
+ {
+ $this->expectException(\InvalidArgumentException::class);
+ $this->expectExceptionMessage('The specified scope is invalid. Use either "--scope=visit" or "--scope=action"');
+
+ $this->executeCommand('invalidscope', null);
+ }
+
+ public function testExecute_ShouldThrowException_IfCountIsNotANumber()
+ {
+ $this->expectException(\InvalidArgumentException::class);
+ $this->expectExceptionMessage('Option "count" must be a number');
+
+ $this->executeCommand(CustomDimensions::SCOPE_VISIT, '545fddfd');
+ }
+
+ public function testExecute_ShouldThrowException_IfCountIsLessThanONe()
+ {
+ $this->expectException(\InvalidArgumentException::class);
+ $this->expectExceptionMessage('Option "count" must be at least one');
+
+ $this->executeCommand(CustomDimensions::SCOPE_VISIT, '0');
+ }
+
+ public function testExecute_ShouldThrowException_IfUserCancelsConfirmation()
+ {
+ $result = $this->executeCommand(CustomDimensions::SCOPE_VISIT, $count = 5, false);
+ $this->assertStringEndsWith('Are you sure you want to perform this action? (y/N)', $result);
+ }
+
+ public function testExecute_ShouldAddSpecifiedCount()
+ {
+ $logVisit = new LogTable(CustomDimensions::SCOPE_VISIT);
+ $this->assertSame(range(1,5), $logVisit->getInstalledIndexes());
+
+ $logConversion = new LogTable(CustomDimensions::SCOPE_CONVERSION);
+ $this->assertSame(range(1,5), $logConversion->getInstalledIndexes());
+
+ $logAction = new LogTable(CustomDimensions::SCOPE_ACTION);
+ $this->assertSame(range(1,5), $logAction->getInstalledIndexes());
+
+ $result = $this->executeCommand(CustomDimensions::SCOPE_ACTION, $count = 3);
+
+ self::assertStringContainsString('Adding 3 Custom Dimension(s) in scope action.', $result);
+ self::assertStringContainsString('Are you sure you want to perform this action?', $result);
+ self::assertStringContainsString('Starting to add Custom Dimension(s)', $result);
+ self::assertStringContainsString('Your Piwik is now configured for up to 8 Custom Dimensions in scope action.', $result);
+
+ $logVisit = new LogTable(CustomDimensions::SCOPE_VISIT);
+ $this->assertSame(range(1,5), $logVisit->getInstalledIndexes());
+
+ $logConversion = new LogTable(CustomDimensions::SCOPE_CONVERSION);
+ $this->assertSame(range(1,5), $logConversion->getInstalledIndexes());
+
+ $logAction = new LogTable(CustomDimensions::SCOPE_ACTION);
+ $this->assertSame(range(1,8), $logAction->getInstalledIndexes());
+ }
+
+ public function testExecute_ShouldAddSpecifiedCount_IfScopeIsVisitShouldAlsoUpdateConversion()
+ {
+ $logVisit = new LogTable(CustomDimensions::SCOPE_VISIT);
+ $this->assertSame(range(1,5), $logVisit->getInstalledIndexes());
+
+ $logConversion = new LogTable(CustomDimensions::SCOPE_CONVERSION);
+ $this->assertSame(range(1,5), $logConversion->getInstalledIndexes());
+
+ $logAction = new LogTable(CustomDimensions::SCOPE_ACTION);
+ $this->assertSame(range(1,8), $logAction->getInstalledIndexes());
+
+ $result = $this->executeCommand(CustomDimensions::SCOPE_VISIT, $count = 2);
+
+ self::assertStringContainsString('Adding 2 Custom Dimension(s) in scope visit.', $result);
+ self::assertStringContainsString('Are you sure you want to perform this action?', $result);
+ self::assertStringContainsString('Starting to add Custom Dimension(s)', $result);
+ self::assertStringContainsString('Your Piwik is now configured for up to 7 Custom Dimensions in scope visit.', $result);
+
+ $logVisit = new LogTable(CustomDimensions::SCOPE_VISIT);
+ $this->assertSame(range(1,7), $logVisit->getInstalledIndexes());
+
+ $logConversion = new LogTable(CustomDimensions::SCOPE_CONVERSION);
+ $this->assertSame(range(1,7), $logConversion->getInstalledIndexes());
+
+ $logAction = new LogTable(CustomDimensions::SCOPE_ACTION);
+ $this->assertSame(range(1,8), $logAction->getInstalledIndexes());
+ }
+
+ /**
+ * @param string|null $scope
+ * @param int|null $count
+ * @param bool $confirm
+ *
+ * @return string
+ */
+ private function executeCommand($scope, $count, $confirm = true)
+ {
+ $addCustomDimension = new AddCustomDimension();
+
+ $application = new Application();
+ $application->add($addCustomDimension);
+
+ $commandTester = new CommandTester($addCustomDimension);
+
+ $dialog = $addCustomDimension->getHelper('dialog');
+ $dialog->setInputStream($this->getInputStream($confirm ? 'yes' : 'no' . '\n'));
+
+ $params = array();
+ if (!is_null($scope)) {
+ $params['--scope'] = $scope;
+ }
+
+ if (!is_null($count)) {
+ $params['--count'] = $count;
+ }
+
+ $params['command'] = $addCustomDimension->getName();
+ $commandTester->execute($params);
+ $result = $commandTester->getDisplay();
+
+ return $result;
+ }
+
+ protected function getInputStream($input)
+ {
+ $stream = fopen('php://memory', 'r+', false);
+ fputs($stream, $input);
+ rewind($stream);
+
+ return $stream;
+ }
+}