package Ġcom . example . android . architecture . blueprint s . todo app . tasks Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġcom . example . android . architecture . blueprint s . todo app . data . Task Ċ import Ġcom . example . android . architecture . blueprint s . todo app . data . source . Fake Test Repository Ċ import Ġcom . example . android . architecture . blueprint s . todo app . get Or Await Value Ċ import Ġcom . google . common . truth . Truth Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ class ĠTasks ViewModel Test Ġ{ ĊĊĠĠĠ Ġ// ĠSubject Ġunder Ġtest ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtask ViewModel : ĠTasks ViewModel ĊĊĠĠĠ Ġ// ĠExec utes Ġeach Ġtask Ġsynchronous ly Ġusing ĠArchitecture ĠComponents . ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġinstant Task Executor Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtask Repository Ġ= ĠFake Test Repository () ĊĠĠĠĠĠĠĠ Ġval Ġtask 1 Ġ= ĠTask (" Title 1 ", Ġ" Description Ġ 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġtask 2 Ġ= ĠTask (" Title 1 ", Ġ" Description Ġ 2 ", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġtask 3 Ġ= ĠTask (" Title 1 ", Ġ" Description Ġ 3 ", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġtask Repository . add Tasks ( task 1 , Ġtask 2 , Ġtask 3 ) ĊĠĠĠĠĠĠĠ Ġtask ViewModel Ġ= ĠTasks ViewModel ( task Repository ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd New Task _ sets Net Task Event () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġadding Ġa Ġnew Ġtask ĊĠĠĠĠĠĠĠ Ġtask ViewModel . add New Task () ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen Ġthe Ġnew Ġtask Ġevent Ġis Ġtriggered ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( task ViewModel . new Task Event . get Or Await Value (). getContent IfNot Handled ()). isNotNull () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġset Filter All Tasks _ tasks Add View Visible () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġthe Ġfilter Ġtype Ġis ĠALL _ TASK ĊĠĠĠĠĠĠĠ Ġtask ViewModel . set Filtering ( Tasks Filter Type . ALL _ TASK S ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġthe Ġ" Add Ġtask " Ġaction Ġis Ġvisible ĊĠĠĠĠĠĠĠ ĠTr uth . assertThat ( task ViewModel . tasks Add View Visible . get Or Await Value ()). isTrue () ĊĠĠĠ Ġ} Ċ }