package Ġcom . example . food venue app . ui . ven ues Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġcom . example . food venue app . Fake Repository Ċ import Ġcom . example . food venue app . Main Coroutine Rule Ċ import Ġcom . example . food venue app . domain . model . Position Of Interest Ċ import Ġcom . example . food venue app . get Or Await Value Ċ import Ġcom . example . food venue app . observe ForTesting Ċ import Ġcom . example . food venue app . ui . Fake Data Manip ulator Ċ import Ġcom . example . food venue app . ui . USER _ POSITION Ċ import Ġcom . google . common . truth . Truth Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ @ Experimental Cor outines Api Ċ class ĠV en ues ViewModel Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠS UT : ĠV en ues ViewModel ĊĊĠĠĠ Ġprivate Ġval Ġrepo Ġ= ĠFake Repository () ĊĠĠĠ Ġprivate Ġval Ġdata Manip ulator Ġ= ĠFake Data Manip ulator () ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġvar Ġmain Coroutine Rule Ġ= ĠMain Coroutine Rule () ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġvar Ġinstant Executor Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠS UT Ġ= ĠV en ues ViewModel ( repo , Ġdata Manip ulator ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Ven ues _ successful Response _ ven ues HasValue _ network Error IsFalse () Ġ= ĊĠĠĠĠĠĠĠ Ġmain Coroutine Rule . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . return Success Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS UT . get Ven ues ( USER _ POSITION , ĠPosition Of Interest ( USER _ POSITION , Ġ 0 f )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠS UT . ven ues . observe ForTesting Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( S UT . ven ues . get Or Await Value ()). isNotEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS UT . network Error . observe ForTesting Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( S UT . network Error . get Or Await Value ()). isFalse () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Ven ues _ network Error _ network Error IsTrue () Ġ= ĊĠĠĠĠĠĠĠ Ġmain Coroutine Rule . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . return Network Error Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS UT . get Ven ues ( USER _ POSITION , ĠPosition Of Interest ( USER _ POSITION , Ġ 0 f )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠS UT . network Error . observe ForTesting Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( S UT . network Error . get Or Await Value ()). isTrue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Ven ues _ generic Error _ network Error IsTrue () Ġ= ĊĠĠĠĠĠĠĠ Ġmain Coroutine Rule . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . return Generic Error Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS UT . get Ven ues ( USER _ POSITION , ĠPosition Of Interest ( USER _ POSITION , Ġ 0 f )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠS UT . generic Error . observe ForTesting Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uth . assertThat ( S UT . generic Error . get Or Await Value ()). isEqualTo ( repo . errorCode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ }