From 0deb4847c74b00f3fd9b2bdae2def3f43d4551ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julio=20Cesar=20Laura=20Avenda=C3=B1o?= Date: Tue, 5 Jan 2021 18:59:16 +0000 Subject: [PATCH] PMCORE-2644 --- .../ProcessMaker/TaskScheduler/TaskTest.php | 29 +++++++++++++++++++ workflow/engine/bin/cron_single.php | 7 ++--- .../src/ProcessMaker/TaskScheduler/Task.php | 17 +++++++++++ 3 files changed, 48 insertions(+), 5 deletions(-) diff --git a/tests/unit/workflow/engine/src/ProcessMaker/TaskScheduler/TaskTest.php b/tests/unit/workflow/engine/src/ProcessMaker/TaskScheduler/TaskTest.php index 46ca031eb..4c3dc0355 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/TaskScheduler/TaskTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/TaskScheduler/TaskTest.php @@ -557,4 +557,33 @@ class TaskTest extends TestCase Queue::assertPushed(TaskScheduler::class); } } + + /** + * Tests the webEntriesCron method with jobs in the task scheduler + * + * @test + * @covers ProcessMaker\TaskScheduler\Task::runTask() + * @covers ProcessMaker\TaskScheduler\Task::webEntriesCron() + * @dataProvider asynchronousCases + */ + public function it_should_test_webEntriesCron_method($asynchronous) + { + $task = new Task($asynchronous, ''); + + //assert synchronous for cron file + if ($asynchronous === false) { + ob_start(); + $task->webEntriesCron(); + $printing = ob_get_clean(); + $this->assertEmpty($printing); + } + + //assert asynchronous for job process + if ($asynchronous === true) { + Queue::fake(); + Queue::assertNothingPushed(); + $task->webEntriesCron(); + Queue::assertPushed(TaskScheduler::class); + } + } } diff --git a/workflow/engine/bin/cron_single.php b/workflow/engine/bin/cron_single.php index 1459215b4..25e2f1169 100644 --- a/workflow/engine/bin/cron_single.php +++ b/workflow/engine/bin/cron_single.php @@ -14,13 +14,11 @@ */ use Illuminate\Foundation\Http\Kernel; -use ProcessMaker\BusinessModel\Cases; require_once __DIR__ . '/../../../gulliver/system/class.g.php'; require_once __DIR__ . '/../../../bootstrap/autoload.php'; require_once __DIR__ . '/../../../bootstrap/app.php'; -use ProcessMaker\BusinessModel\WebEntry; use ProcessMaker\Core\JobsManager; use ProcessMaker\Core\System; use ProcessMaker\Plugins\PluginRegistry; @@ -349,9 +347,8 @@ try { } break; case 'webentriescron': - setExecutionMessage('Deleting web entry cases created one week ago or more'); - WebEntry::deleteOldWebEntries(); - setExecutionResultMessage('FINISHED'); + $task = new Task($asynchronous, $sObject); + $task->webEntriesCron(); break; /*----------------------------------********---------------------------------*/ case 'actionsByEmailEmailResponse': diff --git a/workflow/engine/src/ProcessMaker/TaskScheduler/Task.php b/workflow/engine/src/ProcessMaker/TaskScheduler/Task.php index 5a52a014f..9de092fe1 100644 --- a/workflow/engine/src/ProcessMaker/TaskScheduler/Task.php +++ b/workflow/engine/src/ProcessMaker/TaskScheduler/Task.php @@ -23,6 +23,7 @@ use ProcessMaker\BusinessModel\Light\PushMessageAndroid; use ProcessMaker\BusinessModel\Light\PushMessageIOS; use ProcessMaker\BusinessModel\MessageApplication; use ProcessMaker\BusinessModel\TimerEvent; +use ProcessMaker\BusinessModel\WebEntry; use ProcessMaker\Core\JobsManager; use ProcessMaker\Plugins\PluginRegistry; use Propel; @@ -684,4 +685,20 @@ class Task }; $this->runTask($job); } + + /** + * Deleting web entry cases created one week ago or more + */ + public function webEntriesCron() + { + $scheduledTaskIdentifier = uniqid(__FUNCTION__ . "#"); + Log::channel('taskScheduler:taskScheduler')->info("Start {$scheduledTaskIdentifier}", Bootstrap::context()); + + $job = function() use ($scheduledTaskIdentifier) { + WebEntry::deleteOldWebEntries(); + + Log::channel('taskScheduler:taskScheduler')->info("Finish {$scheduledTaskIdentifier}", Bootstrap::context()); + }; + $this->runTask($job); + } }