Update tests [MAILPOET-2460]

This commit is contained in:
wxa
2019-10-23 14:46:57 +03:00
committed by Jack Kitterhing
parent da9c42963f
commit 684922cbdf
6 changed files with 109 additions and 34 deletions

View File

@ -32,6 +32,7 @@ use MailPoet\Settings\SettingsController;
use MailPoet\Subscription\SubscriptionUrlFactory;
use MailPoet\Tasks\Sending as SendingTask;
use MailPoet\WooCommerce\Helper as WCHelper;
use MailPoet\WP\Emoji;
use MailPoet\WP\Functions as WPFunctions;
class NewslettersTest extends \MailPoetTest {
@ -138,7 +139,8 @@ class NewslettersTest extends \MailPoetTest {
ContainerWrapper::getInstance()->get(NewslettersRepository::class),
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),
ContainerWrapper::getInstance()->get(PostNotificationScheduler::class),
ContainerWrapper::getInstance()->get(MetaInfo::class)
ContainerWrapper::getInstance()->get(MetaInfo::class),
ContainerWrapper::getInstance()->get(Emoji::class)
);
$response = $this->endpoint->get(['id' => $this->newsletter->id]);
expect($response->status)->equals(APIResponse::STATUS_OK);
@ -166,8 +168,17 @@ class NewslettersTest extends \MailPoetTest {
'options' => [
$newsletter_option_field->name => 'some_option_value',
],
'body' => 'some text',
];
$emoji = $this->make(
Emoji::class,
['encodeForUTF8Column' => Expected::once(function ($params) {
return $params;
})],
$this
);
$wp = Stub::make(new WPFunctions, [
'applyFilters' => asCallable([WPHooksHelper::class, 'applyFilters']),
'doAction' => asCallable([WPHooksHelper::class, 'doAction']),
@ -182,7 +193,8 @@ class NewslettersTest extends \MailPoetTest {
ContainerWrapper::getInstance()->get(NewslettersRepository::class),
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),
ContainerWrapper::getInstance()->get(PostNotificationScheduler::class),
ContainerWrapper::getInstance()->get(MetaInfo::class)
ContainerWrapper::getInstance()->get(MetaInfo::class),
$emoji
);
$response = $this->endpoint->save($valid_data);
@ -554,7 +566,8 @@ class NewslettersTest extends \MailPoetTest {
ContainerWrapper::getInstance()->get(NewslettersRepository::class),
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),
ContainerWrapper::getInstance()->get(PostNotificationScheduler::class),
ContainerWrapper::getInstance()->get(MetaInfo::class)
ContainerWrapper::getInstance()->get(MetaInfo::class),
ContainerWrapper::getInstance()->get(Emoji::class)
);
$response = $this->endpoint->duplicate(['id' => $this->newsletter->id]);
@ -870,6 +883,33 @@ class NewslettersTest extends \MailPoetTest {
'id' => $this->newsletter->id,
'body' => 'fake body',
];
$emoji = $this->make(
Emoji::class,
['encodeForUTF8Column' => Expected::once(function ($params) {
return $params;
})],
$this
);
$wp = Stub::make(new WPFunctions, [
'applyFilters' => asCallable([WPHooksHelper::class, 'applyFilters']),
'doAction' => asCallable([WPHooksHelper::class, 'doAction']),
]);
$this->endpoint = new Newsletters(
ContainerWrapper::getInstance()->get(BulkActionController::class),
ContainerWrapper::getInstance()->get(Handler::class),
$wp,
$this->makeEmpty(WCHelper::class),
new SettingsController(),
ContainerWrapper::getInstance()->get(AuthorizedEmailsController::class),
ContainerWrapper::getInstance()->get(NewslettersRepository::class),
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),
ContainerWrapper::getInstance()->get(PostNotificationScheduler::class),
ContainerWrapper::getInstance()->get(MetaInfo::class),
$emoji
);
$response = $this->endpoint->showPreview($data);
expect($response->meta['preview_url'])->notContains('http');
expect($response->meta['preview_url'])->regExp('!^\/\/!');

View File

