From cdc87c23eadee7b6ec5d7d72b9fb18a05d1744c2 Mon Sep 17 00:00:00 2001 From: Vlad Date: Sat, 15 Jul 2017 13:00:25 -0400 Subject: [PATCH] Resets sent at data when duplicating a sent newsletter --- lib/Models/Newsletter.php | 3 +++ tests/unit/Models/NewsletterTest.php | 31 +++++++++++++++++++++------- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/lib/Models/Newsletter.php b/lib/Models/Newsletter.php index c7d8b30cda..12345657b9 100644 --- a/lib/Models/Newsletter.php +++ b/lib/Models/Newsletter.php @@ -280,6 +280,9 @@ class Newsletter extends Model { // reset hash $duplicate->set('hash', null); + // reset sent at date + $duplicate->set('sent_at', null); + $duplicate->save(); if($duplicate->getErrors() === false) { diff --git a/tests/unit/Models/NewsletterTest.php b/tests/unit/Models/NewsletterTest.php index 22868de56b..bad0031cc2 100644 --- a/tests/unit/Models/NewsletterTest.php +++ b/tests/unit/Models/NewsletterTest.php @@ -375,13 +375,6 @@ class NewsletterTest extends MailPoetTest { ->equals(Security::HASH_LENGTH); } - function testItRegeneratesHashOnNewsletterDuplication() { - $duplicate_newsletter = $this->newsletter->duplicate(); - expect($duplicate_newsletter->hash)->notEquals($this->newsletter->hash); - expect(strlen($duplicate_newsletter->hash)) - ->equals(Security::HASH_LENGTH); - } - function testItRegeneratesHashOnNotificationHistoryCreation() { $notification_history = $this->newsletter->createNotificationHistory(); expect($notification_history->hash)->notEquals($this->newsletter->hash); @@ -745,6 +738,30 @@ class NewsletterTest extends MailPoetTest { expect(NewsletterSegment::findArray())->count(0); } + function testDuplicatesNewsletter() { + $original_newsletter = $this->newsletter; + $original_newsletter->status = Newsletter::STATUS_SENT; + $original_newsletter->sent_at = $original_newsletter->deleted_at = $original_newsletter->created_at = $original_newsletter->updated_at = date( '2000-m-d H:i:s'); + $original_newsletter->save(); + $data = array('subject' => 'duplicate newsletter'); + $duplicate_newsletter = $this->newsletter->duplicate($data); + $duplicate_newsletter = Newsletter::findOne($duplicate_newsletter->id); + // hash is different + expect($duplicate_newsletter->hash)->notEquals($this->newsletter->hash); + expect(strlen($duplicate_newsletter->hash))->equals(Security::HASH_LENGTH); + // status is set to draft + expect($duplicate_newsletter->status)->equals(Newsletter::STATUS_DRAFT); + // sent at/delete at dates are null + expect($duplicate_newsletter->sent_at)->null(); + expect($duplicate_newsletter->deleted_at)->null(); + // created at/updated at dates are different + expect($duplicate_newsletter->created_at)->notEquals($original_newsletter->created_at); + expect($duplicate_newsletter->updated_at)->notEquals($original_newsletter->updated_at); + // body and subject are the same + expect($duplicate_newsletter->body)->equals($original_newsletter->body); + expect($duplicate_newsletter->subject)->equals($data['subject']); + } + function _after() { ORM::raw_execute('TRUNCATE ' . NewsletterOption::$_table); ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);