Add tests
[MAILPOET-6384]
This commit is contained in:
@ -5,11 +5,16 @@ namespace unit\WooCommerce;
|
|||||||
use Codeception\Stub;
|
use Codeception\Stub;
|
||||||
use Helper\WordPress;
|
use Helper\WordPress;
|
||||||
use MailPoet\Entities\NewsletterEntity;
|
use MailPoet\Entities\NewsletterEntity;
|
||||||
|
use MailPoet\Entities\ScheduledTaskEntity;
|
||||||
|
use MailPoet\Entities\ScheduledTaskSubscriberEntity;
|
||||||
|
use MailPoet\Entities\SendingQueueEntity;
|
||||||
|
use MailPoet\Entities\SubscriberEntity;
|
||||||
use MailPoet\Newsletter\NewslettersRepository;
|
use MailPoet\Newsletter\NewslettersRepository;
|
||||||
use MailPoet\Newsletter\Renderer\Blocks\Coupon;
|
use MailPoet\Newsletter\Renderer\Blocks\Coupon;
|
||||||
use MailPoet\NewsletterProcessingException;
|
use MailPoet\NewsletterProcessingException;
|
||||||
use MailPoet\WooCommerce\CouponPreProcessor;
|
use MailPoet\WooCommerce\CouponPreProcessor;
|
||||||
use MailPoet\WooCommerce\Helper;
|
use MailPoet\WooCommerce\Helper;
|
||||||
|
use MailPoetVendor\Doctrine\Common\Collections\ArrayCollection;
|
||||||
|
|
||||||
class CouponPreProcessorTest extends \MailPoetUnitTest {
|
class CouponPreProcessorTest extends \MailPoetUnitTest {
|
||||||
|
|
||||||
@ -176,6 +181,68 @@ class CouponPreProcessorTest extends \MailPoetUnitTest {
|
|||||||
$processor->processCoupons($newsletter, $blocks, false);
|
$processor->processCoupons($newsletter, $blocks, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testItRestrictsCouponToSubscriber(): void {
|
||||||
|
$subscriberEmail = 'test@example.com';
|
||||||
|
$wcCoupon = $this->createCouponMock();
|
||||||
|
|
||||||
|
$subscriber = $this->make(SubscriberEntity::class, [
|
||||||
|
'getEmail' => $subscriberEmail,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$taskSubscriber = $this->make(ScheduledTaskSubscriberEntity::class, [
|
||||||
|
'getSubscriber' => $subscriber,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$task = $this->make(ScheduledTaskEntity::class, [
|
||||||
|
'getSubscribers' => new ArrayCollection([$taskSubscriber]),
|
||||||
|
]);
|
||||||
|
|
||||||
|
$queue = $this->make(SendingQueueEntity::class, [
|
||||||
|
'getTask' => $task,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$wcHelper = $this->make(Helper::class, [
|
||||||
|
'createWcCoupon' => $wcCoupon,
|
||||||
|
'isWooCommerceActive' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$processor = new CouponPreProcessor(
|
||||||
|
$wcHelper,
|
||||||
|
$this->make(NewslettersRepository::class)
|
||||||
|
);
|
||||||
|
|
||||||
|
$newsletter = new NewsletterEntity();
|
||||||
|
$newsletter->setType(NewsletterEntity::TYPE_AUTOMATION);
|
||||||
|
$blocks = [
|
||||||
|
[
|
||||||
|
'type' => 'any',
|
||||||
|
'blocks' => [
|
||||||
|
[
|
||||||
|
'type' => Coupon::TYPE,
|
||||||
|
'discountType' => 'percent',
|
||||||
|
'amount' => '100',
|
||||||
|
'restrictToSubscriber' => true,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
$newsletter->setBody(['blocks' => $blocks, 'content' => []]);
|
||||||
|
|
||||||
|
$wcCoupon->expects($this->exactly(2))
|
||||||
|
->method('set_email_restrictions')
|
||||||
|
->withConsecutive(
|
||||||
|
[[$subscriberEmail]],
|
||||||
|
[['other@example.com', $subscriberEmail]]
|
||||||
|
);
|
||||||
|
|
||||||
|
// Test with restrictToSubscriber enabled
|
||||||
|
$processor->processCoupons($newsletter, $blocks, false, $queue);
|
||||||
|
|
||||||
|
// Test with additional emailRestrictions
|
||||||
|
$blocks[0]['blocks'][0]['emailRestrictions'] = 'other@example.com';
|
||||||
|
$processor->processCoupons($newsletter, $blocks, false, $queue);
|
||||||
|
}
|
||||||
|
|
||||||
private function assertWCCouponReceivesCorrectValues($mockedWCCoupon, $expectedCouponId, $expiryDay) {
|
private function assertWCCouponReceivesCorrectValues($mockedWCCoupon, $expectedCouponId, $expiryDay) {
|
||||||
$mockedWCCoupon->method('save')->willReturn($expectedCouponId);
|
$mockedWCCoupon->method('save')->willReturn($expectedCouponId);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user