PMCORE-2644

This commit is contained in:
Julio Cesar Laura Avendaño
2021-01-05 18:59:16 +00:00
parent 3dacc19db7
commit 0deb4847c7
3 changed files with 48 additions and 5 deletions

View File

@@ -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);
}
}
}

View File

@@ -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':

View File

@@ -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);
}
}