Remove usage of deprecated method
[MAILPOET-3267]
This commit is contained in:
@ -2,9 +2,10 @@
|
|||||||
|
|
||||||
namespace MailPoet\Newsletter\ViewInBrowser;
|
namespace MailPoet\Newsletter\ViewInBrowser;
|
||||||
|
|
||||||
|
use MailPoet\Entities\SendingQueueEntity;
|
||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
use MailPoet\Models\SendingQueue;
|
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
|
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
||||||
use MailPoet\Newsletter\Url as NewsletterUrl;
|
use MailPoet\Newsletter\Url as NewsletterUrl;
|
||||||
use MailPoet\Subscribers\LinkTokens;
|
use MailPoet\Subscribers\LinkTokens;
|
||||||
use MailPoet\Subscribers\SubscribersRepository;
|
use MailPoet\Subscribers\SubscribersRepository;
|
||||||
@ -19,14 +20,19 @@ class ViewInBrowserController {
|
|||||||
/** @var SubscribersRepository */
|
/** @var SubscribersRepository */
|
||||||
private $subscribersRepository;
|
private $subscribersRepository;
|
||||||
|
|
||||||
|
/** @var SendingQueuesRepository */
|
||||||
|
private $sendingQueuesRepository;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
LinkTokens $linkTokens,
|
LinkTokens $linkTokens,
|
||||||
ViewInBrowserRenderer $viewInBrowserRenderer,
|
ViewInBrowserRenderer $viewInBrowserRenderer,
|
||||||
|
SendingQueuesRepository $sendingQueuesRepository,
|
||||||
SubscribersRepository $subscribersRepository
|
SubscribersRepository $subscribersRepository
|
||||||
) {
|
) {
|
||||||
$this->linkTokens = $linkTokens;
|
$this->linkTokens = $linkTokens;
|
||||||
$this->viewInBrowserRenderer = $viewInBrowserRenderer;
|
$this->viewInBrowserRenderer = $viewInBrowserRenderer;
|
||||||
$this->subscribersRepository = $subscribersRepository;
|
$this->subscribersRepository = $subscribersRepository;
|
||||||
|
$this->sendingQueuesRepository = $sendingQueuesRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function view(array $data) {
|
public function view(array $data) {
|
||||||
@ -43,7 +49,7 @@ class ViewInBrowserController {
|
|||||||
|
|
||||||
// if queue and subscriber exist, subscriber must have received the newsletter
|
// if queue and subscriber exist, subscriber must have received the newsletter
|
||||||
$queue = $this->getQueue($newsletter, $data);
|
$queue = $this->getQueue($newsletter, $data);
|
||||||
if (!$isPreview && $queue && $subscriber && !$queue->isSubscriberProcessed($subscriber->getId())) {
|
if (!$isPreview && $queue && $subscriber && !$this->sendingQueuesRepository->isSubscriberProcessed($queue, $subscriber)) {
|
||||||
throw new \InvalidArgumentException("Subscriber did not receive the newsletter yet");
|
throw new \InvalidArgumentException("Subscriber did not receive the newsletter yet");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,7 +101,7 @@ class ViewInBrowserController {
|
|||||||
return $subscriber;
|
return $subscriber;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getQueue(Newsletter $newsletter, array $data) {
|
private function getQueue(Newsletter $newsletter, array $data): ?SendingQueueEntity {
|
||||||
// queue is optional; try to find it if it's not defined and this is not a welcome email
|
// queue is optional; try to find it if it's not defined and this is not a welcome email
|
||||||
if ($newsletter->type === Newsletter::TYPE_WELCOME) {
|
if ($newsletter->type === Newsletter::TYPE_WELCOME) {
|
||||||
return null;
|
return null;
|
||||||
@ -106,10 +112,8 @@ class ViewInBrowserController {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$queue = !empty($data['queue_id'])
|
return !empty($data['queue_id'])
|
||||||
? SendingQueue::findOne($data['queue_id'])
|
? $this->sendingQueuesRepository->findOneById($data['queue_id'])
|
||||||
: SendingQueue::where('newsletter_id', $newsletter->id)->findOne();
|
: $this->sendingQueuesRepository->findOneBy(['newsletter' => $newsletter->id]);
|
||||||
|
|
||||||
return $queue ?: null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,11 +48,16 @@ class ViewInBrowserRenderer {
|
|||||||
bool $isPreview,
|
bool $isPreview,
|
||||||
Newsletter $newsletter,
|
Newsletter $newsletter,
|
||||||
SubscriberEntity $subscriber = null,
|
SubscriberEntity $subscriber = null,
|
||||||
SendingQueue $queue = null
|
SendingQueueEntity $queue = null
|
||||||
) {
|
) {
|
||||||
$wpUserPreview = $isPreview;
|
$wpUserPreview = $isPreview;
|
||||||
if ($queue && $queue->getNewsletterRenderedBody()) {
|
if ($queue && $queue->getNewsletterRenderedBody()) {
|
||||||
$newsletterBody = $queue->getNewsletterRenderedBody('html');
|
$body = $queue->getNewsletterRenderedBody();
|
||||||
|
if (is_array($body)) {
|
||||||
|
$newsletterBody = $body['html'];
|
||||||
|
} else {
|
||||||
|
$newsletterBody = '';
|
||||||
|
}
|
||||||
$newsletterBody = $this->emoji->decodeEmojisInBody($newsletterBody);
|
$newsletterBody = $this->emoji->decodeEmojisInBody($newsletterBody);
|
||||||
// rendered newsletter body has shortcodes converted to links; we need to
|
// rendered newsletter body has shortcodes converted to links; we need to
|
||||||
// isolate "view in browser", "unsubscribe" and "manage subscription" links
|
// isolate "view in browser", "unsubscribe" and "manage subscription" links
|
||||||
@ -61,7 +66,7 @@ class ViewInBrowserRenderer {
|
|||||||
if ($wpUserPreview && preg_match(Links::getLinkRegex(), $newsletterBody)) {
|
if ($wpUserPreview && preg_match(Links::getLinkRegex(), $newsletterBody)) {
|
||||||
$newsletterBody = Links::convertHashedLinksToShortcodesAndUrls(
|
$newsletterBody = Links::convertHashedLinksToShortcodesAndUrls(
|
||||||
$newsletterBody,
|
$newsletterBody,
|
||||||
$queueId = $queue->id,
|
$queue->getId(),
|
||||||
$convertAll = true
|
$convertAll = true
|
||||||
);
|
);
|
||||||
// remove open tracking link
|
// remove open tracking link
|
||||||
@ -84,7 +89,7 @@ class ViewInBrowserRenderer {
|
|||||||
if (!$wpUserPreview && $queue && $subscriber && $this->isTrackingEnabled) {
|
if (!$wpUserPreview && $queue && $subscriber && $this->isTrackingEnabled) {
|
||||||
$renderedNewsletter = Links::replaceSubscriberData(
|
$renderedNewsletter = Links::replaceSubscriberData(
|
||||||
$subscriber->getId(),
|
$subscriber->getId(),
|
||||||
$queue->id,
|
$queue->getId(),
|
||||||
$renderedNewsletter
|
$renderedNewsletter
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -93,16 +98,9 @@ class ViewInBrowserRenderer {
|
|||||||
|
|
||||||
/** this is here to prepare entities for the shortcodes library, when this whole file uses doctrine, this can be deleted */
|
/** this is here to prepare entities for the shortcodes library, when this whole file uses doctrine, this can be deleted */
|
||||||
private function prepareShortcodes($newsletter, $subscriber, $queue, $wpUserPreview) {
|
private function prepareShortcodes($newsletter, $subscriber, $queue, $wpUserPreview) {
|
||||||
/** @var SendingQueuesRepository $sendingQueueRepository */
|
|
||||||
$sendingQueueRepository = ContainerWrapper::getInstance()->get(SendingQueuesRepository::class);
|
|
||||||
/** @var NewslettersRepository $newsletterRepository */
|
/** @var NewslettersRepository $newsletterRepository */
|
||||||
$newsletterRepository = ContainerWrapper::getInstance()->get(NewslettersRepository::class);
|
$newsletterRepository = ContainerWrapper::getInstance()->get(NewslettersRepository::class);
|
||||||
/** @var SubscribersRepository $subscribersRepository */
|
|
||||||
$subscribersRepository = ContainerWrapper::getInstance()->get(SubscribersRepository::class);
|
|
||||||
|
|
||||||
if ($queue instanceof Sending || $queue instanceof SendingQueue) {
|
|
||||||
$queue = $sendingQueueRepository->findOneById($queue->id);
|
|
||||||
}
|
|
||||||
if ($queue instanceof SendingQueueEntity) {
|
if ($queue instanceof SendingQueueEntity) {
|
||||||
$this->shortcodes->setQueue($queue);
|
$this->shortcodes->setQueue($queue);
|
||||||
}
|
}
|
||||||
@ -112,9 +110,7 @@ class ViewInBrowserRenderer {
|
|||||||
if ($newsletter instanceof NewsletterEntity) {
|
if ($newsletter instanceof NewsletterEntity) {
|
||||||
$this->shortcodes->setNewsletter($newsletter);
|
$this->shortcodes->setNewsletter($newsletter);
|
||||||
}
|
}
|
||||||
if ($subscriber instanceof Subscriber) {
|
|
||||||
$subscriber = $subscribersRepository->findOneById($subscriber->id);
|
|
||||||
}
|
|
||||||
$this->shortcodes->setWpUserPreview($wpUserPreview);
|
$this->shortcodes->setWpUserPreview($wpUserPreview);
|
||||||
if ($subscriber instanceof SubscriberEntity) {
|
if ($subscriber instanceof SubscriberEntity) {
|
||||||
$this->shortcodes->setSubscriber($subscriber);
|
$this->shortcodes->setSubscriber($subscriber);
|
||||||
|
@ -110,10 +110,7 @@ class Track {
|
|||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
// check if the newsletter was sent to the subscriber
|
// check if the newsletter was sent to the subscriber
|
||||||
$queue = SendingQueue::findOne($data->queue_id); // phpcs:ignore Squiz.NamingConventions.ValidVariableName.NotCamelCaps
|
return ($this->sendingQueuesRepository->isSubscriberProcessed($data->queue, $data->subscriber)) ?
|
||||||
if (!$queue instanceof SendingQueue) return false;
|
|
||||||
|
|
||||||
return ($queue->isSubscriberProcessed($data->subscriber->getId())) ?
|
|
||||||
$data :
|
$data :
|
||||||
false;
|
false;
|
||||||
}
|
}
|
||||||
|
@ -26,23 +26,6 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItChecksProcessedSubscribersForOldQueues() {
|
|
||||||
$subscriberId = 123;
|
|
||||||
expect($this->queue->isSubscriberProcessed($subscriberId))->false();
|
|
||||||
$this->queue->subscribers = ['processed' => [$subscriberId]];
|
|
||||||
expect($this->queue->isSubscriberProcessed($subscriberId))->true();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testItChecksProcessedSubscribersForNewQueues() {
|
|
||||||
$subscriberId = 123;
|
|
||||||
$queue = SendingTask::create();
|
|
||||||
$queue->setSubscribers([$subscriberId]);
|
|
||||||
$queue->save();
|
|
||||||
expect($queue->isSubscriberProcessed($subscriberId))->false();
|
|
||||||
$queue->updateProcessedSubscribers([$subscriberId]);
|
|
||||||
expect($queue->isSubscriberProcessed($subscriberId))->true();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testItReadsSerializedRenderedNewsletterBody() {
|
public function testItReadsSerializedRenderedNewsletterBody() {
|
||||||
$queue = $this->queue;
|
$queue = $this->queue;
|
||||||
$data = [
|
$data = [
|
||||||
|
@ -73,11 +73,10 @@ class SendingQueuesRepositoryTest extends \MailPoetTest {
|
|||||||
$newsletter = new NewsletterEntity();
|
$newsletter = new NewsletterEntity();
|
||||||
$newsletter->setType('type');
|
$newsletter->setType('type');
|
||||||
$newsletter->setSubject('Subject');
|
$newsletter->setSubject('Subject');
|
||||||
$this->newsletter = $newsletter;
|
|
||||||
$this->entityManager->persist($newsletter);
|
$this->entityManager->persist($newsletter);
|
||||||
|
|
||||||
$queue = new SendingQueueEntity();
|
$queue = new SendingQueueEntity();
|
||||||
$queue->setNewsletter($this->newsletter);
|
$queue->setNewsletter($newsletter);
|
||||||
$queue->setTask($task);
|
$queue->setTask($task);
|
||||||
$this->entityManager->persist($queue);
|
$this->entityManager->persist($queue);
|
||||||
|
|
||||||
|
@ -3,15 +3,18 @@
|
|||||||
namespace MailPoet\Newsletter\ViewInBrowser;
|
namespace MailPoet\Newsletter\ViewInBrowser;
|
||||||
|
|
||||||
use Codeception\Stub\Expected;
|
use Codeception\Stub\Expected;
|
||||||
|
use MailPoet\Entities\NewsletterEntity;
|
||||||
|
use MailPoet\Entities\ScheduledTaskEntity;
|
||||||
|
use MailPoet\Entities\SendingQueueEntity;
|
||||||
use MailPoet\Entities\SubscriberEntity;
|
use MailPoet\Entities\SubscriberEntity;
|
||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
use MailPoet\Models\ScheduledTask;
|
|
||||||
use MailPoet\Models\SendingQueue;
|
use MailPoet\Models\SendingQueue;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
|
use MailPoet\Newsletter\NewslettersRepository;
|
||||||
|
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
||||||
use MailPoet\Subscribers\LinkTokens;
|
use MailPoet\Subscribers\LinkTokens;
|
||||||
use MailPoet\Subscribers\SubscribersRepository;
|
use MailPoet\Subscribers\SubscribersRepository;
|
||||||
use MailPoet\Tasks\Sending as SendingTask;
|
use MailPoet\Tasks\Sending as SendingTask;
|
||||||
use MailPoetVendor\Idiorm\ORM;
|
|
||||||
|
|
||||||
class ViewInBrowserControllerTest extends \MailPoetTest {
|
class ViewInBrowserControllerTest extends \MailPoetTest {
|
||||||
/** @var ViewInBrowserController */
|
/** @var ViewInBrowserController */
|
||||||
@ -35,11 +38,15 @@ class ViewInBrowserControllerTest extends \MailPoetTest {
|
|||||||
/** @var mixed[] */
|
/** @var mixed[] */
|
||||||
private $browserPreviewData;
|
private $browserPreviewData;
|
||||||
|
|
||||||
|
/** @var SendingQueuesRepository */
|
||||||
|
private $sendingQueuesRepository;
|
||||||
|
|
||||||
public function _before() {
|
public function _before() {
|
||||||
// instantiate class
|
// instantiate class
|
||||||
$this->viewInBrowserController = $this->diContainer->get(ViewInBrowserController::class);
|
$this->viewInBrowserController = $this->diContainer->get(ViewInBrowserController::class);
|
||||||
$this->linkTokens = $this->diContainer->get(LinkTokens::class);
|
$this->linkTokens = $this->diContainer->get(LinkTokens::class);
|
||||||
$this->subscribersRepository = $this->diContainer->get(SubscribersRepository::class);
|
$this->subscribersRepository = $this->diContainer->get(SubscribersRepository::class);
|
||||||
|
$this->sendingQueuesRepository = $this->diContainer->get(SendingQueuesRepository::class);
|
||||||
|
|
||||||
// create newsletter
|
// create newsletter
|
||||||
$newsletter = Newsletter::create();
|
$newsletter = Newsletter::create();
|
||||||
@ -120,7 +127,7 @@ class ViewInBrowserControllerTest extends \MailPoetTest {
|
|||||||
|
|
||||||
public function testItSetsSubscriberToLoggedInWPUserWhenPreviewIsEnabled() {
|
public function testItSetsSubscriberToLoggedInWPUserWhenPreviewIsEnabled() {
|
||||||
$viewInBrowserRenderer = $this->make(ViewInBrowserRenderer::class, [
|
$viewInBrowserRenderer = $this->make(ViewInBrowserRenderer::class, [
|
||||||
'render' => Expected::once(function (bool $isPreview, Newsletter $newsletter, SubscriberEntity $subscriber = null, SendingQueue $queue = null) {
|
'render' => Expected::once(function (bool $isPreview, Newsletter $newsletter, SubscriberEntity $subscriber = null, SendingQueueEntity $queue = null) {
|
||||||
assert($subscriber !== null); // PHPStan
|
assert($subscriber !== null); // PHPStan
|
||||||
expect($subscriber)->notNull();
|
expect($subscriber)->notNull();
|
||||||
expect($subscriber->getId())->equals(1);
|
expect($subscriber->getId())->equals(1);
|
||||||
@ -141,10 +148,10 @@ class ViewInBrowserControllerTest extends \MailPoetTest {
|
|||||||
|
|
||||||
public function testItGetsQueueByQueueId() {
|
public function testItGetsQueueByQueueId() {
|
||||||
$viewInBrowserRenderer = $this->make(ViewInBrowserRenderer::class, [
|
$viewInBrowserRenderer = $this->make(ViewInBrowserRenderer::class, [
|
||||||
'render' => Expected::once(function (bool $isPreview, Newsletter $newsletter, SubscriberEntity $subscriber = null, SendingQueue $queue = null) {
|
'render' => Expected::once(function (bool $isPreview, Newsletter $newsletter, SubscriberEntity $subscriber = null, SendingQueueEntity $queue = null) {
|
||||||
assert($queue !== null); // PHPStan
|
assert($queue !== null); // PHPStan
|
||||||
expect($queue)->notNull();
|
expect($queue)->notNull();
|
||||||
expect($queue->id)->same($this->sendingTask->id);
|
expect($queue->getId())->equals($this->sendingTask->id);
|
||||||
}),
|
}),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@ -157,10 +164,10 @@ class ViewInBrowserControllerTest extends \MailPoetTest {
|
|||||||
|
|
||||||
public function testItGetsQueueByNewsletter() {
|
public function testItGetsQueueByNewsletter() {
|
||||||
$viewInBrowserRenderer = $this->make(ViewInBrowserRenderer::class, [
|
$viewInBrowserRenderer = $this->make(ViewInBrowserRenderer::class, [
|
||||||
'render' => Expected::once(function (bool $isPreview, Newsletter $newsletter, SubscriberEntity $subscriber = null, SendingQueue $queue = null) {
|
'render' => Expected::once(function (bool $isPreview, Newsletter $newsletter, SubscriberEntity $subscriber = null, SendingQueueEntity $queue = null) {
|
||||||
assert($queue !== null); // PHPStan
|
assert($queue !== null); // PHPStan
|
||||||
expect($queue)->notNull();
|
expect($queue)->notNull();
|
||||||
expect($queue->id)->same($this->sendingTask->queue()->id);
|
expect($queue->getId())->equals($this->sendingTask->queue()->id);
|
||||||
}),
|
}),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@ -173,7 +180,7 @@ class ViewInBrowserControllerTest extends \MailPoetTest {
|
|||||||
|
|
||||||
public function testItResetsQueueForWelcomeEmails() {
|
public function testItResetsQueueForWelcomeEmails() {
|
||||||
$viewInBrowserRenderer = $this->make(ViewInBrowserRenderer::class, [
|
$viewInBrowserRenderer = $this->make(ViewInBrowserRenderer::class, [
|
||||||
'render' => Expected::once(function (bool $isPreview, Newsletter $newsletter, SubscriberEntity $subscriber = null, SendingQueue $queue = null) {
|
'render' => Expected::once(function (bool $isPreview, Newsletter $newsletter, SubscriberEntity $subscriber = null, SendingQueueEntity $queue = null) {
|
||||||
expect($queue)->null();
|
expect($queue)->null();
|
||||||
}),
|
}),
|
||||||
]);
|
]);
|
||||||
@ -189,7 +196,7 @@ class ViewInBrowserControllerTest extends \MailPoetTest {
|
|||||||
|
|
||||||
public function testItResetsQueueForAutomaticEmailsInPreview() {
|
public function testItResetsQueueForAutomaticEmailsInPreview() {
|
||||||
$viewInBrowserRenderer = $this->make(ViewInBrowserRenderer::class, [
|
$viewInBrowserRenderer = $this->make(ViewInBrowserRenderer::class, [
|
||||||
'render' => Expected::once(function (bool $isPreview, Newsletter $newsletter, SubscriberEntity $subscriber = null, SendingQueue $queue = null) {
|
'render' => Expected::once(function (bool $isPreview, Newsletter $newsletter, SubscriberEntity $subscriber = null, SendingQueueEntity $queue = null) {
|
||||||
expect($queue)->null();
|
expect($queue)->null();
|
||||||
}),
|
}),
|
||||||
]);
|
]);
|
||||||
@ -206,10 +213,10 @@ class ViewInBrowserControllerTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function _after() {
|
public function _after() {
|
||||||
ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
$this->truncateEntity(NewsletterEntity::class);
|
||||||
ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
|
$this->truncateEntity(SubscriberEntity::class);
|
||||||
ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
$this->truncateEntity(ScheduledTaskEntity::class);
|
||||||
ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
$this->truncateEntity(SendingQueueEntity::class);
|
||||||
// reset WP user role
|
// reset WP user role
|
||||||
$wpUser = wp_get_current_user();
|
$wpUser = wp_get_current_user();
|
||||||
$wpUser->add_role('administrator');
|
$wpUser->add_role('administrator');
|
||||||
@ -228,6 +235,7 @@ class ViewInBrowserControllerTest extends \MailPoetTest {
|
|||||||
return new ViewInBrowserController(
|
return new ViewInBrowserController(
|
||||||
$this->linkTokens,
|
$this->linkTokens,
|
||||||
$viewInBrowserRenderer,
|
$viewInBrowserRenderer,
|
||||||
|
$this->sendingQueuesRepository,
|
||||||
$this->subscribersRepository
|
$this->subscribersRepository
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,10 @@
|
|||||||
namespace MailPoet\Newsletter\ViewInBrowser;
|
namespace MailPoet\Newsletter\ViewInBrowser;
|
||||||
|
|
||||||
use Codeception\Stub\Expected;
|
use Codeception\Stub\Expected;
|
||||||
|
use MailPoet\Entities\NewsletterEntity;
|
||||||
|
use MailPoet\Entities\NewsletterLinkEntity;
|
||||||
|
use MailPoet\Entities\ScheduledTaskEntity;
|
||||||
|
use MailPoet\Entities\SendingQueueEntity;
|
||||||
use MailPoet\Entities\SubscriberEntity;
|
use MailPoet\Entities\SubscriberEntity;
|
||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
use MailPoet\Models\NewsletterLink;
|
use MailPoet\Models\NewsletterLink;
|
||||||
@ -11,6 +15,7 @@ use MailPoet\Models\SendingQueue;
|
|||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\Newsletter\Links\Links;
|
use MailPoet\Newsletter\Links\Links;
|
||||||
use MailPoet\Newsletter\Renderer\Renderer;
|
use MailPoet\Newsletter\Renderer\Renderer;
|
||||||
|
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
||||||
use MailPoet\Newsletter\Shortcodes\Shortcodes;
|
use MailPoet\Newsletter\Shortcodes\Shortcodes;
|
||||||
use MailPoet\Router\Router;
|
use MailPoet\Router\Router;
|
||||||
use MailPoet\Settings\SettingsController;
|
use MailPoet\Settings\SettingsController;
|
||||||
@ -165,22 +170,26 @@ class ViewInBrowserRendererTest extends \MailPoetTest {
|
|||||||
$this->diContainer->get(Shortcodes::class),
|
$this->diContainer->get(Shortcodes::class),
|
||||||
$this->diContainer->get(Renderer::class)
|
$this->diContainer->get(Renderer::class)
|
||||||
);
|
);
|
||||||
|
/** @var SendingQueuesRepository $sendingQueueRepository */
|
||||||
|
$sendingQueueRepository = $this->diContainer->get(SendingQueuesRepository::class);
|
||||||
$renderedBody = $viewInBrowser->render(
|
$renderedBody = $viewInBrowser->render(
|
||||||
$preview = false,
|
$preview = false,
|
||||||
$this->newsletter,
|
$this->newsletter,
|
||||||
$this->subscriber,
|
$this->subscriber,
|
||||||
$this->sendingTask->queue()
|
$sendingQueueRepository->findOneById($this->sendingTask->queue()->id)
|
||||||
);
|
);
|
||||||
expect($renderedBody)->regExp('/Newsletter from queue/');
|
expect($renderedBody)->regExp('/Newsletter from queue/');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItConvertsShortcodes() {
|
public function testItConvertsShortcodes() {
|
||||||
|
/** @var SendingQueuesRepository $sendingQueueRepository */
|
||||||
|
$sendingQueueRepository = $this->diContainer->get(SendingQueuesRepository::class);
|
||||||
$this->settings->set('tracking.enabled', false);
|
$this->settings->set('tracking.enabled', false);
|
||||||
$renderedBody = $this->viewInBrowserRenderer->render(
|
$renderedBody = $this->viewInBrowserRenderer->render(
|
||||||
$preview = false,
|
$preview = false,
|
||||||
$this->newsletter,
|
$this->newsletter,
|
||||||
$this->subscriber,
|
$this->subscriber,
|
||||||
$this->sendingTask->queue()
|
$sendingQueueRepository->findOneById($this->sendingTask->queue()->id)
|
||||||
);
|
);
|
||||||
expect($renderedBody)->stringContainsString('Hello, First');
|
expect($renderedBody)->stringContainsString('Hello, First');
|
||||||
expect($renderedBody)->stringContainsString(Router::NAME . '&endpoint=view_in_browser');
|
expect($renderedBody)->stringContainsString(Router::NAME . '&endpoint=view_in_browser');
|
||||||
@ -188,8 +197,11 @@ class ViewInBrowserRendererTest extends \MailPoetTest {
|
|||||||
|
|
||||||
public function testItRewritesLinksToRouterEndpointWhenTrackingIsEnabled() {
|
public function testItRewritesLinksToRouterEndpointWhenTrackingIsEnabled() {
|
||||||
$this->settings->set('tracking.enabled', true);
|
$this->settings->set('tracking.enabled', true);
|
||||||
$queue = $this->sendingTask->queue();
|
/** @var SendingQueuesRepository $sendingQueueRepository */
|
||||||
$queue->newsletterRenderedBody = $this->queueRenderedNewsletterWithTracking;
|
$sendingQueueRepository = $this->diContainer->get(SendingQueuesRepository::class);
|
||||||
|
$queue = $sendingQueueRepository->findOneById($this->sendingTask->queue()->id);
|
||||||
|
$this->assertInstanceOf(SendingQueueEntity::class, $queue);
|
||||||
|
$queue->setNewsletterRenderedBody($this->queueRenderedNewsletterWithTracking);
|
||||||
$renderedBody = $this->viewInBrowserRenderer->render(
|
$renderedBody = $this->viewInBrowserRenderer->render(
|
||||||
$preview = false,
|
$preview = false,
|
||||||
$this->newsletter,
|
$this->newsletter,
|
||||||
@ -200,8 +212,11 @@ class ViewInBrowserRendererTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function testItConvertsHashedLinksToUrlsWhenPreviewIsEnabledAndNewsletterWasSent() {
|
public function testItConvertsHashedLinksToUrlsWhenPreviewIsEnabledAndNewsletterWasSent() {
|
||||||
$queue = $this->sendingTask->queue();
|
/** @var SendingQueuesRepository $sendingQueueRepository */
|
||||||
$queue->newsletterRenderedBody = $this->queueRenderedNewsletterWithTracking;
|
$sendingQueueRepository = $this->diContainer->get(SendingQueuesRepository::class);
|
||||||
|
$queue = $sendingQueueRepository->findOneById($this->sendingTask->queue()->id);
|
||||||
|
$this->assertInstanceOf(SendingQueueEntity::class, $queue);
|
||||||
|
$queue->setNewsletterRenderedBody($this->queueRenderedNewsletterWithTracking);
|
||||||
$renderedBody = $this->viewInBrowserRenderer->render(
|
$renderedBody = $this->viewInBrowserRenderer->render(
|
||||||
$preview = true,
|
$preview = true,
|
||||||
$this->newsletter,
|
$this->newsletter,
|
||||||
@ -214,8 +229,11 @@ class ViewInBrowserRendererTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function testRemovesOpenTrackingTagWhenPreviewIsEnabledAndNewsletterWasSent() {
|
public function testRemovesOpenTrackingTagWhenPreviewIsEnabledAndNewsletterWasSent() {
|
||||||
$queue = $this->sendingTask->queue();
|
/** @var SendingQueuesRepository $sendingQueueRepository */
|
||||||
$queue->newsletterRenderedBody = $this->queueRenderedNewsletterWithTracking;
|
$sendingQueueRepository = $this->diContainer->get(SendingQueuesRepository::class);
|
||||||
|
$queue = $sendingQueueRepository->findOneById($this->sendingTask->queue()->id);
|
||||||
|
$this->assertInstanceOf(SendingQueueEntity::class, $queue);
|
||||||
|
$queue->setNewsletterRenderedBody($this->queueRenderedNewsletterWithTracking);
|
||||||
$renderedBody = $this->viewInBrowserRenderer->render(
|
$renderedBody = $this->viewInBrowserRenderer->render(
|
||||||
$preview = true,
|
$preview = true,
|
||||||
$this->newsletter,
|
$this->newsletter,
|
||||||
@ -228,10 +246,10 @@ class ViewInBrowserRendererTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function _after() {
|
public function _after() {
|
||||||
ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
$this->truncateEntity(NewsletterEntity::class);
|
||||||
ORM::raw_execute('TRUNCATE ' . NewsletterLink::$_table);
|
$this->truncateEntity(SubscriberEntity::class);
|
||||||
ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
|
$this->truncateEntity(ScheduledTaskEntity::class);
|
||||||
ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
$this->truncateEntity(SendingQueueEntity::class);
|
||||||
ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
$this->truncateEntity(NewsletterLinkEntity::class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,7 @@ use MailPoet\Models\Newsletter;
|
|||||||
use MailPoet\Models\NewsletterLink;
|
use MailPoet\Models\NewsletterLink;
|
||||||
use MailPoet\Models\SendingQueue;
|
use MailPoet\Models\SendingQueue;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
|
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
||||||
use MailPoet\Router\Endpoints\Track;
|
use MailPoet\Router\Endpoints\Track;
|
||||||
use MailPoet\Subscribers\LinkTokens;
|
use MailPoet\Subscribers\LinkTokens;
|
||||||
use MailPoet\Tasks\Sending as SendingTask;
|
use MailPoet\Tasks\Sending as SendingTask;
|
||||||
@ -106,6 +107,7 @@ class TrackTest extends \MailPoetTest {
|
|||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
$track = Stub::make(Track::class, [
|
$track = Stub::make(Track::class, [
|
||||||
'linkTokens' => new LinkTokens,
|
'linkTokens' => new LinkTokens,
|
||||||
|
'sendingQueuesRepository' => $this->diContainer->get(SendingQueuesRepository::class),
|
||||||
'terminate' => function($code) {
|
'terminate' => function($code) {
|
||||||
expect($code)->equals(403);
|
expect($code)->equals(403);
|
||||||
},
|
},
|
||||||
@ -131,6 +133,7 @@ class TrackTest extends \MailPoetTest {
|
|||||||
$this->entityManager->persist($subscriber);
|
$this->entityManager->persist($subscriber);
|
||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
$data->subscriber->setId($subscriber->getId());
|
$data->subscriber->setId($subscriber->getId());
|
||||||
|
$data->subscriber = $subscriber;
|
||||||
expect($this->track->_validateTrackData($data))->false();
|
expect($this->track->_validateTrackData($data))->false();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user