Skip to content

Commit 969c998

Browse files
AbdulWahabMemonageryckellykits
authored
Retrieve ServiceStatus from a list of Tasks (#2715)
* taskList status for Household item in hh-register, from 0.2.5 * Refactor getting status from list of Tasks Signed-off-by: Elly Kitoto <[email protected]> * Format code Signed-off-by: Elly Kitoto <[email protected]> --------- Signed-off-by: Elly Kitoto <[email protected]> Co-authored-by: Ager Wasongah <[email protected]> Co-authored-by: Elly Kitoto <[email protected]>
1 parent aec7330 commit 969c998

File tree

2 files changed

+109
-1
lines changed

2 files changed

+109
-1
lines changed

android/engine/src/main/java/org/smartregister/fhircore/engine/rulesengine/RulesFactory.kt

+11
Original file line numberDiff line numberDiff line change
@@ -689,6 +689,17 @@ constructor(
689689
} else defaultRepository.createRemote(resource = arrayOf(updatedResource as Resource))
690690
}
691691
}
692+
693+
fun taskServiceStatusExist(tasks: List<Task>, vararg serviceStatus: String): Boolean {
694+
return tasks.any {
695+
val status = generateTaskServiceStatus(it)
696+
if (status.isNotBlank()) {
697+
ServiceStatus.valueOf(status) in serviceStatus.map { item -> ServiceStatus.valueOf(item) }
698+
} else {
699+
false
700+
}
701+
}
702+
}
692703
}
693704

694705
companion object {

android/engine/src/test/java/org/smartregister/fhircore/engine/rulesengine/RulesEngineServiceTest.kt

+98-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ import org.junit.Test
3737
import org.smartregister.fhircore.engine.domain.model.RelatedResourceCount
3838
import org.smartregister.fhircore.engine.domain.model.ServiceStatus
3939
import org.smartregister.fhircore.engine.robolectric.RobolectricTest
40-
import org.smartregister.fhircore.engine.util.extension.plusDays
4140

4241
@HiltAndroidTest
4342
class RulesEngineServiceTest : RobolectricTest() {
@@ -297,6 +296,104 @@ class RulesEngineServiceTest : RobolectricTest() {
297296
)
298297
}
299298

299+
@Test
300+
fun `generateListTaskServiceStatus() should return OVERDUE when list have Task#status is READY but date passed`() {
301+
val taskList = ArrayList<Task>()
302+
val task = Task().apply { status = Task.TaskStatus.REQUESTED }
303+
taskList.add(task)
304+
305+
val sdf = SimpleDateFormat("dd/MM/yyyy")
306+
val startDate: Date? = sdf.parse("01/01/2023")
307+
val endDate: Date? = sdf.parse("01/02/2023")
308+
309+
val taskOver =
310+
Task().apply {
311+
status = Task.TaskStatus.READY
312+
executionPeriod =
313+
Period().apply {
314+
start = startDate
315+
end = endDate
316+
}
317+
}
318+
319+
taskList.add(taskOver)
320+
Assert.assertTrue(
321+
rulesEngineService.taskServiceStatusExist(taskList, ServiceStatus.OVERDUE.name),
322+
)
323+
}
324+
325+
@Test
326+
fun `generateListTaskServiceStatus() should return DUE when list have Task#status is READY`() {
327+
val taskList = ArrayList<Task>()
328+
val task0 = Task().apply { status = Task.TaskStatus.READY }
329+
val task1 = Task().apply { status = Task.TaskStatus.INPROGRESS }
330+
val task2 = Task().apply { status = Task.TaskStatus.RECEIVED }
331+
val task3 = Task().apply { status = Task.TaskStatus.CANCELLED }
332+
val task4 = Task().apply { status = Task.TaskStatus.REJECTED }
333+
taskList.add(task0)
334+
taskList.add(task1)
335+
taskList.add(task2)
336+
taskList.add(task3)
337+
taskList.add(task4)
338+
339+
Assert.assertTrue(rulesEngineService.taskServiceStatusExist(taskList, ServiceStatus.DUE.name))
340+
}
341+
342+
@Test
343+
fun testGenerateListTaskServiceStatusShouldReturnUPCOMINGWhenListHaveTaskStatusIsREQUESTED() {
344+
val taskList = ArrayList<Task>()
345+
val task0 = Task().apply { status = Task.TaskStatus.REQUESTED }
346+
val task2 = Task().apply { status = Task.TaskStatus.COMPLETED }
347+
val task3 = Task().apply { status = Task.TaskStatus.RECEIVED }
348+
349+
taskList.add(task0)
350+
taskList.add(task2)
351+
taskList.add(task3)
352+
353+
Assert.assertTrue(
354+
rulesEngineService.taskServiceStatusExist(taskList, ServiceStatus.UPCOMING.name),
355+
)
356+
}
357+
358+
@Test
359+
fun testGenerateListTaskServiceStatusShouldReturnINPROGRESSWhenListHaveTaskStatusIsINPROGRESS() {
360+
val taskList = ArrayList<Task>()
361+
val task1 = Task().apply { status = Task.TaskStatus.INPROGRESS }
362+
val task2 = Task().apply { status = Task.TaskStatus.COMPLETED }
363+
val task3 = Task().apply { status = Task.TaskStatus.CANCELLED }
364+
taskList.add(task1)
365+
taskList.add(task2)
366+
taskList.add(task3)
367+
368+
Assert.assertTrue(
369+
rulesEngineService.taskServiceStatusExist(taskList, ServiceStatus.IN_PROGRESS.name),
370+
)
371+
}
372+
373+
@Test
374+
fun testGenerateListTaskServiceStatusShouldReturnEXPIREDWhenListHaveTaskStatusIsEXPIRED() {
375+
val taskList = ArrayList<Task>()
376+
val task2 = Task().apply { status = Task.TaskStatus.COMPLETED }
377+
val task3 = Task().apply { status = Task.TaskStatus.CANCELLED }
378+
taskList.add(task2)
379+
taskList.add(task3)
380+
381+
Assert.assertTrue(
382+
rulesEngineService.taskServiceStatusExist(taskList, ServiceStatus.EXPIRED.name),
383+
)
384+
}
385+
386+
@Test
387+
fun testGenerateListTaskServiceStatusShouldReturnCOMPLETEDWhenListHaveTaskStatusIsCOMPLETED() {
388+
val taskList = ArrayList<Task>()
389+
val task2 = Task().apply { status = Task.TaskStatus.COMPLETED }
390+
taskList.add(task2)
391+
392+
Assert.assertTrue(
393+
rulesEngineService.taskServiceStatusExist(taskList, ServiceStatus.COMPLETED.name),
394+
)
395+
}
396+
300397
@Test
301398
fun testFilterResourcesWithFhirPathExtraction() {
302399
val task =

0 commit comments

Comments
 (0)