diff --git a/lib/Models/Newsletter.php b/lib/Models/Newsletter.php index 9264359439..f317bb4e44 100644 --- a/lib/Models/Newsletter.php +++ b/lib/Models/Newsletter.php @@ -727,6 +727,9 @@ class Newsletter extends Model { } function restore() { + // restore trashed queue association + $this->queue()->findOne()->restore(); + if($this->status == self::STATUS_SENDING) { $this->set('status', self::STATUS_DRAFT); $this->save(); diff --git a/tests/unit/Models/NewsletterTest.php b/tests/unit/Models/NewsletterTest.php index 604bdbedd4..039b0ae6a5 100644 --- a/tests/unit/Models/NewsletterTest.php +++ b/tests/unit/Models/NewsletterTest.php @@ -451,6 +451,19 @@ class NewsletterTest extends MailPoetTest { expect($sending_queue->deleted_at)->notNull(); } + function testItRestoresTrashedQueueAssociationWhenNewsletterIsRestored() { + // trash newsletter and check that relation is trashed + $newsletter = $this->newsletter; + $newsletter->trash(); + $sending_queue = SendingQueue::where('newsletter_id', $newsletter->id)->findOne(); + expect($sending_queue->deleted_at)->notNull(); + + // restore newsletter and check that relation is restores + $newsletter->restore(); + $sending_queue = SendingQueue::where('newsletter_id', $newsletter->id)->findOne(); + expect($sending_queue->deleted_at)->null(); + } + function _after() { ORM::raw_execute('TRUNCATE ' . NewsletterOption::$_table); ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);