@ -3,6 +3,7 @@
namespace MailPoet\Test\Cron\Workers\SendingQueue\Tasks;
use Codeception\Stub;
use Codeception\Stub\Expected;
use Codeception\Util\Fixtures;
use Helper\WordPressHooks as WPHooksHelper;
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
@ -19,6 +20,7 @@ use MailPoet\Models\Setting;
use MailPoet\Models\Subscriber;
use MailPoet\Router\Router;
use MailPoet\Tasks\Sending as SendingTask;
use MailPoet\WP\Emoji;
use MailPoet\WP\Functions as WPFunctions;
class NewsletterTest extends \MailPoetTest {
@ -283,7 +285,15 @@ class NewsletterTest extends \MailPoetTest {
'text' => 'queue TEXT body',
];
$queue->newsletter_rendered_subject = 'queue subject';
$result = $this->newsletter_task->prepareNewsletterForSending(
$emoji = $this->make(
Emoji::class,
['decodeEmojisInBody' => Expected::once(function ($params) {
return $params;
})],
$this
);
$newsletter_task = new NewsletterTask(null, null, null, $emoji);
$result = $newsletter_task->prepareNewsletterForSending(
$this->newsletter,
$this->subscriber,
$queue
@ -421,7 +431,16 @@ class NewsletterTest extends \MailPoetTest {
$sending_queue = \ORM::forTable(SendingQueue::$_table)->findOne($queue->id);
$sending_queue->set('newsletter_rendered_body', 'a:2:{s:4:"html";s:4:"test";s:4:"text";s:4:"test";}');
$sending_queue->save();
expect($this->newsletter_task->preProcessNewsletter($this->newsletter, $queue_mock))->equals($this->newsletter);
$emoji = $this->make(
Emoji::class,
['encodeEmojisInBody' => Expected::once(function ($params) {
return $params;
})],
$this
);
$newsletter_task = new NewsletterTask(null, null, null, $emoji);
expect($newsletter_task->preProcessNewsletter($this->newsletter, $queue_mock))->equals($this->newsletter);
}
function _after() {

View File

@ -2,7 +2,6 @@
namespace MailPoet\Test\Models;
use AspectMock\Test as Mock;
use MailPoet\Models\ScheduledTask;
use MailPoet\Models\ScheduledTaskSubscriber;
use MailPoet\Models\SendingQueue;
@ -23,26 +22,6 @@ class SendingQueueTest extends \MailPoetTest {
];
}
function testItCanEncodeEmojisInBody() {
$mock = Mock::double('MailPoet\WP\Emoji', [
'encodeForUTF8Column' => function($params) {
return $params;
},
]);
$this->queue->encodeEmojisInBody($this->rendered_body);
$mock->verifyInvokedMultipleTimes('encodeForUTF8Column', 2);
}
function testItCanDecodeEmojisInBody() {
$mock = Mock::double('MailPoet\WP\Emoji', [
'decodeEntities' => function($params) {
return $params;
},
]);
$this->queue->decodeEmojisInBody($this->rendered_body);
$mock->verifyInvokedMultipleTimes('decodeEntities', 2);
}
function testItChecksProcessedSubscribersForOldQueues() {
$subscriber_id = 123;
expect($this->queue->isSubscriberProcessed($subscriber_id))->false();
@ -149,7 +128,6 @@ class SendingQueueTest extends \MailPoetTest {
}
function _after() {
Mock::clean();
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
\ORM::raw_execute('TRUNCATE ' . ScheduledTaskSubscriber::$_table);
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);

View File

@ -2,6 +2,7 @@
namespace MailPoet\Test\Newsletter;
use Codeception\Stub\Expected;
use MailPoet\Models\Newsletter;
use MailPoet\Models\NewsletterLink;
use MailPoet\Models\ScheduledTask;
@ -12,6 +13,7 @@ use MailPoet\Newsletter\ViewInBrowser;
use MailPoet\Router\Router;
use MailPoet\Settings\SettingsController;
use MailPoet\Tasks\Sending as SendingTask;
use MailPoet\WP\Emoji;
class ViewInBrowserTest extends \MailPoetTest {
function _before() {
@ -72,7 +74,8 @@ class ViewInBrowserTest extends \MailPoetTest {
'html' => '<p>Newsletter from queue. Hello, [subscriber:firstname | default:reader]. <a href="' . Links::DATA_TAG_CLICK . '-90e56">Unsubscribe</a> or visit <a href="' . Links::DATA_TAG_CLICK . '-i1893">Google</a><img alt="" class="" src="' . Links::DATA_TAG_OPEN . '"></p>',
'text' => 'test',
];
$this->view_in_browser = new ViewInBrowser(false);
$this->emoji = new Emoji();
$this->view_in_browser = new ViewInBrowser($this->emoji, false);
// create newsletter
$newsletter = Newsletter::create();
$newsletter->hydrate($this->newsletter);
@ -115,7 +118,15 @@ class ViewInBrowserTest extends \MailPoetTest {
}
function testItReusesRenderedNewsletterBodyWhenQueueExists() {
$rendered_body = $this->view_in_browser->renderNewsletter(
$emoji = $this->make(
Emoji::class,
['decodeEmojisInBody' => Expected::once(function ($params) {
return $params;
})],
$this
);
$view_in_browser = new ViewInBrowser($emoji, false);
$rendered_body = $view_in_browser->renderNewsletter(
$this->newsletter,
$this->subscriber,
$this->queue,
@ -140,7 +151,7 @@ class ViewInBrowserTest extends \MailPoetTest {
function testItRewritesLinksToRouterEndpointWhenTrackingIsEnabled() {
$settings = new SettingsController();
$settings->set('tracking.enabled', true);
$view_in_browser = new ViewInBrowser(true);
$view_in_browser = new ViewInBrowser($this->emoji, true);
$queue = $this->queue;
$queue->newsletter_rendered_body = $this->queue_rendered_newsletter_with_tracking;
$rendered_body = $view_in_browser->renderNewsletter(

View File

@ -13,6 +13,7 @@ use MailPoet\Router\Endpoints\ViewInBrowser;
use MailPoet\Settings\SettingsController;
use MailPoet\Subscribers\LinkTokens;
use MailPoet\Tasks\Sending as SendingTask;
use MailPoet\WP\Emoji;
use MailPoet\WP\Functions;
class ViewInBrowserTest extends \MailPoetTest {
@ -44,7 +45,7 @@ class ViewInBrowserTest extends \MailPoetTest {
'preview' => false,
];
// instantiate class
$this->view_in_browser = new ViewInBrowser(new AccessControl(new Functions()), new SettingsController(), new LinkTokens());
$this->view_in_browser = new ViewInBrowser(new AccessControl(new Functions()), new SettingsController(), new LinkTokens(), new Emoji());
}
function testItAbortsWhenBrowserPreviewDataIsMissing() {
@ -154,12 +155,12 @@ class ViewInBrowserTest extends \MailPoetTest {
$wp_user = wp_set_current_user(0);
// when WP user does not have 'manage options' permission, false should be returned
$wp_user->remove_role('administrator');
$view_in_browser = new ViewInBrowser(new AccessControl(new Functions()), new SettingsController(), new LinkTokens());
$view_in_browser = new ViewInBrowser(new AccessControl(new Functions()), new SettingsController(), new LinkTokens(), new Emoji());
expect($view_in_browser->_validateBrowserPreviewData($data))->false();
// when WP has 'manage options' permission, data should be returned
$wp_user->add_role('administrator');
$view_in_browser = new ViewInBrowser(new AccessControl(new Functions()), new SettingsController(), new LinkTokens());
$view_in_browser = new ViewInBrowser(new AccessControl(new Functions()), new SettingsController(), new LinkTokens(), new Emoji());
expect($view_in_browser->_validateBrowserPreviewData($data))->equals($data);
}
@ -175,7 +176,7 @@ class ViewInBrowserTest extends \MailPoetTest {
);
$data->preview = true;
wp_set_current_user(1);
$view_in_browser = new ViewInBrowser(new AccessControl(new Functions()), new SettingsController(), new LinkTokens(), new LinkTokens());
$view_in_browser = new ViewInBrowser(new AccessControl(new Functions()), new SettingsController(), new LinkTokens(), new Emoji());
$result = $view_in_browser->_validateBrowserPreviewData($data);
expect($result->subscriber->id)->equals(1);
}
@ -211,6 +212,7 @@ class ViewInBrowserTest extends \MailPoetTest {
'link_tokens' => new LinkTokens,
'_displayNewsletter' => Expected::exactly(1),
'settings' => new SettingsController(),
'emoji' => new Emoji(),
], $this);
$view_in_browser->view($this->browser_preview_data);
}

View File

@ -2,6 +2,7 @@
namespace MailPoet\Test\WP;
use Codeception\Stub\Expected;
use MailPoet\Config\Env;
use MailPoet\WP\Emoji;
@ -15,6 +16,30 @@ class EmojiTest extends \MailPoetTest {
$this->emoji = new Emoji();
}
function testItCanEncodeNewsletterRenderedBody() {
$emoji = $this->make(
Emoji::class,
['encodeForUTF8Column' => Expected::exactly(3, function ($params) {
return $params;
})],
$this
);
$emoji->encodeEmojisInBody(['text' => 'call 1', 'html' => 'call 2']);
$emoji->encodeEmojisInBody('string, call 3');
}
function testItCanDecodeNewsletterBody() {
$emoji = $this->make(
Emoji::class,
['decodeEntities' => Expected::exactly(3, function ($params) {
return $params;
})],
$this
);
$emoji->decodeEmojisInBody(['text' => 'call 1', 'html' => 'call 2']);
$emoji->decodeEmojisInBody('string, call 3');
}
function testItCanEncodeForUTF8Column() {
$table = Env::$db_prefix . 'dummytable_utf8';
$this->createTable($table, 'utf8');