Refactor \MailPoet\Models\Newsletter::getArchives() to Doctrine

[MAILPOET-3629]
This commit is contained in:
Rodrigo Primo
2021-09-09 16:08:52 -03:00
committed by Veljko V
parent 3ca95ed4da
commit 97d177013f
6 changed files with 162 additions and 143 deletions

View File

@@ -204,93 +204,6 @@ class NewsletterTest extends \MailPoetTest {
expect($newsletter->event)->equals($association->value);
}
public function testItGetsArchiveNewslettersForSegments() {
// clear the DB
$this->_after();
$types = [
Newsletter::TYPE_STANDARD,
Newsletter::TYPE_NOTIFICATION_HISTORY,
];
$newsletters = [];
$sendingQueues[] = [];
for ($i = 0; $i < count($types); $i++) {
$newsletters[$i] = Newsletter::createOrUpdate(
[
'subject' => 'My Standard Newsletter',
'preheader' => 'Pre Header',
'type' => $types[$i],
]
);
$sendingQueues[$i] = SendingTask::create();
$sendingQueues[$i]->newsletter_id = $newsletters[$i]->id;
$sendingQueues[$i]->status = SendingQueue::STATUS_COMPLETED;
$sendingQueues[$i]->save();
}
// set segment association for the last newsletter
$newsletterSegment = NewsletterSegment::create();
$newsletterSegment->newsletterId = end($newsletters[1])->id;
$newsletterSegment->segmentId = 123;
$newsletterSegment->save();
expect(Newsletter::findMany())->count(2);
// return archives in segment 123
$results = Newsletter::getArchives([123]);
expect($results)->count(1);
expect($results[0]->id)->equals($newsletters[1]->id);
expect($results[0]->type)->equals(Newsletter::TYPE_NOTIFICATION_HISTORY);
}
public function testItGetsAllArchiveNewsletters() {
// clear the DB
$this->_after();
$types = [
Newsletter::TYPE_STANDARD,
Newsletter::TYPE_STANDARD, // should be returned
Newsletter::TYPE_WELCOME,
Newsletter::TYPE_AUTOMATIC,
Newsletter::TYPE_NOTIFICATION,
Newsletter::TYPE_NOTIFICATION_HISTORY, // should be returned
Newsletter::TYPE_NOTIFICATION_HISTORY,
];
$newsletters = [];
$sendingQueues[] = [];
for ($i = 0; $i < count($types); $i++) {
$newsletters[$i] = Newsletter::createOrUpdate(
[
'subject' => 'My Standard Newsletter',
'preheader' => 'Pre Header',
'type' => $types[$i],
]
);
$sendingQueues[$i] = SendingTask::create();
$sendingQueues[$i]->newsletter_id = $newsletters[$i]->id;
$sendingQueues[$i]->status = SendingQueue::STATUS_COMPLETED;
$sendingQueues[$i]->save();
}
// set the sending queue status of the first newsletter to null
$sendingQueues[0]->status = null;
$sendingQueues[0]->save();
// trash the last newsletter
end($newsletters)->trash();
expect(Newsletter::findMany())->count(7);
// archives return only:
// 1. STANDARD and NOTIFICATION HISTORY newsletters
// 2. active newsletters (i.e., not trashed)
// 3. with sending queue records that are COMPLETED
$results = Newsletter::getArchives();
expect($results)->count(2);
expect($results[0]->id)->equals($newsletters[1]->id);
expect($results[0]->type)->equals(Newsletter::TYPE_STANDARD);
expect($results[1]->id)->equals($newsletters[5]->id);
expect($results[1]->type)->equals(Newsletter::TYPE_NOTIFICATION_HISTORY);
}
public function testItGeneratesHashOnNewsletterSave() {
expect(strlen($this->newsletter->hash))
->equals(Security::HASH_LENGTH);