Trashes/restores multiple associated queues when newsletter is
trashed/restored
This commit is contained in:
@@ -86,10 +86,12 @@ class Newsletter extends Model {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function trash() {
|
function trash() {
|
||||||
// trash queue association
|
// trash queue associations
|
||||||
if($queue = $this->queue()->findOne()) {
|
SendingQueue::rawExecute(
|
||||||
$queue->trash();
|
'UPDATE `' . SendingQueue::$_table . '` ' .
|
||||||
}
|
'SET `deleted_at` = NOW() ' .
|
||||||
|
'WHERE `newsletter_id` = ' . $this->id
|
||||||
|
);
|
||||||
|
|
||||||
return parent::trash();
|
return parent::trash();
|
||||||
}
|
}
|
||||||
@@ -113,9 +115,7 @@ class Newsletter extends Model {
|
|||||||
// delete segment associations
|
// delete segment associations
|
||||||
$this->segmentRelations()->deleteMany();
|
$this->segmentRelations()->deleteMany();
|
||||||
// delete queue association
|
// delete queue association
|
||||||
if($queue = $this->queue()->findOne()) {
|
$this->queue()->deleteMany();
|
||||||
$queue->delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
return parent::delete();
|
return parent::delete();
|
||||||
}
|
}
|
||||||
@@ -137,10 +137,12 @@ class Newsletter extends Model {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function restore() {
|
function restore() {
|
||||||
// restore trashed queue association
|
// trash queue associations
|
||||||
if($queue = $this->queue()->findOne()) {
|
SendingQueue::rawExecute(
|
||||||
$queue->restore();
|
'UPDATE `' . SendingQueue::$_table . '` ' .
|
||||||
}
|
'SET `deleted_at` = null ' .
|
||||||
|
'WHERE `newsletter_id` = ' . $this->id
|
||||||
|
);
|
||||||
|
|
||||||
if($this->status == self::STATUS_SENDING) {
|
if($this->status == self::STATUS_SENDING) {
|
||||||
$this->set('status', self::STATUS_DRAFT);
|
$this->set('status', self::STATUS_DRAFT);
|
||||||
|
@@ -439,29 +439,41 @@ class NewsletterTest extends MailPoetTest {
|
|||||||
expect($newsletter_segments)->isEmpty();
|
expect($newsletter_segments)->isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItTrashesQueueAssociationWhenNewsletterIsTrashed() {
|
function testItTrashesQueueAssociationsWhenNewsletterIsTrashed() {
|
||||||
// make sure relation exists
|
// delete default records
|
||||||
$newsletter = $this->newsletter;
|
$this->_after();
|
||||||
$sending_queue = SendingQueue::where('newsletter_id', $newsletter->id)->findOne();
|
|
||||||
expect($sending_queue->deleted_at)->null();
|
|
||||||
|
|
||||||
// trash newsletter and check that relation is trashed
|
// create multiple sending queues
|
||||||
|
$newsletter = $this->newsletter;
|
||||||
|
for($i = 1; $i <= 5; $i++) {
|
||||||
|
$sending_queue = SendingQueue::create();
|
||||||
|
$sending_queue->newsletter_id = $newsletter->id;
|
||||||
|
$sending_queue->save();
|
||||||
|
}
|
||||||
|
expect(SendingQueue::whereNull('deleted_at')->findArray())->count(5);
|
||||||
|
|
||||||
|
// trash newsletter and check that relations are trashed
|
||||||
$newsletter->trash();
|
$newsletter->trash();
|
||||||
$sending_queue = SendingQueue::where('newsletter_id', $newsletter->id)->findOne();
|
expect(SendingQueue::whereNotNull('deleted_at')->findArray())->count(5);
|
||||||
expect($sending_queue->deleted_at)->notNull();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItRestoresTrashedQueueAssociationWhenNewsletterIsRestored() {
|
function testItRestoresTrashedQueueAssociationsWhenNewsletterIsRestored() {
|
||||||
// trash newsletter and check that relation is trashed
|
// delete default records
|
||||||
$newsletter = $this->newsletter;
|
$this->_after();
|
||||||
$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
|
// create multiple sending queues
|
||||||
|
$newsletter = $this->newsletter;
|
||||||
|
for($i = 1; $i <= 5; $i++) {
|
||||||
|
$sending_queue = SendingQueue::create();
|
||||||
|
$sending_queue->newsletter_id = $newsletter->id;
|
||||||
|
$sending_queue->deleted_at = date('Y-m-d H:i:s');
|
||||||
|
$sending_queue->save();
|
||||||
|
}
|
||||||
|
expect(SendingQueue::whereNotNull('deleted_at')->findArray())->count(5);
|
||||||
|
|
||||||
|
// restore newsletter and check that relations are restored
|
||||||
$newsletter->restore();
|
$newsletter->restore();
|
||||||
$sending_queue = SendingQueue::where('newsletter_id', $newsletter->id)->findOne();
|
expect(SendingQueue::whereNull('deleted_at')->findArray())->count(5);
|
||||||
expect($sending_queue->deleted_at)->null();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItTrashesAllQueueAssociationsWhenNewslettersAreBulkTrashed() {
|
function testItTrashesAllQueueAssociationsWhenNewslettersAreBulkTrashed() {
|
||||||
@@ -480,16 +492,13 @@ class NewsletterTest extends MailPoetTest {
|
|||||||
$sending_queue->newsletter_id = $newsletter->id;
|
$sending_queue->newsletter_id = $newsletter->id;
|
||||||
$sending_queue->save();
|
$sending_queue->save();
|
||||||
}
|
}
|
||||||
expect(Newsletter::findArray())->count(5);
|
expect(Newsletter::whereNull('deleted_at')->findArray())->count(5);
|
||||||
expect(SendingQueue::findArray())->count(5);
|
expect(SendingQueue::whereNull('deleted_at')->findArray())->count(5);
|
||||||
|
|
||||||
// bulk trash newsletters and check that relations are trashed
|
// bulk trash newsletters and check that relations are trashed
|
||||||
Newsletter::bulkTrash(ORM::forTable(Newsletter::$_table));
|
Newsletter::bulkTrash(ORM::forTable(Newsletter::$_table));
|
||||||
$newsletters = Newsletter::findMany();
|
expect(Newsletter::whereNotNull('deleted_at')->findArray())->count(5);
|
||||||
foreach($newsletters as $newsletter) {
|
expect(SendingQueue::whereNotNull('deleted_at')->findArray())->count(5);
|
||||||
expect($newsletter->deleted_at)->notNull();
|
|
||||||
expect($newsletter->queue()->findOne()->deleted_at)->notNull();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItBulkRestoresTrashedQueueAssociationsWhenNewslettersAreBulkRestored() {
|
function testItBulkRestoresTrashedQueueAssociationsWhenNewslettersAreBulkRestored() {
|
||||||
@@ -510,16 +519,14 @@ class NewsletterTest extends MailPoetTest {
|
|||||||
$sending_queue->deleted_at = date('Y-m-d H:i:s');
|
$sending_queue->deleted_at = date('Y-m-d H:i:s');
|
||||||
$sending_queue->save();
|
$sending_queue->save();
|
||||||
}
|
}
|
||||||
expect(Newsletter::findArray())->count(5);
|
expect(Newsletter::whereNotNull('deleted_at')->findArray())->count(5);
|
||||||
expect(SendingQueue::findArray())->count(5);
|
expect(SendingQueue::whereNotNull('deleted_at')->findArray())->count(5);
|
||||||
|
|
||||||
// bulk restore newsletters and check that relations are restored
|
// bulk restore newsletters and check that relations are restored
|
||||||
Newsletter::bulkRestore(ORM::forTable(Newsletter::$_table));
|
Newsletter::bulkRestore(ORM::forTable(Newsletter::$_table));
|
||||||
$newsletters = Newsletter::findMany();
|
expect(Newsletter::whereNull('deleted_at')->findArray())->count(5);
|
||||||
foreach($newsletters as $newsletter) {
|
expect(SendingQueue::whereNull('deleted_at')->findArray())->count(5);
|
||||||
expect($newsletter->deleted_at)->null();
|
|
||||||
expect($newsletter->queue()->findOne()->deleted_at)->null();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItBulkDeletesSegmentAndQueueAssociationsWhenNewslettersAreBulkDeleted() {
|
function testItBulkDeletesSegmentAndQueueAssociationsWhenNewslettersAreBulkDeleted() {
|
||||||
|
Reference in New Issue
Block a user