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/LeftMenu/tests/Integration/APITest.php')
-rw-r--r--plugins/LeftMenu/tests/Integration/APITest.php144
1 files changed, 144 insertions, 0 deletions
diff --git a/plugins/LeftMenu/tests/Integration/APITest.php b/plugins/LeftMenu/tests/Integration/APITest.php
new file mode 100644
index 0000000000..0677f57c73
--- /dev/null
+++ b/plugins/LeftMenu/tests/Integration/APITest.php
@@ -0,0 +1,144 @@
+<?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\Plugins\LeftMenu\tests\Integration;
+
+use Piwik\Access;
+use Piwik\Plugins\LeftMenu\API;
+use Piwik\Plugins\LeftMenu\Settings;
+use \FakeAccess;
+
+/**
+ * @group LeftMenu
+ * @group APITest
+ * @group Plugins
+ */
+class APITest extends \IntegrationTestCase
+{
+ /**
+ * @var API
+ */
+ private $api;
+
+ /**
+ * @var Settings
+ */
+ private $settings;
+
+ public function setUp()
+ {
+ parent::setUp();
+
+ $this->api = API::getInstance();
+ $this->createSettings();
+ }
+
+ public function test_isEnabled_shouldReturnFalse_ByDefault()
+ {
+ $this->assertLeftMenuIsDisabled();
+
+ $this->setUser();
+ $this->assertLeftMenuIsDisabled();
+
+ $this->setSuperUser();
+ $this->assertLeftMenuIsDisabled();
+ }
+
+ public function test_isEnabled_shouldReturnTrue_IfEnabledSystemWideAndNoUserPreference()
+ {
+ $this->enableLeftMenuForAll();
+
+ $this->assertLeftMenuIsEnabled();
+
+ $this->setUser();
+ $this->assertLeftMenuIsEnabled();
+
+ $this->setAnonymous();
+ $this->assertLeftMenuIsEnabled();
+ }
+
+ public function test_isEnabled_AUserPreferenceShouldOverwriteASystemPreference_DefaultDisabled()
+ {
+ $this->assertLeftMenuIsDisabled();
+
+ $this->setUser();
+ $this->setUserSettingValue('yes');
+
+ $this->assertLeftMenuIsEnabled();
+
+ $this->setAnonymous();
+ $this->assertLeftMenuIsDisabled();
+ }
+
+ public function test_isEnabled_AUserPreferenceShouldOverwriteASystemPreference_DefaultEnabled()
+ {
+ $this->enableLeftMenuForAll();
+
+ $this->assertLeftMenuIsEnabled();
+
+ $this->setUser();
+ $this->setUserSettingValue('no');
+
+ $this->assertLeftMenuIsDisabled();
+
+ $this->setAnonymous();
+ $this->assertLeftMenuIsEnabled();
+ }
+
+ private function assertLeftMenuIsEnabled()
+ {
+ $this->assertTrue($this->api->isEnabled());
+ }
+
+ private function assertLeftMenuIsDisabled()
+ {
+ $this->assertFalse($this->api->isEnabled());
+ }
+
+ private function setSuperUser()
+ {
+ $pseudoMockAccess = new FakeAccess;
+ FakeAccess::$superUser = true;
+ FakeAccess::$superUserLogin = 'superUserLogin';
+ Access::setSingletonInstance($pseudoMockAccess);
+ $this->createSettings();
+ }
+
+ private function setAnonymous()
+ {
+ Access::setSingletonInstance(null);
+ $this->createSettings();
+ }
+
+ private function setUser()
+ {
+ $pseudoMockAccess = new FakeAccess;
+ FakeAccess::$idSitesView = array(1);
+ FakeAccess::$identity = 'userLogin';
+ Access::setSingletonInstance($pseudoMockAccess);
+ $this->createSettings();
+ }
+
+ private function enableLeftMenuForAll()
+ {
+ $this->setSuperUser();
+ $this->settings->globalEnabled->setValue(true);
+ $this->settings->save();
+ }
+
+ private function createSettings()
+ {
+ $this->settings = new Settings('LeftMenu');
+ }
+
+ private function setUserSettingValue($value)
+ {
+ $this->settings->userEnabled->setValue($value);
+ $this->settings->save();
+ }
+}