diff --git a/tests/unit/workflow/engine/src/ProcessMaker/TaskScheduler/TaskTest.php b/tests/unit/workflow/engine/src/ProcessMaker/TaskScheduler/TaskTest.php index 167253a70..fde1c720b 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/TaskScheduler/TaskTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/TaskScheduler/TaskTest.php @@ -424,4 +424,32 @@ class TaskTest extends TestCase Queue::assertPushed(TaskScheduler::class); } } + + /** + * This test verify the actionsByEmailResponse activity method for synchronous and asynchronous execution. + * @test + * @covers ProcessMaker\TaskScheduler\Task::runTask() + * @covers ProcessMaker\TaskScheduler\Task::actionsByEmailResponse() + * @dataProvider asynchronousCases + */ + public function it_should_test_actionsByEmailResponse_method($asynchronous) + { + $task = new Task($asynchronous, ''); + + //assert synchronous for cron file + if ($asynchronous === false) { + ob_start(); + $task->actionsByEmailResponse(); + $printing = ob_get_clean(); + $this->assertEmpty($printing); + } + + //assert asynchronous for job process + if ($asynchronous === true) { + Queue::fake(); + Queue::assertNothingPushed(); + $task->actionsByEmailResponse(); + Queue::assertPushed(TaskScheduler::class); + } + } } diff --git a/workflow/engine/bin/cron_single.php b/workflow/engine/bin/cron_single.php index 9fd7c056d..1683c9884 100644 --- a/workflow/engine/bin/cron_single.php +++ b/workflow/engine/bin/cron_single.php @@ -13,9 +13,6 @@ */ use Illuminate\Foundation\Http\Kernel; -/*----------------------------------********---------------------------------*/ -use ProcessMaker\BusinessModel\ActionsByEmail\ResponseReader; -/*----------------------------------********---------------------------------*/ use ProcessMaker\BusinessModel\Cases; require_once __DIR__ . '/../../../gulliver/system/class.g.php'; @@ -351,7 +348,8 @@ try { break; /*----------------------------------********---------------------------------*/ case 'actionsByEmailEmailResponse': - (new ResponseReader)->actionsByEmailEmailResponse(); + $task = new Task($asynchronous, $sObject); + $task->actionsByEmailResponse(); break; /*----------------------------------********---------------------------------*/ } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php index 98292c62a..ca05d1451 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail/ResponseReader.php @@ -59,7 +59,7 @@ class ResponseReader try { if (!extension_loaded('imap')) { G::outRes(G::LoadTranslation("ID_EXCEPTION_LOG_INTERFAZ", ['php_imap']) . "\n"); - exit; + return; } if (PMLicensedFeatures ::getSingleton() diff --git a/workflow/engine/src/ProcessMaker/TaskScheduler/Task.php b/workflow/engine/src/ProcessMaker/TaskScheduler/Task.php index f275b55e3..4517d5cbf 100644 --- a/workflow/engine/src/ProcessMaker/TaskScheduler/Task.php +++ b/workflow/engine/src/ProcessMaker/TaskScheduler/Task.php @@ -17,6 +17,7 @@ use G; use Illuminate\Support\Facades\Log; use ldapadvancedClassCron; use NotificationQueue; +use ProcessMaker\BusinessModel\ActionsByEmail\ResponseReader; use ProcessMaker\BusinessModel\Light\PushMessageAndroid; use ProcessMaker\BusinessModel\Light\PushMessageIOS; use ProcessMaker\Core\JobsManager; @@ -543,4 +544,16 @@ class Task }; $this->runTask($job); } + + /** + * This executes an actions by email responses. + */ + public function actionsByEmailResponse() + { + $job = function() { + $responseReader = new ResponseReader(); + $responseReader->actionsByEmailEmailResponse(); + }; + $this->runTask($job); + } }