Skip to content

Commit

Permalink
echis - 2489 - hh register tasklist status for hh item (#2682)
Browse files Browse the repository at this point in the history
* echis - 2489 - hh register tasklist status for hh item
* refactor taskList status for household
* update unit test for upcoming task in list

---------
 
Co-authored-by: Martin Ndegwa <ndegwamartin@users.noreply.github.com>
  • Loading branch information
AbdulWahabMemon authored Aug 25, 2023
1 parent 97ce3c0 commit 24dd3d9
Show file tree
Hide file tree
Showing 2 changed files with 124 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ import org.smartregister.fhircore.engine.util.extension.extractAge
import org.smartregister.fhircore.engine.util.extension.extractGender
import org.smartregister.fhircore.engine.util.extension.extractLogicalIdUuid
import org.smartregister.fhircore.engine.util.extension.formatDate
import org.smartregister.fhircore.engine.util.extension.isDue
import org.smartregister.fhircore.engine.util.extension.isOverDue
import org.smartregister.fhircore.engine.util.extension.parseDate
import org.smartregister.fhircore.engine.util.extension.prettifyDate
Expand Down Expand Up @@ -450,6 +451,22 @@ constructor(
}
return serviceStatus
}

fun generateListTaskServiceStatus(tasks: List<Task>): String {
val finalTaskForStatus =
tasks.find { task -> task.isOverDue() }
?: tasks.find { task ->
(task.status == Task.TaskStatus.REQUESTED ||
task.status == Task.TaskStatus.NULL ||
task.status == Task.TaskStatus.RECEIVED)
}
?: tasks.find { task -> task.isDue() }
?: tasks.find { task -> task.status == Task.TaskStatus.INPROGRESS }
?: tasks.find { task -> task.status == Task.TaskStatus.CANCELLED }
?: tasks.find { task -> task.status == Task.TaskStatus.COMPLETED } ?: Task()

return generateTaskServiceStatus(finalTaskForStatus)
}
}

companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -277,4 +277,111 @@ class RulesEngineServiceTest : RobolectricTest() {
rulesEngineService.generateTaskServiceStatus(task)
)
}

@Test
fun `generateListTaskServiceStatus() should return OVERDUE when list have Task#status is READY but date passed`() {
val taskList = ArrayList<Task>()
val task = Task().apply { status = Task.TaskStatus.REQUESTED }
taskList.add(task)

val sdf = SimpleDateFormat("dd/MM/yyyy")
val startDate: Date? = sdf.parse("01/01/2023")
val endDate: Date? = sdf.parse("01/02/2023")

val taskOver =
Task().apply {
status = Task.TaskStatus.READY
executionPeriod =
Period().apply {
start = startDate
end = endDate
}
}

taskList.add(taskOver)

Assert.assertEquals(
ServiceStatus.OVERDUE.name,
rulesEngineService.generateListTaskServiceStatus(taskList),
)
}

@Test
fun `generateListTaskServiceStatus() should return DUE when list have Task#status is READY`() {
val taskList = ArrayList<Task>()
val task0 = Task().apply { status = Task.TaskStatus.READY }
val task1 = Task().apply { status = Task.TaskStatus.INPROGRESS }
val task2 = Task().apply { status = Task.TaskStatus.RECEIVED }
val task3 = Task().apply { status = Task.TaskStatus.CANCELLED }
val task4 = Task().apply { status = Task.TaskStatus.REJECTED }
taskList.add(task0)
taskList.add(task1)
taskList.add(task2)
taskList.add(task3)
taskList.add(task4)

Assert.assertEquals(
ServiceStatus.DUE.name,
rulesEngineService.generateListTaskServiceStatus(taskList),
)
}

@Test
fun `generateListTaskServiceStatus() should return UPCOMING when list have Task#status is REQUESTED`() {
val taskList = ArrayList<Task>()
val task0 = Task().apply { status = Task.TaskStatus.REQUESTED }
val task2 = Task().apply { status = Task.TaskStatus.COMPLETED }
val task3 = Task().apply { status = Task.TaskStatus.RECEIVED }

taskList.add(task0)
taskList.add(task2)
taskList.add(task3)

Assert.assertEquals(
ServiceStatus.UPCOMING.name,
rulesEngineService.generateListTaskServiceStatus(taskList),
)
}

@Test
fun `generateListTaskServiceStatus() should return INPROGRESS when list have Task#status is INPROGRESS`() {
val taskList = ArrayList<Task>()
val task1 = Task().apply { status = Task.TaskStatus.INPROGRESS }
val task2 = Task().apply { status = Task.TaskStatus.COMPLETED }
val task3 = Task().apply { status = Task.TaskStatus.CANCELLED }
taskList.add(task1)
taskList.add(task2)
taskList.add(task3)

Assert.assertEquals(
ServiceStatus.IN_PROGRESS.name,
rulesEngineService.generateListTaskServiceStatus(taskList),
)
}

@Test
fun `generateListTaskServiceStatus() should return EXPIRED when list have Task#status is EXPIRED`() {
val taskList = ArrayList<Task>()
val task2 = Task().apply { status = Task.TaskStatus.COMPLETED }
val task3 = Task().apply { status = Task.TaskStatus.CANCELLED }
taskList.add(task2)
taskList.add(task3)

Assert.assertEquals(
ServiceStatus.EXPIRED.name,
rulesEngineService.generateListTaskServiceStatus(taskList),
)
}

@Test
fun `generateListTaskServiceStatus() should return COMPLETED when list have Task#status is COMPLETED`() {
val taskList = ArrayList<Task>()
val task2 = Task().apply { status = Task.TaskStatus.COMPLETED }
taskList.add(task2)

Assert.assertEquals(
ServiceStatus.COMPLETED.name,
rulesEngineService.generateListTaskServiceStatus(taskList),
)
}
}

0 comments on commit 24dd3d9

Please sign in to comment.