قرینه از
https://github.com/matomo-org/matomo.git
synced 2025-08-25 00:17:37 +00:00

* Use https URLs * Build vue files * use matomo.org instead of piwik.org in some links * updates expected UI test file --------- Co-authored-by: innocraft-automation <innocraft-automation@users.noreply.github.com>
128 خطوط
3.4 KiB
PHP
128 خطوط
3.4 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Matomo - free/libre analytics platform
|
|
*
|
|
* @link https://matomo.org
|
|
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*/
|
|
|
|
namespace Piwik\Plugins\Marketplace\tests\Integration\PluginTrial;
|
|
|
|
use Piwik\Config\GeneralConfig;
|
|
use Piwik\Notification\Manager;
|
|
use Piwik\Plugins\Marketplace\PluginTrial\Service;
|
|
use Piwik\Plugins\Marketplace\PluginTrial\Storage;
|
|
use Piwik\Tests\Framework\Mock\FakeAccess;
|
|
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
|
|
|
|
/**
|
|
* @group Marketplace
|
|
* @group PluginTrial
|
|
* @group Plugins
|
|
*/
|
|
class ServiceTest extends IntegrationTestCase
|
|
{
|
|
public function setUp(): void
|
|
{
|
|
parent::setUp();
|
|
|
|
GeneralConfig::setConfigValue('plugin_trial_request_expiration_in_days', 1);
|
|
\Zend_Session::$_unitTestEnabled = true;
|
|
Manager::cancelAllNotifications();
|
|
}
|
|
|
|
public function testRequestDisabled()
|
|
{
|
|
GeneralConfig::setConfigValue('plugin_trial_request_expiration_in_days', -1);
|
|
|
|
$service = new Service();
|
|
$service->request('PremiumPlugin', 'Pretty Premium Plugin');
|
|
|
|
$this->assertRequested(false);
|
|
}
|
|
|
|
public function testRequestSucceeds()
|
|
{
|
|
$this->assertRequested(false);
|
|
|
|
$service = new Service();
|
|
$service->request('PremiumPlugin', 'Pretty Premium Plugin');
|
|
|
|
$this->assertRequested(true);
|
|
}
|
|
|
|
public function testWasRequestedDisabled()
|
|
{
|
|
GeneralConfig::setConfigValue('plugin_trial_request_expiration_in_days', -1);
|
|
|
|
$service = new Service();
|
|
self::assertFalse($service->wasRequested('PremiumPlugin'));
|
|
}
|
|
|
|
public function testWasNotRequested()
|
|
{
|
|
$service = new Service();
|
|
self::assertFalse($service->wasRequested('PremiumPlugin'));
|
|
}
|
|
|
|
public function testWasRequested()
|
|
{
|
|
$this->setRequested();
|
|
|
|
$service = new Service();
|
|
self::assertTrue($service->wasRequested('PremiumPlugin'));
|
|
}
|
|
|
|
public function testCancel()
|
|
{
|
|
$this->setRequested();
|
|
|
|
$service = new Service();
|
|
self::assertTrue($service->wasRequested('PremiumPlugin'));
|
|
$service->cancelRequest('PremiumPlugin');
|
|
self::assertFalse($service->wasRequested('PremiumPlugin'));
|
|
}
|
|
|
|
public function testCreateAndDismissNotifications()
|
|
{
|
|
$service = new Service();
|
|
$service->request('PremiumPlugin', 'Pretty Premium Plugin');
|
|
$service->request('PremiumPlugin2', 'Pretty Premium Plugin 2');
|
|
|
|
$service->createNotificationsIfNeeded();
|
|
|
|
$notifications = Manager::getPendingInMemoryNotifications();
|
|
|
|
self::assertCount(2, $notifications);
|
|
|
|
Manager::cancelAllNotifications();
|
|
|
|
$service->dismissNotification('Marketplace_PluginTrialRequest_' . md5(FakeAccess::$superUserLogin) . '_PremiumPlugin2');
|
|
$service->createNotificationsIfNeeded();
|
|
|
|
$notifications = Manager::getPendingInMemoryNotifications();
|
|
|
|
self::assertCount(1, $notifications);
|
|
}
|
|
|
|
protected function assertRequested(bool $expected): void
|
|
{
|
|
$storage = new Storage('PremiumPlugin');
|
|
self::assertEquals($expected, $storage->wasRequested());
|
|
}
|
|
|
|
protected function setRequested(): void
|
|
{
|
|
$storage = new Storage('PremiumPlugin');
|
|
$storage->setRequested();
|
|
}
|
|
|
|
public function provideContainerConfig()
|
|
{
|
|
return array(
|
|
'Piwik\Access' => new FakeAccess()
|
|
);
|
|
}
|
|
}
|