Delete tasks without queues when fetching sending tasks
[MAILPOET-3379]
This commit is contained in:
@ -2,6 +2,7 @@
|
||||
|
||||
namespace MailPoet\Tasks;
|
||||
|
||||
use MailPoet\Logging\LoggerFactory;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\ScheduledTaskSubscriber;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
@ -97,11 +98,22 @@ class Sending {
|
||||
foreach ($tasks as $task) {
|
||||
if (!empty($queuesIndex[$task->id])) {
|
||||
$result[] = self::create($task, $queuesIndex[$task->id]);
|
||||
} else {
|
||||
static::handleInvalidTask($task);
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
public static function handleInvalidTask(ScheduledTask $task) {
|
||||
$loggerFactory = LoggerFactory::getInstance();
|
||||
$loggerFactory->getLogger(LoggerFactory::TOPIC_NEWSLETTERS)->addError(
|
||||
'invalid sending task found, deleting',
|
||||
['task_id' => $task->id]
|
||||
);
|
||||
$task->delete();
|
||||
}
|
||||
|
||||
public static function createFromScheduledTask(ScheduledTask $task) {
|
||||
$queue = SendingQueue::where('task_id', $task->id)->findOne();
|
||||
if (!$queue) {
|
||||
|
@ -58,6 +58,13 @@ class SendingTest extends \MailPoetTest {
|
||||
expect($queue->taskId)->equals($this->task->id);
|
||||
}
|
||||
|
||||
public function testItDeletesInvalidTasksWhenCreatingManyFromTasks() {
|
||||
$this->queue->delete();
|
||||
$sendings = SendingTask::createManyFromTasks([$this->task]);
|
||||
expect($sendings)->isEmpty();
|
||||
expect(ScheduledTask::findOne($this->task->id))->equals(false);
|
||||
}
|
||||
|
||||
public function testItCanBeCreatedFromScheduledTask() {
|
||||
$sending = SendingTask::createFromScheduledTask($this->task);
|
||||
$queue = $sending->queue();
|
||||
|
Reference in New Issue
Block a user