Skip to content

Commit 9e9f638

Browse files
nolanpropmPaulis
authored andcommitted
Add all_tasks property to tasks endpoint
1 parent 2496c6a commit 9e9f638

2 files changed

Lines changed: 41 additions & 1 deletion

File tree

‎ProcessMaker/Traits/TaskControllerIndexMethods.php‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ private function addTaskData($response)
149149
private function excludeNonVisibleTasks($query, $request)
150150
{
151151
$nonSystem = filter_var($request->input('non_system'), FILTER_VALIDATE_BOOLEAN);
152-
$query->where(function ($query) {
152+
$allTasks = filter_var($request->input('all_tasks'), FILTER_VALIDATE_BOOLEAN);
153+
$query->when(!$allTasks, function ($query) {
153154
$query->where('element_type', '=', 'task');
154155
$query->orWhere('element_type', '=', 'serviceTask');
155156
$query->where('element_name', '=', 'AI Assistant');

‎tests/Feature/Api/TasksTest.php‎

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -832,4 +832,43 @@ public function testGetScreenFields()
832832

833833
$this->assertEquals($expectedFields, $jsonResponse);
834834
}
835+
836+
public function testGetAllTaskTypes()
837+
{
838+
$request = ProcessRequest::factory()->create();
839+
840+
$taskAttributes = [
841+
'process_request_id' => $request->id,
842+
'process_id' => $request->process_id,
843+
'element_type' => 'task',
844+
'user_id' => $this->user->id,
845+
];
846+
847+
$userTask = ProcessRequestToken::factory()->create($taskAttributes);
848+
$scriptTask = ProcessRequestToken::factory()->create([...$taskAttributes, 'element_type' => 'scriptTask']);
849+
$gatewayTask = ProcessRequestToken::factory()->create([...$taskAttributes, 'element_type' => 'gateway']);
850+
851+
$queryString = http_build_query([
852+
'pmql' => "process_request_id = {$request->id}",
853+
]);
854+
$response = $this->apiCall('GET', '/tasks?' . $queryString);
855+
856+
// Assert default behavior: only human tasks
857+
$response = $response->json();
858+
$this->assertCount(1, $response['data']);
859+
$this->assertEquals($userTask->id, $response['data'][0]['id']);
860+
861+
$queryString = http_build_query([
862+
'pmql' => "process_request_id = {$request->id}",
863+
'all_tasks' => 1,
864+
]);
865+
$response = $this->apiCall('GET', '/tasks?' . $queryString);
866+
867+
// Assert all tasks returned
868+
$response = $response->json();
869+
$this->assertCount(3, $response['data']);
870+
$this->assertEquals($userTask->id, $response['data'][0]['id']);
871+
$this->assertEquals($scriptTask->id, $response['data'][1]['id']);
872+
$this->assertEquals($gatewayTask->id, $response['data'][2]['id']);
873+
}
835874
}

0 commit comments

Comments
 (0)