Remove usage of deprecated method

[MAILPOET-3267]
This commit is contained in:
Pavel Dohnal
2021-05-26 10:16:17 +02:00
committed by Veljko V
parent 6ad686588d
commit 7426479631
8 changed files with 79 additions and 71 deletions

View File

@ -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;
} }
} }

View File

@ -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);

View File

@ -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;
} }

View File

@ -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 = [

View File

@ -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);

View File

@ -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
); );
} }

View File

@ -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);
} }
} }

View File

@ -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();
} }