diff --git a/tests/integration/Newsletter/ViewInBrowser/ViewInBrowserRendererTest.php b/tests/integration/Newsletter/ViewInBrowser/ViewInBrowserRendererTest.php
index 7cf780b472..d626c6bde6 100644
--- a/tests/integration/Newsletter/ViewInBrowser/ViewInBrowserRendererTest.php
+++ b/tests/integration/Newsletter/ViewInBrowser/ViewInBrowserRendererTest.php
@@ -9,7 +9,6 @@ use MailPoet\Models\ScheduledTask;
use MailPoet\Models\SendingQueue;
use MailPoet\Models\Subscriber;
use MailPoet\Newsletter\Links\Links;
-use MailPoet\Newsletter\ViewInBrowserRenderer;
use MailPoet\Router\Router;
use MailPoet\Settings\SettingsController;
use MailPoet\Tasks\Sending as SendingTask;
@@ -17,65 +16,75 @@ use MailPoet\WP\Emoji;
use MailPoetVendor\Idiorm\ORM;
class ViewInBrowserRendererTest extends \MailPoetTest {
- public $queueRenderedNewsletterWithTracking;
- public $queueRenderedNewsletterWithoutTracking;
- public $newsletterLink2;
- public $newsletterLink1;
- public $queue;
- public $subscriber;
- public $viewInBrowser;
- public $emoji;
+ /** @var SettingsController */
+ private $settings;
+
+ /** @var ViewInBrowserRenderer */
+ private $viewInBrowserRenderer;
+
+ /** @var Newsletter */
public $newsletter;
+
+ /** @var SendingTask */
+ private $sendingTask;
+
+ /** @var Subscriber */
+ private $subscriber;
+
+ /** @var mixed[] */
+ private $queueRenderedNewsletterWithTracking;
+
+ /** @var mixed[] */
+ private $queueRenderedNewsletterWithoutTracking;
+
public function _before() {
- parent::_before();
- $this->newsletter =
- [
- 'body' => json_decode(
- '{
- "content": {
- "type": "container",
- "orientation": "vertical",
- "styles": {
- "block": {
- "backgroundColor": "transparent"
- }
- },
- "blocks": [
- {
- "type": "container",
- "orientation": "horizontal",
- "styles": {
- "block": {
- "backgroundColor": "transparent"
- }
- },
- "blocks": [
- {
- "type": "container",
- "orientation": "vertical",
- "styles": {
- "block": {
- "backgroundColor": "transparent"
- }
- },
- "blocks": [
- {
- "type": "text",
- "text": "
Rendered newsletter. Hello, [subscriber:firstname | default:reader]. Unsubscribe or visit Google
"
- }
- ]
- }
- ]
- }
- ]
- }
- }', true),
- 'id' => 1,
- 'subject' => 'Some subject',
- 'preheader' => 'Some preheader',
- 'type' => 'standard',
- 'status' => 'active',
- ];
+ $newsletterData = [
+ 'body' => json_decode(
+ '{
+ "content": {
+ "type": "container",
+ "orientation": "vertical",
+ "styles": {
+ "block": {
+ "backgroundColor": "transparent"
+ }
+ },
+ "blocks": [
+ {
+ "type": "container",
+ "orientation": "horizontal",
+ "styles": {
+ "block": {
+ "backgroundColor": "transparent"
+ }
+ },
+ "blocks": [
+ {
+ "type": "container",
+ "orientation": "vertical",
+ "styles": {
+ "block": {
+ "backgroundColor": "transparent"
+ }
+ },
+ "blocks": [
+ {
+ "type": "text",
+ "text": "Rendered newsletter. Hello, [subscriber:firstname | default:reader]. Unsubscribe or visit Google
"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ }', true),
+ 'id' => 1,
+ 'subject' => 'Some subject',
+ 'preheader' => 'Some preheader',
+ 'type' => 'standard',
+ 'status' => 'active',
+ ];
$this->queueRenderedNewsletterWithoutTracking = [
'html' => 'Newsletter from queue. Hello, [subscriber:firstname | default:reader]. Unsubscribe or visit Google
',
'text' => 'test',
@@ -84,102 +93,105 @@ class ViewInBrowserRendererTest extends \MailPoetTest {
'html' => 'Newsletter from queue. Hello, [subscriber:firstname | default:reader]. Unsubscribe or visit Google
',
'text' => 'test',
];
- $this->emoji = new Emoji();
- $this->viewInBrowser = new ViewInBrowserRenderer($this->emoji, false);
+
// create newsletter
$newsletter = Newsletter::create();
- $newsletter->hydrate($this->newsletter);
+ $newsletter->hydrate($newsletterData);
$this->newsletter = $newsletter->save();
+
// create subscriber
$subscriber = Subscriber::create();
$subscriber->email = 'test@example.com';
$subscriber->firstName = 'First';
$subscriber->lastName = 'Last';
$this->subscriber = $subscriber->save();
+
// create queue
$queue = SendingTask::create();
$queue->newsletterId = $newsletter->id;
$queue->newsletterRenderedBody = $this->queueRenderedNewsletterWithoutTracking;
$queue->setSubscribers([$subscriber->id]);
- $this->queue = $queue->save();
+ $this->sendingTask = $queue->save();
+
// create newsletter link associations
$newsletterLink1 = NewsletterLink::create();
$newsletterLink1->hash = '90e56';
$newsletterLink1->url = '[link:newsletter_view_in_browser_url]';
$newsletterLink1->newsletterId = $this->newsletter->id;
- $newsletterLink1->queueId = $this->queue->id;
- $this->newsletterLink1 = $newsletterLink1->save();
+ $newsletterLink1->queueId = $this->sendingTask->id;
+ $newsletterLink1->save();
+
$newsletterLink2 = NewsletterLink::create();
$newsletterLink2->hash = 'i1893';
$newsletterLink2->url = 'http://google.com';
$newsletterLink2->newsletterId = $this->newsletter->id;
- $newsletterLink2->queueId = $this->queue->id;
- $this->newsletterLink2 = $newsletterLink2->save();
+ $newsletterLink2->queueId = $this->sendingTask->id;
+ $newsletterLink2->save();
+
+ $this->settings = $this->diContainer->get(SettingsController::class);
+ $this->viewInBrowserRenderer = $this->diContainer->get(ViewInBrowserRenderer::class);
}
public function testItRendersNewsletter() {
- $renderedBody = $this->viewInBrowser->renderNewsletter(
+ $renderedBody = $this->viewInBrowserRenderer->render(
+ $preview = false,
$this->newsletter,
$this->subscriber,
- $queue = false,
- $preview = false
+ $queue = null
);
expect($renderedBody)->regExp('/Rendered newsletter/');
}
public function testItReusesRenderedNewsletterBodyWhenQueueExists() {
- $emoji = $this->make(
- Emoji::class,
- ['decodeEmojisInBody' => Expected::once(function ($params) {
+ $emoji = $this->make(Emoji::class, [
+ 'decodeEmojisInBody' => Expected::once(function ($params) {
return $params;
- })]
- );
- $viewInBrowser = new ViewInBrowserRenderer($emoji, false);
- $renderedBody = $viewInBrowser->renderNewsletter(
+ }),
+ ]);
+ $this->settings->set('tracking.enabled', false);
+ $viewInBrowser = new ViewInBrowserRenderer($emoji, $this->diContainer->get(SettingsController::class));
+ $renderedBody = $viewInBrowser->render(
+ $preview = false,
$this->newsletter,
$this->subscriber,
- $this->queue,
- $preview = false
+ $this->sendingTask->queue()
);
expect($renderedBody)->regExp('/Newsletter from queue/');
}
public function testItConvertsShortcodes() {
- $settings = SettingsController::getInstance();
- $settings->set('tracking.enabled', false);
- $renderedBody = $this->viewInBrowser->renderNewsletter(
+ $this->settings->set('tracking.enabled', false);
+ $renderedBody = $this->viewInBrowserRenderer->render(
+ $preview = false,
$this->newsletter,
$this->subscriber,
- $this->queue,
- $preview = false
+ $this->sendingTask->queue()
);
expect($renderedBody)->contains('Hello, First');
expect($renderedBody)->contains(Router::NAME . '&endpoint=view_in_browser');
}
public function testItRewritesLinksToRouterEndpointWhenTrackingIsEnabled() {
- $settings = SettingsController::getInstance();
- $settings->set('tracking.enabled', true);
- $viewInBrowser = new ViewInBrowserRenderer($this->emoji, true);
- $queue = $this->queue;
+ $this->settings->set('tracking.enabled', true);
+ $queue = $this->sendingTask->queue();
$queue->newsletterRenderedBody = $this->queueRenderedNewsletterWithTracking;
- $renderedBody = $viewInBrowser->renderNewsletter(
+ $renderedBody = $this->viewInBrowserRenderer->render(
+ $preview = false,
$this->newsletter,
$this->subscriber,
- $queue,
- $preview = false
+ $queue
);
expect($renderedBody)->contains(Router::NAME . '&endpoint=track');
}
public function testItConvertsHashedLinksToUrlsWhenPreviewIsEnabledAndNewsletterWasSent() {
- $queue = $this->queue;
+ $queue = $this->sendingTask->queue();
$queue->newsletterRenderedBody = $this->queueRenderedNewsletterWithTracking;
- $renderedBody = $this->viewInBrowser->renderNewsletter(
+ $renderedBody = $this->viewInBrowserRenderer->render(
+ $preview = true,
$this->newsletter,
$this->subscriber,
- $queue,
- $preview = true
+ $queue
);
// hashed link should be replaced with a URL
expect($renderedBody)->notContains('[mailpoet_click_data]');
@@ -187,13 +199,13 @@ class ViewInBrowserRendererTest extends \MailPoetTest {
}
public function testRemovesOpenTrackingTagWhenPreviewIsEnabledAndNewsletterWasSent() {
- $queue = $this->queue;
+ $queue = $this->sendingTask->queue();
$queue->newsletterRenderedBody = $this->queueRenderedNewsletterWithTracking;
- $renderedBody = $this->viewInBrowser->renderNewsletter(
+ $renderedBody = $this->viewInBrowserRenderer->render(
+ $preview = true,
$this->newsletter,
$this->subscriber,
- $queue,
- $preview = true
+ $queue
);
// open tracking data tag should be removed
expect($renderedBody)->notContains('[mailpoet_open_data]');