From fbd7cf8cc7b4b52dc4df9f6e64f5f13c034f7fa3 Mon Sep 17 00:00:00 2001 From: David Remer Date: Thu, 28 Jul 2022 13:27:17 +0300 Subject: [PATCH] Use SubscriberEntity instead of the Model [MAILPOET-4514] --- .../Validator/BuiltInCaptchaValidator.php | 14 +++++++---- .../Validator/BuiltInCaptchaValidatorTest.php | 25 ++++++++++++++----- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/mailpoet/lib/Subscription/Captcha/Validator/BuiltInCaptchaValidator.php b/mailpoet/lib/Subscription/Captcha/Validator/BuiltInCaptchaValidator.php index c490b08fd2..5a82f5a370 100644 --- a/mailpoet/lib/Subscription/Captcha/Validator/BuiltInCaptchaValidator.php +++ b/mailpoet/lib/Subscription/Captcha/Validator/BuiltInCaptchaValidator.php @@ -2,8 +2,8 @@ namespace MailPoet\Subscription\Captcha\Validator; -use MailPoet\Models\Subscriber; use MailPoet\Subscribers\SubscriberIPsRepository; +use MailPoet\Subscribers\SubscribersRepository; use MailPoet\Subscription\Captcha\CaptchaPhrase; use MailPoet\Subscription\Captcha\CaptchaSession; use MailPoet\Subscription\SubscriptionUrlFactory; @@ -28,18 +28,23 @@ class BuiltInCaptchaValidator implements CaptchaValidator { /** @var SubscriberIPsRepository */ private $subscriberIPsRepository; + /** @var SubscribersRepository */ + private $subscribersRepository; + public function __construct( SubscriptionUrlFactory $subscriptionUrlFactory, CaptchaPhrase $captchaPhrase, CaptchaSession $captchaSession, WPFunctions $wp, - SubscriberIPsRepository $subscriberIPsRepository + SubscriberIPsRepository $subscriberIPsRepository, + SubscribersRepository $subscribersRepository ) { $this->subscriptionUrlFactory = $subscriptionUrlFactory; $this->captchaPhrase = $captchaPhrase; $this->captchaSession = $captchaSession; $this->wp = $wp; $this->subscriberIPsRepository = $subscriberIPsRepository; + $this->subscribersRepository = $subscribersRepository; } public function validate(array $data): bool { @@ -100,10 +105,9 @@ class BuiltInCaptchaValidator implements CaptchaValidator { // Check limits per recipient if enabled if ($subscriberEmail) { - $subscriber = Subscriber::where('email', $subscriberEmail)->findOne(); + $subscriber = $this->subscribersRepository->findOneBy(['email' => $subscriberEmail]); if ( - $subscriber instanceof Subscriber - && $subscriber->countConfirmations >= $subscriptionCaptchaRecipientLimit + $subscriber && $subscriber->getConfirmationsCount() >= $subscriptionCaptchaRecipientLimit ) { return true; } diff --git a/mailpoet/tests/unit/Subscription/Captcha/Validator/BuiltInCaptchaValidatorTest.php b/mailpoet/tests/unit/Subscription/Captcha/Validator/BuiltInCaptchaValidatorTest.php index d9c2a70314..a03931bed8 100644 --- a/mailpoet/tests/unit/Subscription/Captcha/Validator/BuiltInCaptchaValidatorTest.php +++ b/mailpoet/tests/unit/Subscription/Captcha/Validator/BuiltInCaptchaValidatorTest.php @@ -4,6 +4,7 @@ namespace MailPoet\Subscription\Captcha\Validator; use Codeception\Stub; use MailPoet\Subscribers\SubscriberIPsRepository; +use MailPoet\Subscribers\SubscribersRepository; use MailPoet\Subscription\Captcha\CaptchaPhrase; use MailPoet\Subscription\Captcha\CaptchaSession; use MailPoet\Subscription\SubscriptionUrlFactory; @@ -43,12 +44,14 @@ class BuiltInCaptchaValidatorTest extends \MailPoetUnitTest $this ); $captchaSession = Stub::makeEmpty(CaptchaSession::class); - $subscriberRepository = Stub::makeEmpty(SubscriberIPsRepository::class); + $subscriberIpRepository = Stub::makeEmpty(SubscriberIPsRepository::class); + $subscriberRepository = Stub::makeEmpty(SubscribersRepository::class); $testee = new BuiltInCaptchaValidator( $subscriptionUrlFactory, $captchaPhrase, $captchaSession, $this->wp, + $subscriberIpRepository, $subscriberRepository ); @@ -74,12 +77,14 @@ class BuiltInCaptchaValidatorTest extends \MailPoetUnitTest ); $captchaSession = Stub::makeEmpty(CaptchaSession::class); - $subscriberRepository = Stub::makeEmpty(SubscriberIPsRepository::class); + $subscriberIpRepository = Stub::makeEmpty(SubscriberIPsRepository::class); + $subscriberRepository = Stub::makeEmpty(SubscribersRepository::class); $testee = new BuiltInCaptchaValidator( $subscriptionUrlFactory, $captchaPhrase, $captchaSession, $wp, + $subscriberIpRepository, $subscriberRepository ); @@ -171,12 +176,14 @@ class BuiltInCaptchaValidatorTest extends \MailPoetUnitTest ], $this ); - $subscriberRepository = Stub::makeEmpty(SubscriberIPsRepository::class); + $subscriberIpRepository = Stub::makeEmpty(SubscriberIPsRepository::class); + $subscriberRepository = Stub::makeEmpty(SubscribersRepository::class); $testee = new BuiltInCaptchaValidator( $subscriptionUrlFactory, $captchaPhrase, $captchaSession, $wp, + $subscriberIpRepository, $subscriberRepository ); @@ -206,12 +213,14 @@ class BuiltInCaptchaValidatorTest extends \MailPoetUnitTest $this ); $captchaSession = Stub::makeEmpty(CaptchaSession::class); - $subscriberRepository = Stub::makeEmpty(SubscriberIPsRepository::class); + $subscriberIpRepository = Stub::makeEmpty(SubscriberIPsRepository::class); + $subscriberRepository = Stub::makeEmpty(SubscribersRepository::class); $testee = new BuiltInCaptchaValidator( $subscriptionUrlFactory, $captchaPhrase, $captchaSession, $this->wp, + $subscriberIpRepository, $subscriberRepository ); @@ -241,12 +250,14 @@ class BuiltInCaptchaValidatorTest extends \MailPoetUnitTest $this ); $captchaSession = Stub::makeEmpty(CaptchaSession::class); - $subscriberRepository = Stub::makeEmpty(SubscriberIPsRepository::class); + $subscriberIpRepository = Stub::makeEmpty(SubscriberIPsRepository::class); + $subscriberRepository = Stub::makeEmpty(SubscribersRepository::class); $testee = new BuiltInCaptchaValidator( $subscriptionUrlFactory, $captchaPhrase, $captchaSession, $this->wp, + $subscriberIpRepository, $subscriberRepository ); @@ -282,12 +293,14 @@ class BuiltInCaptchaValidatorTest extends \MailPoetUnitTest $this ); $captchaSession = Stub::makeEmpty(CaptchaSession::class); - $subscriberRepository = Stub::makeEmpty(SubscriberIPsRepository::class); + $subscriberIpRepository = Stub::makeEmpty(SubscriberIPsRepository::class); + $subscriberRepository = Stub::makeEmpty(SubscribersRepository::class); $testee = new BuiltInCaptchaValidator( $subscriptionUrlFactory, $captchaPhrase, $captchaSession, $this->wp, + $subscriberIpRepository, $subscriberRepository );