From e578b0a4eaf856f814a172e8e34af45cb70a6de0 Mon Sep 17 00:00:00 2001 From: Vlad Date: Sun, 29 Apr 2018 21:24:49 -0400 Subject: [PATCH] Decodes meta option field if it exists on the object --- lib/Models/Newsletter.php | 6 ++++ tests/unit/Models/NewsletterTest.php | 42 ++++++++++++++++++++++++---- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/lib/Models/Newsletter.php b/lib/Models/Newsletter.php index 697cdcd3b6..e80c685d15 100644 --- a/lib/Models/Newsletter.php +++ b/lib/Models/Newsletter.php @@ -975,4 +975,10 @@ class Newsletter extends Model { return parent::where('hash', $hash) ->findOne(); } + + function getMeta() { + if(!$this->meta) return; + + return (Helpers::isJson($this->meta)) ? json_decode($this->meta, true) : $this->meta; + } } diff --git a/tests/unit/Models/NewsletterTest.php b/tests/unit/Models/NewsletterTest.php index df93bb3cb8..ed89f5c928 100644 --- a/tests/unit/Models/NewsletterTest.php +++ b/tests/unit/Models/NewsletterTest.php @@ -1,7 +1,6 @@ id)->equals($newsletter_2->id); } - function testPauseTaskWhenDisablePostNotification() { + function testItGetsAndDecodesNewsletterOptionMetaField() { + $newsletter = Newsletter::createOrUpdate( + array( + 'subject' => 'Test Option Meta Field', + 'preheader' => 'Pre Header', + 'type' => Newsletter::TYPE_AUTOMATIC + ) + ); + $newsletter_option_field = NewsletterOptionField::create(); + $newsletter_option_field->hydrate( + array( + 'newsletter_type' => Newsletter::TYPE_AUTOMATIC, + 'name' => 'meta' + ) + ); + $newsletter_option_field->save(); + $newsletter_option = NewsletterOption::create(); + $meta = array('some' => 'value'); + $newsletter_option->hydrate( + array( + 'newsletter_id' => $newsletter->id, + 'option_field_id' => $newsletter_option_field->id, + 'value' => json_encode($meta) + ) + ); + $newsletter_option->save(); + + // by default meta option does not exist on newsletter object + expect($newsletter->getMeta())->isEmpty(); + + // if meta option exists, it should be returned as an array + $newsletter = Newsletter::filter('filterWithOptions')->findOne($newsletter->id); + expect($newsletter->getMeta())->equals($meta); + } + + function testPausesTaskWhenPostNotificationIsDisabled() { $newsletter = Newsletter::createOrUpdate(array( 'type' => Newsletter::TYPE_NOTIFICATION )); @@ -854,7 +888,7 @@ class NewsletterTest extends \MailPoetTest { expect($task_found->status)->equals(ScheduledTask::STATUS_PAUSED); } - function testUnPauseTaskWhenEnablePostNotification() { + function testUnpausesTasksWhenPostNotificationIsEnabled() { $newsletter = Newsletter::createOrUpdate(array( 'type' => Newsletter::TYPE_NOTIFICATION )); @@ -870,8 +904,6 @@ class NewsletterTest extends \MailPoetTest { $task_found = ScheduledTask::findOne($task->id()); expect($task_found->status)->equals(ScheduledTask::STATUS_SCHEDULED); } - - function _after() { \ORM::raw_execute('TRUNCATE ' . NewsletterOption::$_table); \ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);