diff --git a/assets/js/src/newsletters/listings/notification.jsx b/assets/js/src/newsletters/listings/notification.jsx
index 3b7bc6fd10..9cee916e24 100644
--- a/assets/js/src/newsletters/listings/notification.jsx
+++ b/assets/js/src/newsletters/listings/notification.jsx
@@ -288,6 +288,7 @@ const NewsletterListNotification = createReactClass({ // eslint-disable-line rea
}
return (
{ MailPoet.I18n.t('viewHistory') }
);
diff --git a/assets/js/src/newsletters/listings/tabs.jsx b/assets/js/src/newsletters/listings/tabs.jsx
index 4a727e92e2..ce04efed45 100644
--- a/assets/js/src/newsletters/listings/tabs.jsx
+++ b/assets/js/src/newsletters/listings/tabs.jsx
@@ -38,6 +38,7 @@ class ListingTabs extends React.Component {
MailPoet.trackEvent(`Tab Emails > ${tab.name} clicked`,
{ 'MailPoet Free version': window.mailpoet_version }
diff --git a/tests/DataFactories/Newsletter.php b/tests/DataFactories/Newsletter.php
index 6c57ca3df8..1fb44301cd 100644
--- a/tests/DataFactories/Newsletter.php
+++ b/tests/DataFactories/Newsletter.php
@@ -2,6 +2,7 @@
namespace MailPoet\Test\DataFactories;
use Carbon\Carbon;
+use MailPoet\Models\NewsletterSegment;
class Newsletter {
@@ -11,6 +12,9 @@ class Newsletter {
/** @var array */
private $options;
+ /** @var array */
+ private $segments;
+
public function __construct() {
$this->data = [
'subject' => 'Some subject',
@@ -19,6 +23,7 @@ class Newsletter {
'status' => 'draft',
];
$this->options = [];
+ $this->segments = [];
$this->loadBodyFrom('newsletterWithALC.json');
}
@@ -38,6 +43,23 @@ class Newsletter {
return $this;
}
+ public function withActiveStatus() {
+ $this->data['status'] = 'active';
+ return $this;
+ }
+
+ public function withImmediateSendingSettings() {
+ $this->withOptions([
+ 8 => 'immediately', # intervalType
+ 9 => '0', # timeOfDay
+ 10 => '1', # intervalType
+ 11 => '0', # monthDay
+ 12 => '1', # nthWeekDay
+ 13 => '* * * * *', # schedule
+ ]);
+ return $this;
+ }
+
/**
* @return Newsletter
*/
@@ -87,6 +109,17 @@ class Newsletter {
return $this;
}
+ /**
+ * @param \MailPoet\Models\Segment[] $segments
+ * @return Newsletter
+ */
+ public function withSegments(array $segments) {
+ foreach($segments as $segment) {
+ $this->segments[] = $segment->id();
+ }
+ return $this;
+ }
+
/**
* @return \MailPoet\Models\Newsletter
*/
@@ -101,6 +134,12 @@ class Newsletter {
]
);
}
+ foreach($this->segments as $segment_id) {
+ NewsletterSegment::createOrUpdate([
+ 'newsletter_id' => $newsletter->id,
+ 'segment_id' => $segment_id,
+ ]);
+ }
return $newsletter;
}
}
diff --git a/tests/acceptance/ReceivePostNotificationCest.php b/tests/acceptance/ReceivePostNotificationCest.php
new file mode 100644
index 0000000000..a444788dc8
--- /dev/null
+++ b/tests/acceptance/ReceivePostNotificationCest.php
@@ -0,0 +1,72 @@
+wantTo('Receive a post notification email');
+ $newsletter_subject = 'Post Notification Receive Test';
+ $post_title = 'A post ' . \MailPoet\Util\Security::generateRandomString();
+
+ $segment_factory = new Segment();
+ $segment = $segment_factory->withName('Receive Post Notification List')->create();
+
+ $subscriber_factory = new Subscriber();
+ $subscriber_factory->withSegments([$segment])->create();
+
+ $newsletterFactory = new Newsletter();
+ $newsletter = $newsletterFactory->withSubject($newsletter_subject)
+ ->withPostNotificationsType()
+ ->withActiveStatus()
+ ->withImmediateSendingSettings()
+ ->withSegments([$segment])
+ ->create();
+ $I->wait(1); //waiting 1 second so that post created time is after the newsletter
+
+ $I->cli(sprintf("post create --post_title='%s' --post_content='Lorem Ipsum' --post_status='publish' --allow-root", $post_title));
+
+ $I->login();
+
+ // scheduler will create a task and schedule run in the next whole minute, that can break the test
+ // I move the task to the past
+ // this workaround is not ideal, but we cannot wait another minute for the task to execute :(
+ ScheduledTask::rawExecute(
+ 'UPDATE `' . ScheduledTask::$_table . '` t '
+ . ' JOIN `' . SendingQueue::$_table . '` q ON t.`id` = q.`task_id` '
+ . ' SET t.scheduled_at="2016-01-01 01:02:03", t.updated_at="2016-01-01 01:02:03" '
+ . ' WHERE q.newsletter_id=' . $newsletter->id()
+ );
+
+ // confirm newsletter has been sent
+ $I->amOnMailpoetPage('Emails');
+ $I->click('[data-automation-id="tab-Post Notifications"]');
+ $I->waitForText($newsletter_subject, 90);
+
+ $I->waitForText('View history', 90);
+ $selector = sprintf('[data-automation-id="history-%d"]', $newsletter->id());
+ $I->click($selector);
+ $I->waitForText('Sent to 1 of 1', 90);
+
+ // confirm newsletter is received
+ $I->amOnUrl('http://mailhog:8025');
+ $I->waitForText($newsletter_subject, 90);
+ $I->click(Locator::contains('span.subject', $newsletter_subject));
+ $I->switchToIframe('preview-html');
+ $I->waitForText($post_title, 90);
+ }
+
+}