- Updates unit tests

This commit is contained in:
Vlad
2016-10-21 11:19:09 -04:00
parent 8330bfc884
commit d08d5a3b6c
2 changed files with 81 additions and 15 deletions

View File

@ -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();
} }
} }

View File

@ -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);