Add functions to check activation restrictions
[MAILPOET-5786]
This commit is contained in:
committed by
Aschepikov
parent
01a3b3c5ca
commit
3b3be51324
@@ -2,9 +2,11 @@
|
||||
|
||||
namespace MailPoet\Services;
|
||||
|
||||
use MailPoet\Mailer\Mailer;
|
||||
use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository;
|
||||
use MailPoet\Services\Bridge\API;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Util\License\Features\Subscribers;
|
||||
use MailPoetVendor\Carbon\Carbon;
|
||||
|
||||
class AuthorizedSenderDomainController {
|
||||
@@ -42,14 +44,19 @@ class AuthorizedSenderDomainController {
|
||||
/** @var null|array */
|
||||
private $currentRawData = null;
|
||||
|
||||
/** @var Subscribers */
|
||||
private $subscribers;
|
||||
|
||||
public function __construct(
|
||||
Bridge $bridge,
|
||||
NewsletterStatisticsRepository $newsletterStatisticsRepository,
|
||||
SettingsController $settingsController
|
||||
SettingsController $settingsController,
|
||||
Subscribers $subscribers
|
||||
) {
|
||||
$this->bridge = $bridge;
|
||||
$this->newsletterStatisticsRepository = $newsletterStatisticsRepository;
|
||||
$this->settingsController = $settingsController;
|
||||
$this->subscribers = $subscribers;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -276,4 +283,21 @@ class AuthorizedSenderDomainController {
|
||||
|
||||
return $this->newsletterStatisticsRepository->countBy([]) === 0;
|
||||
}
|
||||
|
||||
public function isSmallSender(): bool {
|
||||
return $this->subscribers->getSubscribersCount() <= self::LOWER_LIMIT;
|
||||
}
|
||||
|
||||
public function isAuthorizedDomainRequiredForNewCampaigns(): bool {
|
||||
if ($this->settingsController->get('mta.method') !== Mailer::METHOD_MAILPOET) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// TODO: Remove after the enforcement date has passed
|
||||
if (!$this->isNewUser() && !$this->isEnforcementOfNewRestrictionsInEffect()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return !$this->isSmallSender();
|
||||
}
|
||||
}
|
||||
|
@@ -13,6 +13,7 @@ use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Test\DataFactories\Newsletter;
|
||||
use MailPoet\Test\DataFactories\StatisticsNewsletters;
|
||||
use MailPoet\Test\DataFactories\Subscriber;
|
||||
use MailPoet\Util\License\Features\Subscribers;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
use MailPoetVendor\Carbon\Carbon;
|
||||
|
||||
@@ -291,9 +292,10 @@ class AuthorizedSenderDomainControllerTest extends \MailPoetTest {
|
||||
$this->assertSame('jane.doe=gmail.com@replies.sendingservice.net', $this->getController()->getRewrittenEmailAddress($email));
|
||||
}
|
||||
|
||||
private function getController($bridgeMock = null): AuthorizedSenderDomainController {
|
||||
private function getController($bridgeMock = null, $subscribersMock = null): AuthorizedSenderDomainController {
|
||||
$newsletterStatisticsRepository = $this->diContainer->get(NewsletterStatisticsRepository::class);
|
||||
return new AuthorizedSenderDomainController($bridgeMock ?? $this->bridge, $newsletterStatisticsRepository, $this->settings);
|
||||
$subscribers = $this->diContainer->get(Subscribers::class);
|
||||
return new AuthorizedSenderDomainController($bridgeMock ?? $this->bridge, $newsletterStatisticsRepository, $this->settings, $subscribersMock ?? $subscribers);
|
||||
}
|
||||
|
||||
public function testUserIsNewIfTheyHaveNotCompletedWelcomeWizard(): void {
|
||||
@@ -325,4 +327,92 @@ class AuthorizedSenderDomainControllerTest extends \MailPoetTest {
|
||||
Carbon::setTestNow(Carbon::parse('2024-02-01 00:00:01 UTC'));
|
||||
$this->assertTrue($this->getController()->isEnforcementOfNewRestrictionsInEffect());
|
||||
}
|
||||
|
||||
public function testIsSmallSenderIfSubscribersUnderLowerLimit(): void {
|
||||
$subscribersMock = $this->make(Subscribers::class, [
|
||||
'getSubscribersCount' => Expected::once(500),
|
||||
]);
|
||||
|
||||
$this->assertTrue($this->getController(null, $subscribersMock)->isSmallSender());
|
||||
}
|
||||
|
||||
public function testIsNotSmallSenderIfSubscribersOverLowerLimit(): void {
|
||||
$subscribersMock = $this->make(Subscribers::class, [
|
||||
'getSubscribersCount' => Expected::once(501),
|
||||
]);
|
||||
|
||||
$this->assertFalse($this->getController(null, $subscribersMock)->isSmallSender());
|
||||
}
|
||||
|
||||
public function testIsAuthorizedDomainRequiredForNewCampaigns(): void {
|
||||
// Is new user
|
||||
$this->settings->set('version', MAILPOET_VERSION);
|
||||
$this->settings->set('installed_after_new_domain_restrictions', '1');
|
||||
|
||||
// Is big sender
|
||||
$subscribersMock = $this->make(Subscribers::class, [
|
||||
'getSubscribersCount' => Expected::once(501),
|
||||
]);
|
||||
|
||||
$this->assertTrue($this->getController(null, $subscribersMock)->isAuthorizedDomainRequiredForNewCampaigns());
|
||||
}
|
||||
|
||||
public function testNotIsAuthorizedDomainRequiredForNewCampaignsForExistingUsersBeforeEnforcementDate(): void {
|
||||
// Is not new user
|
||||
$this->settings->set('version', MAILPOET_VERSION);
|
||||
$this->settings->delete('installed_after_new_domain_restrictions');
|
||||
(new StatisticsNewsletters((new Newsletter())->withSendingQueue()->create(), (new Subscriber())->create()))->create();
|
||||
|
||||
// Before EnforcementDate
|
||||
Carbon::setTestNow(Carbon::parse('2024-01-31 00:00:00 UTC'));
|
||||
|
||||
$this->assertFalse($this->getController()->isAuthorizedDomainRequiredForNewCampaigns());
|
||||
}
|
||||
|
||||
public function testIsAuthorizedDomainRequiredForNewCampaignsForExistingUsersAfterEnforcementDate(): void {
|
||||
// Is not new user
|
||||
$this->settings->set('version', MAILPOET_VERSION);
|
||||
$this->settings->delete('installed_after_new_domain_restrictions');
|
||||
(new StatisticsNewsletters((new Newsletter())->withSendingQueue()->create(), (new Subscriber())->create()))->create();
|
||||
|
||||
// After EnforcementDate
|
||||
Carbon::setTestNow(Carbon::parse('2024-02-01 00:00:01 UTC'));
|
||||
|
||||
// Is big sender
|
||||
$subscribersMock = $this->make(Subscribers::class, [
|
||||
'getSubscribersCount' => Expected::once(501),
|
||||
]);
|
||||
|
||||
$this->assertTrue($this->getController(null, $subscribersMock)->isAuthorizedDomainRequiredForNewCampaigns());
|
||||
}
|
||||
|
||||
public function testNotIsAuthorizedDomainRequiredForNewCampaignsForSmallSenders(): void {
|
||||
// Is not new user
|
||||
$this->settings->set('version', MAILPOET_VERSION);
|
||||
$this->settings->delete('installed_after_new_domain_restrictions');
|
||||
(new StatisticsNewsletters((new Newsletter())->withSendingQueue()->create(), (new Subscriber())->create()))->create();
|
||||
|
||||
// After EnforcementDate
|
||||
Carbon::setTestNow(Carbon::parse('2024-02-01 00:00:01 UTC'));
|
||||
|
||||
// Is small sender
|
||||
$subscribersMock = $this->make(Subscribers::class, [
|
||||
'getSubscribersCount' => Expected::once(500),
|
||||
]);
|
||||
|
||||
$this->assertFalse($this->getController(null, $subscribersMock)->isAuthorizedDomainRequiredForNewCampaigns());
|
||||
}
|
||||
|
||||
public function testNotIsAuthorizedDomainRequiredForNewCampaignsForNewUsersSmallSenders(): void {
|
||||
// Is new user
|
||||
$this->settings->set('version', MAILPOET_VERSION);
|
||||
$this->settings->set('installed_after_new_domain_restrictions', '1');
|
||||
|
||||
// Is small sender
|
||||
$subscribersMock = $this->make(Subscribers::class, [
|
||||
'getSubscribersCount' => Expected::once(500),
|
||||
]);
|
||||
|
||||
$this->assertFalse($this->getController(null, $subscribersMock)->isAuthorizedDomainRequiredForNewCampaigns());
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user