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:
authorZoltan Flamis <flamisz@gmail.com>2021-03-17 23:52:07 +0300
committerGitHub <noreply@github.com>2021-03-17 23:52:07 +0300
commitdabc1caf64b16f40298bd6b7c43cf93cd0071b07 (patch)
tree9d1e845f697633a095f2aa76b86b2ac4c02a3424 /plugins/Feedback/tests
parent7527bce11d1b3f9a5ace08eb26e5379f7702cf7c (diff)
Ask users to refer us to other friends (#17234)
* skeleton for the refer banner * refer banner wip * share buttons * show refer banner logic * fix linkedin share, hide mastodon * fix double call for remind me later and error on response * add tests for refer banner * fix travis tests * fix travis tests * add thanks feedback and language files * hide fb share * turn on fb share * update refer banner copies * add changes according to pr comments * normalize lfs Co-authored-by: diosmosis <diosmosis@users.noreply.github.com>
Diffstat (limited to 'plugins/Feedback/tests')
-rw-r--r--plugins/Feedback/tests/Fixtures/ReferBannerFixture.php25
-rw-r--r--plugins/Feedback/tests/Integration/ControllerTest.php29
-rw-r--r--plugins/Feedback/tests/Integration/ReferBannerTest.php116
-rw-r--r--plugins/Feedback/tests/UI/ReferBanner_spec.js30
-rw-r--r--plugins/Feedback/tests/UI/expected-screenshots/ReferBannerTest_feedback_popup.png3
5 files changed, 201 insertions, 2 deletions
diff --git a/plugins/Feedback/tests/Fixtures/ReferBannerFixture.php b/plugins/Feedback/tests/Fixtures/ReferBannerFixture.php
new file mode 100644
index 0000000000..7e461bdb48
--- /dev/null
+++ b/plugins/Feedback/tests/Fixtures/ReferBannerFixture.php
@@ -0,0 +1,25 @@
+<?php
+
+
+namespace Piwik\Plugins\Feedback\tests\Fixtures;
+
+use Piwik\Date;
+use Piwik\Option;
+use Piwik\Tests\Fixtures\UITestFixture;
+
+class ReferBannerFixture extends UITestFixture
+{
+ public function setUp(): void
+ {
+ parent::setUp();
+ $yesterday = Date::yesterday();
+ Option::set('Feedback.nextReferReminder.superUserLogin', $yesterday->toString('Y-m-d'));
+ }
+
+ public function tearDown(): void
+ {
+ parent::tearDown();
+ Option::delete('Feedback.nextReferReminder.superUserLogin');
+ }
+
+} \ No newline at end of file
diff --git a/plugins/Feedback/tests/Integration/ControllerTest.php b/plugins/Feedback/tests/Integration/ControllerTest.php
index 533dc533f5..a1699cf2bd 100644
--- a/plugins/Feedback/tests/Integration/ControllerTest.php
+++ b/plugins/Feedback/tests/Integration/ControllerTest.php
@@ -62,7 +62,6 @@ class ControllerTest extends IntegrationTestCase
);
}
-
public function test_updateFeedbackReminder_addNinetyDays()
{
$_POST['nextReminder'] = '90';
@@ -88,4 +87,30 @@ class ControllerTest extends IntegrationTestCase
FakeAccess::$superUser = false;
$this->controller->updateFeedbackReminderDate();
}
-} \ No newline at end of file
+
+ public function test_updateReferReminder_add180Days()
+ {
+ $_POST['nextReminder'] = '180';
+ $this->controller->updateReferReminderDate();
+
+ $option = Option::get('Feedback.nextReferReminder.user1');
+ $this->assertEquals($option, '2019-11-27');
+ }
+
+ public function test_updateReferReminder_neverAgain()
+ {
+ $_POST['nextReminder'] = '-1';
+ $this->controller->updateReferReminderDate();
+
+ $option = Option::get('Feedback.nextReferReminder.user1');
+ $this->assertEquals($option, '-1');
+ }
+
+ public function test_updateReferReminder_notLoggedIn()
+ {
+ $this->expectException(NoAccessException::class);
+ FakeAccess::$identity = null;
+ FakeAccess::$superUser = false;
+ $this->controller->updateReferReminderDate();
+ }
+}
diff --git a/plugins/Feedback/tests/Integration/ReferBannerTest.php b/plugins/Feedback/tests/Integration/ReferBannerTest.php
new file mode 100644
index 0000000000..b7b86aeae3
--- /dev/null
+++ b/plugins/Feedback/tests/Integration/ReferBannerTest.php
@@ -0,0 +1,116 @@
+<?php
+/**
+ * Matomo - free/libre analytics platform
+ *
+ * @link http://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Feedback\tests\Unit;
+
+
+use Piwik\Date;
+use Piwik\Option;
+use Piwik\Plugins\Feedback\Feedback;
+use Piwik\Plugins\UsersManager\Model;
+use Piwik\Tests\Framework\Mock\FakeAccess;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+
+class ReferBannerTest extends IntegrationTestCase
+{
+ /** @var Feedback */
+ private $feedback;
+
+ /** @var Model */
+ private $userModel;
+
+ public function setUp(): void
+ {
+ parent::setUp();
+
+ $this->feedback = $this->createPartialMock(Feedback::class, ['isDisabledInTestMode']);
+ $this->feedback->method('isDisabledInTestMode')->willReturn(false);
+
+ $this->userModel = new Model();
+ $this->userModel->addUser(
+ 'user1',
+ 'a98732d98732',
+ 'user1@example.com',
+ '2019-03-03',
+ 'super'
+ );
+ FakeAccess::$identity = 'user1';
+ FakeAccess::$superUser = false;
+ }
+
+ public function tearDown(): void
+ {
+ Option::deleteLike('Feedback.nextReferReminder.%');
+ $this->userModel->deleteUserOnly('user1');
+
+ parent::tearDown();
+ }
+
+ public function provideContainerConfig()
+ {
+ return array(
+ 'Piwik\Access' => new FakeAccess()
+ );
+ }
+
+
+ public function test_shouldNotShowReferBannerTo_AnonymousUser()
+ {
+ FakeAccess::$identity = '';
+
+ $this->assertFalse($this->feedback->showReferBanner());
+ }
+
+ public function test_shouldNotShowReferBannerTo_NotSuperUser()
+ {
+ FakeAccess::$identity = 'user1';
+
+ $this->assertFalse($this->feedback->showReferBanner());
+ }
+
+ public function test_shouldShowReferBannerTo_SuperUser()
+ {
+ FakeAccess::$identity = 'super';
+ FakeAccess::$superUser = true;
+
+ $this->assertTrue($this->feedback->showReferBanner());
+ }
+
+ public function test_shouldNotShowReferBanner_ifNeverRemindOn()
+ {
+ FakeAccess::$identity = 'super';
+ FakeAccess::$superUser = true;
+ Option::set('Feedback.nextReferReminder.super', '-1');
+
+ $this->assertFalse($this->feedback->showReferBanner());
+ }
+
+ public function test_shouldNotShowReferBanner_ifNextReminderDateInTheFuture()
+ {
+ FakeAccess::$identity = 'super';
+ FakeAccess::$superUser = true;
+
+ Date::$now = strtotime('2021-01-01');
+ $futureDate = Date::factory('2021-02-01')->toString('Y-m-d');
+ Option::set('Feedback.nextReferReminder.super', $futureDate);
+
+ $this->assertFalse($this->feedback->showReferBanner());
+ }
+
+ public function test_shouldShowReferBanner_ifNextReminderDateInThePast()
+ {
+ FakeAccess::$identity = 'super';
+ FakeAccess::$superUser = true;
+
+ Date::$now = strtotime('2021-01-01');
+ $pastDate = Date::factory('2020-01-01')->toString('Y-m-d');
+ Option::set('Feedback.nextReferReminder.super', $pastDate);
+
+ $this->assertTrue($this->feedback->showReferBanner());
+ }
+}
diff --git a/plugins/Feedback/tests/UI/ReferBanner_spec.js b/plugins/Feedback/tests/UI/ReferBanner_spec.js
new file mode 100644
index 0000000000..7b0364f111
--- /dev/null
+++ b/plugins/Feedback/tests/UI/ReferBanner_spec.js
@@ -0,0 +1,30 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * UsersManager screenshot tests.
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+describe("ReferBannerTest", function () {
+ this.timeout(0);
+ this.fixture = "Piwik\\Plugins\\Feedback\\tests\\Fixtures\\ReferBannerFixture";
+
+ var url = "?module=CoreHome&action=index&idSite=1&period=day&date=2019-07-11&forceFeedbackTest=1";
+
+ before(async function() {
+ await page.webpage.setViewport({
+ width: 1250,
+ height: 768
+ });
+ });
+
+ it('should display popup when next reminder date is in past', async function () {
+ await page.goto(url);
+ await page.waitForNetworkIdle();
+
+ var banner = await page.waitFor('.refer-banner', { visible: true });
+ expect(await banner.screenshot()).to.matchImage('feedback_popup');
+ });
+});
diff --git a/plugins/Feedback/tests/UI/expected-screenshots/ReferBannerTest_feedback_popup.png b/plugins/Feedback/tests/UI/expected-screenshots/ReferBannerTest_feedback_popup.png
new file mode 100644
index 0000000000..b33ed5d4c8
--- /dev/null
+++ b/plugins/Feedback/tests/UI/expected-screenshots/ReferBannerTest_feedback_popup.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:de4ce7f20f82c2c70a2ff0587ec3e14f5d93869e12f9cd4a6ac057d9747c0bc2
+size 14151