diff options
author | Zoltan Flamis <flamisz@gmail.com> | 2021-03-17 23:52:07 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-17 23:52:07 +0300 |
commit | dabc1caf64b16f40298bd6b7c43cf93cd0071b07 (patch) | |
tree | 9d1e845f697633a095f2aa76b86b2ac4c02a3424 /plugins/Feedback/tests | |
parent | 7527bce11d1b3f9a5ace08eb26e5379f7702cf7c (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')
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 |