- Updates unit tests
This commit is contained in:
@ -2,10 +2,14 @@
|
|||||||
use \MailPoet\API\Response as APIResponse;
|
use \MailPoet\API\Response as APIResponse;
|
||||||
use \MailPoet\API\Error as APIError;
|
use \MailPoet\API\Error as APIError;
|
||||||
use \MailPoet\API\Endpoints\Newsletters;
|
use \MailPoet\API\Endpoints\Newsletters;
|
||||||
|
use MailPoet\Config\Populator;
|
||||||
use \MailPoet\Models\Newsletter;
|
use \MailPoet\Models\Newsletter;
|
||||||
|
use MailPoet\Models\NewsletterOption;
|
||||||
|
use MailPoet\Models\NewsletterOptionField;
|
||||||
use \MailPoet\Models\NewsletterSegment;
|
use \MailPoet\Models\NewsletterSegment;
|
||||||
use \MailPoet\Models\NewsletterTemplate;
|
use \MailPoet\Models\NewsletterTemplate;
|
||||||
use \MailPoet\Models\Segment;
|
use \MailPoet\Models\Segment;
|
||||||
|
use MailPoet\Newsletter\Scheduler\Scheduler;
|
||||||
|
|
||||||
class NewslettersTest extends MailPoetTest {
|
class NewslettersTest extends MailPoetTest {
|
||||||
function _before() {
|
function _before() {
|
||||||
@ -44,17 +48,26 @@ class NewslettersTest extends MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function testItCanSaveANewNewsletter() {
|
function testItCanSaveANewNewsletter() {
|
||||||
|
$newsletter_option_field = NewsletterOptionField::create();
|
||||||
|
$newsletter_option_field->name = 'some_option';
|
||||||
|
$newsletter_option_field->newsletter_type = Newsletter::TYPE_STANDARD;
|
||||||
|
$newsletter_option_field->save();
|
||||||
|
|
||||||
$valid_data = array(
|
$valid_data = array(
|
||||||
'subject' => 'My First Newsletter',
|
'subject' => 'My First Newsletter',
|
||||||
'type' => Newsletter::TYPE_STANDARD
|
'type' => Newsletter::TYPE_STANDARD,
|
||||||
|
'options' => array(
|
||||||
|
$newsletter_option_field->name => 'some_option_value',
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
$router = new Newsletters();
|
$router = new Newsletters();
|
||||||
$response = $router->save($valid_data);
|
$response = $router->save($valid_data);
|
||||||
|
$saved_newsletter = Newsletter::filter('filterWithOptions')->findOne($response->data['id']);
|
||||||
expect($response->status)->equals(APIResponse::STATUS_OK);
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
expect($response->data)->equals(
|
expect($response->data)->equals($saved_newsletter->asArray());
|
||||||
Newsletter::findOne($response->data['id'])->asArray()
|
// newsletter option should be saved
|
||||||
);
|
expect($saved_newsletter->some_option)->equals('some_option_value');
|
||||||
|
|
||||||
$invalid_data = array(
|
$invalid_data = array(
|
||||||
'subject' => 'Missing newsletter type'
|
'subject' => 'Missing newsletter type'
|
||||||
@ -73,15 +86,56 @@ class NewslettersTest extends MailPoetTest {
|
|||||||
);
|
);
|
||||||
|
|
||||||
$response = $router->save($newsletter_data);
|
$response = $router->save($newsletter_data);
|
||||||
expect($response->status)->equals(APIResponse::STATUS_OK);
|
|
||||||
expect($response->data)->equals(
|
|
||||||
Newsletter::findOne($this->newsletter->id)->asArray()
|
|
||||||
);
|
|
||||||
|
|
||||||
$updated_newsletter = Newsletter::findOne($this->newsletter->id);
|
$updated_newsletter = Newsletter::findOne($this->newsletter->id);
|
||||||
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
|
expect($response->data)->equals($updated_newsletter->asArray());
|
||||||
expect($updated_newsletter->subject)->equals('My Updated Newsletter');
|
expect($updated_newsletter->subject)->equals('My Updated Newsletter');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testItCanUpdatePostNotificationScheduleUponSave() {
|
||||||
|
$newsletter_options = array(
|
||||||
|
'intervalType',
|
||||||
|
'timeOfDay',
|
||||||
|
'weekDay',
|
||||||
|
'monthDay',
|
||||||
|
'nthWeekDay',
|
||||||
|
'schedule'
|
||||||
|
);
|
||||||
|
foreach($newsletter_options as $option) {
|
||||||
|
$newsletter_option_field = NewsletterOptionField::create();
|
||||||
|
$newsletter_option_field->name = $option;
|
||||||
|
$newsletter_option_field->newsletter_type = Newsletter::TYPE_NOTIFICATION;
|
||||||
|
$newsletter_option_field->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
$router = new Newsletters();
|
||||||
|
$newsletter_data = array(
|
||||||
|
'id' => $this->newsletter->id,
|
||||||
|
'type' => Newsletter::TYPE_NOTIFICATION,
|
||||||
|
'subject' => 'Newsletter',
|
||||||
|
'options' => array(
|
||||||
|
'intervalType' => Scheduler::INTERVAL_WEEKLY,
|
||||||
|
'timeOfDay' => '50400',
|
||||||
|
'weekDay' => '1',
|
||||||
|
'monthDay' => '0',
|
||||||
|
'nthWeekDay' => '1',
|
||||||
|
'schedule' => '0 14 * * 1'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$response = $router->save($newsletter_data);
|
||||||
|
$saved_newsletter = Newsletter::filter('filterWithOptions')
|
||||||
|
->findOne($response->data['id']);
|
||||||
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
|
expect($response->data)->equals($saved_newsletter->asArray());
|
||||||
|
|
||||||
|
// schedule should be recalculated when options change
|
||||||
|
$newsletter_data['options']['intervalType'] = Scheduler::INTERVAL_IMMEDIATELY;
|
||||||
|
$response = $router->save($newsletter_data);
|
||||||
|
$saved_newsletter = Newsletter::filter('filterWithOptions')->findOne($response->data['id']);
|
||||||
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
|
expect($saved_newsletter->schedule)->equals('* * * * *');
|
||||||
|
}
|
||||||
|
|
||||||
function testItCanModifySegmentsOfExistingNewsletter() {
|
function testItCanModifySegmentsOfExistingNewsletter() {
|
||||||
$segment_1 = Segment::createOrUpdate(array('name' => 'Segment 1'));
|
$segment_1 = Segment::createOrUpdate(array('name' => 'Segment 1'));
|
||||||
$fake_segment_id = 1;
|
$fake_segment_id = 1;
|
||||||
@ -398,6 +452,7 @@ class NewslettersTest extends MailPoetTest {
|
|||||||
function _after() {
|
function _after() {
|
||||||
Newsletter::deleteMany();
|
Newsletter::deleteMany();
|
||||||
NewsletterSegment::deleteMany();
|
NewsletterSegment::deleteMany();
|
||||||
|
NewsletterOptionField::deleteMany();
|
||||||
Segment::deleteMany();
|
Segment::deleteMany();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,6 +76,7 @@ class NewsletterTaskTest extends MailPoetTest {
|
|||||||
|
|
||||||
function testReturnsFalseWhenNewsletterIsANotificationWithoutPosts() {
|
function testReturnsFalseWhenNewsletterIsANotificationWithoutPosts() {
|
||||||
$newsletter = $this->newsletter;
|
$newsletter = $this->newsletter;
|
||||||
|
|
||||||
$newsletter->type = Newsletter::TYPE_NOTIFICATION_HISTORY;
|
$newsletter->type = Newsletter::TYPE_NOTIFICATION_HISTORY;
|
||||||
// replace post id data tag with something else
|
// replace post id data tag with something else
|
||||||
$newsletter->body = str_replace('data-post-id', 'id', $newsletter->body);
|
$newsletter->body = str_replace('data-post-id', 'id', $newsletter->body);
|
||||||
@ -92,17 +93,27 @@ class NewsletterTaskTest extends MailPoetTest {
|
|||||||
expect($newsletter_post->post_id)->equals('10');
|
expect($newsletter_post->post_id)->equals('10');
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItUpdatesStatusToSentOnlyForStandardNewsletters() {
|
function testItUpdatesStatusToSentOnlyForStandardAndPostNotificationNewsletters() {
|
||||||
// newsletter type is 'standard'
|
|
||||||
$newsletter = $this->newsletter;
|
$newsletter = $this->newsletter;
|
||||||
expect($newsletter->type)->equals(Newsletter::TYPE_STANDARD);
|
|
||||||
expect($newsletter->status)->notEquals(Newsletter::STATUS_SENT);
|
// newsletter type is 'standard'
|
||||||
|
$newsletter->type = Newsletter::TYPE_STANDARD;
|
||||||
|
$newsletter->status = 'not_sent';
|
||||||
|
$newsletter->save();
|
||||||
$this->newsletter_task->markNewsletterAsSent($newsletter);
|
$this->newsletter_task->markNewsletterAsSent($newsletter);
|
||||||
$updated_newsletter = Newsletter::findOne($newsletter->id);
|
$updated_newsletter = Newsletter::findOne($newsletter->id);
|
||||||
expect($updated_newsletter->status)->equals(Newsletter::STATUS_SENT);
|
expect($updated_newsletter->status)->equals(Newsletter::STATUS_SENT);
|
||||||
|
|
||||||
// newsletter type is NOT 'standard'
|
// newsletter type is 'notification history'
|
||||||
$newsletter->type = Newsletter::TYPE_NOTIFICATION;
|
$newsletter->type = Newsletter::TYPE_NOTIFICATION_HISTORY;
|
||||||
|
$newsletter->status = 'not_sent';
|
||||||
|
$newsletter->save();
|
||||||
|
$this->newsletter_task->markNewsletterAsSent($newsletter);
|
||||||
|
$updated_newsletter = Newsletter::findOne($newsletter->id);
|
||||||
|
expect($updated_newsletter->status)->equals(Newsletter::STATUS_SENT);
|
||||||
|
|
||||||
|
// all other newsletter types
|
||||||
|
$newsletter->type = Newsletter::TYPE_WELCOME;
|
||||||
$newsletter->status = 'not_sent';
|
$newsletter->status = 'not_sent';
|
||||||
$newsletter->save();
|
$newsletter->save();
|
||||||
$this->newsletter_task->markNewsletterAsSent($newsletter);
|
$this->newsletter_task->markNewsletterAsSent($newsletter);
|
||||||
|
Reference in New Issue
Block a user