Fix checking if post notification email contains any ALC posts

[MAILPOET-2029]
This commit is contained in:
Ján Mikláš
2019-05-14 16:17:01 +02:00
committed by M. Shull
parent c6c9442588
commit 9f21ff1285
3 changed files with 14 additions and 4 deletions

View File

@@ -97,10 +97,9 @@ class Newsletter {
$newsletter $newsletter
); );
} }
// check if this is a post notification and if it contains posts // check if this is a post notification and if it contains at least 1 ALC post
$newsletter_contains_posts = strpos($rendered_newsletter['html'], 'data-post-id');
if ($newsletter->type === NewsletterModel::TYPE_NOTIFICATION_HISTORY && if ($newsletter->type === NewsletterModel::TYPE_NOTIFICATION_HISTORY &&
!$newsletter_contains_posts $this->posts_task->getAlcPostsCount($rendered_newsletter, $newsletter) === 0
) { ) {
// delete notification history record since it will never be sent // delete notification history record since it will never be sent
$newsletter->delete(); $newsletter->delete();

View File

@@ -28,4 +28,10 @@ class Posts {
} }
return true; return true;
} }
function getAlcPostsCount($rendered_newsletter, \MailPoet\Models\Newsletter $newsletter) {
$template_posts_count = substr_count($newsletter->body, 'data-post-id');
$newsletter_posts_count = substr_count($rendered_newsletter['html'], 'data-post-id');
return $newsletter_posts_count - $template_posts_count;
}
} }

View File

@@ -6,6 +6,7 @@ use AspectMock\Test as Mock;
use Codeception\Util\Fixtures; use Codeception\Util\Fixtures;
use Helper\WordPressHooks as WPHooksHelper; use Helper\WordPressHooks as WPHooksHelper;
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask; use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
use MailPoet\Cron\Workers\SendingQueue\Tasks\Posts as PostsTask;
use MailPoet\Mailer\MailerLog; use MailPoet\Mailer\MailerLog;
use MailPoet\Models\Newsletter; use MailPoet\Models\Newsletter;
use MailPoet\Models\NewsletterLink; use MailPoet\Models\NewsletterLink;
@@ -192,7 +193,11 @@ class NewsletterTest extends \MailPoetTest {
function testItSavesNewsletterPosts() { function testItSavesNewsletterPosts() {
$this->newsletter->type = Newsletter::TYPE_NOTIFICATION_HISTORY; $this->newsletter->type = Newsletter::TYPE_NOTIFICATION_HISTORY;
$this->newsletter->parent_id = $this->newsletter->id; $this->newsletter->parent_id = $this->newsletter->id;
$result = $this->newsletter_task->preProcessNewsletter($this->newsletter, $this->queue); $posts_task = $this->make(PostsTask::class, [
'getAlcPostsCount' => 1
]);
$newsletter_task = new NewsletterTask(new WPFunctions, $posts_task);
$result = $newsletter_task->preProcessNewsletter($this->newsletter, $this->queue);
$newsletter_post = NewsletterPost::where('newsletter_id', $this->newsletter->id) $newsletter_post = NewsletterPost::where('newsletter_id', $this->newsletter->id)
->findOne(); ->findOne();
expect($result)->notEquals(false); expect($result)->notEquals(false);