diff --git a/tests/integration/Cron/Workers/SendingQueue/Tasks/LinksTest.php b/tests/integration/Cron/Workers/SendingQueue/Tasks/LinksTest.php
index f8985ae1eb..bfe04b1839 100644
--- a/tests/integration/Cron/Workers/SendingQueue/Tasks/LinksTest.php
+++ b/tests/integration/Cron/Workers/SendingQueue/Tasks/LinksTest.php
@@ -3,18 +3,32 @@
namespace MailPoet\Test\Cron\Workers\SendingQueue\Tasks;
use MailPoet\Cron\Workers\SendingQueue\Tasks\Links;
+use MailPoet\Cron\Workers\StatsNotifications\NewsletterLinkRepository;
+use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\NewsletterLinkEntity;
-use MailPoet\Models\Newsletter;
-use MailPoet\Models\NewsletterLink;
-use MailPoetVendor\Idiorm\ORM;
+use MailPoet\Entities\SendingQueueEntity;
+use MailPoet\Test\DataFactories\Newsletter as NewsletterFactory;
class LinksTest extends \MailPoetTest {
/** @var Links */
private $links;
+ /** @var NewsletterEntity */
+ private $newsletter;
+
+ /** @var SendingQueueEntity */
+ private $queue;
+
+ /** @var NewsletterLinkRepository */
+ private $newsletterLinkRepository;
+
protected function _before() {
parent::_before();
+ $newsletterFactory = new NewsletterFactory();
+ $this->newsletter = $newsletterFactory->withSendingQueue()->create();
+ $this->queue = $this->newsletter->getQueues()->first();
$this->links = $this->diContainer->get(Links::class);
+ $this->newsletterLinkRepository = $this->diContainer->get(NewsletterLinkRepository::class);
}
public function testItCanSaveLinks() {
@@ -24,15 +38,18 @@ class LinksTest extends \MailPoetTest {
'hash' => 'some_hash',
],
];
- $newsletter = (object)['id' => 1];
- $queue = (object)['id' => 2];
+ $newsletter = (object)['id' => $this->newsletter->getId()];
+ $queue = (object)['id' => $this->queue->getId()];
+
$this->links->saveLinks($links, $newsletter, $queue);
- $newsletterLink = NewsletterLink::where('hash', $links[0]['hash'])
- ->findOne();
- assert($newsletterLink instanceof NewsletterLink);
- expect($newsletterLink->newsletterId)->equals($newsletter->id);
- expect($newsletterLink->queueId)->equals($queue->id);
- expect($newsletterLink->url)->equals($links[0]['link']);
+
+ $newsletterLink = $this->newsletterLinkRepository->findOneBy(['hash' => $links[0]['hash']]);
+ assert($newsletterLink instanceof NewsletterLinkEntity);
+ $this->assertInstanceOf(NewsletterEntity::class, $newsletterLink->getNewsletter());
+ expect($newsletterLink->getNewsletter()->getId())->equals($this->newsletter->getId());
+ $this->assertInstanceOf(SendingQueueEntity::class, $newsletterLink->getQueue());
+ expect($newsletterLink->getQueue()->getId())->equals($this->queue->getId());
+ expect($newsletterLink->getUrl())->equals($links[0]['link']);
}
public function testItCanHashAndReplaceLinks() {
@@ -51,38 +68,38 @@ class LinksTest extends \MailPoetTest {
}
public function testItCanProcessRenderedBody() {
- $newsletter = Newsletter::create();
- $newsletter->type = Newsletter::TYPE_STANDARD;
- $newsletter->save();
$renderedNewsletter = [
'html' => 'Example Link',
'text' => 'Example Link',
];
- $queue = (object)['id' => 2];
- $result = $this->links->process($renderedNewsletter, $newsletter, $queue);
- $newsletterLink = NewsletterLink::where('newsletter_id', $newsletter->id)
- ->findOne();
- assert($newsletterLink instanceof NewsletterLink);
- expect($result['html'])->stringContainsString($newsletterLink->hash);
+
+ $result = $this->links->process($renderedNewsletter, $this->newsletter, $this->queue);
+
+ $newsletterLink = $this->newsletterLinkRepository->findOneBy(['newsletter' => $this->newsletter->getId()]);
+ assert($newsletterLink instanceof NewsletterLinkEntity);
+ expect($result['html'])->stringContainsString($newsletterLink->getHash());
}
public function testItCanEnsureThatInstantUnsubscribeLinkIsAlwaysPresent() {
- $newsletter = Newsletter::create();
- $newsletter->type = Newsletter::TYPE_STANDARD;
- $newsletter->save();
$renderedNewsletter = [
'html' => 'Example Link',
'text' => 'Example Link',
];
- $queue = (object)['id' => 2];
- $this->links->process($renderedNewsletter, $newsletter, $queue);
- $unsubscribeCount = NewsletterLink::where('newsletter_id', $newsletter->id)
- ->where('url', NewsletterLinkEntity::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE)->count();
+
+ $this->links->process($renderedNewsletter, $this->newsletter, $this->queue);
+
+ $unsubscribeCount = $this->newsletterLinkRepository->countBy(
+ [
+ 'newsletter' => $this->newsletter->getId(),
+ 'url' => NewsletterLinkEntity::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE,
+ ]
+ );
expect($unsubscribeCount)->equals(1);
}
public function _after() {
- ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
- ORM::raw_execute('TRUNCATE ' . NewsletterLink::$_table);
+ $this->truncateEntity(NewsletterEntity::class);
+ $this->truncateEntity(NewsletterLinkEntity::class);
+ $this->truncateEntity(SendingQueueEntity::class);
}
}