package Ġcom . c ark z is . android . sil en us . review Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġcom . c ark z is . android . sil en us . R Ċ import Ġcom . c ark z is . android . sil en us . data . Fake Main Repository Ċ import Ġcom . c ark z is . android . sil en us . data . Fake UserRepository Ċ import Ġcom . c ark z is . android . sil en us . get Or Await Value Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . test . Test Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . test . reset Main Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġkotlinx . coroutines . test . set Main Ċ import Ġorg . hamcrest . Core Matchers .` is ` Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ @ Experimental Cor outines Api Ċ class ĠYour Reviews ViewModel Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġyour Reviews ViewModel : ĠYour Reviews ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmain Repository : ĠFake Main Repository ĊĊĠĠĠ Ġ// ĠThis Ġallows Ġaccess Ġto ĠDispatcher . Main Ġin Ġtesting . ĊĠĠĠ Ġprivate Ġval Ġdispatcher Ġ= ĠTest Coroutine Dispatcher () ĊĊĠĠĠ Ġ// ĠExec utes Ġeach Ġtask Ġsynchronous ly Ġusing ĠArchitecture ĠComponents . ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġvar Ġinstant Executor Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠDispatch ers . set Main ( dispatcher ) ĊĠĠĠĠĠĠĠ Ġmain Repository Ġ= ĠFake Main Repository () ĊĠĠĠĠĠĠĠ Ġyour Reviews ViewModel Ġ= ĠYour Reviews ViewModel ( main Repository ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ ĠDispatch ers . reset Main () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrefresh Reviews _ failure _ post Failure Message To Toast LiveData () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven Ġthat Ġthe Ġrequest Ġto Ġrefresh Ġreviews Ġwill Ġfail . ĊĠĠĠĠĠĠĠ Ġmain Repository . failure Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġrefresh Reviews Ġmethod . ĊĠĠĠĠĠĠĠ Ġyour Reviews ViewModel . refresh Reviews () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert Ġthat Ġan Ġerror Ġmessage Ġis Ġcollected , Ġto Ġbe Ġadded Ġto Ġtoast Text Ġvia Ġhelper Ġmethod . ĊĠĠĠĠĠĠĠ ĠassertThat ( your Reviews ViewModel . toast Text . get Or Await Value (). getContext IfNot Handled (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `( R . string . error )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrefresh Reviews _ success _ post ListOf Your Reviews To LiveData () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven Ġthat Ġthe Ġrequest Ġto Ġrefresh Ġreviews Ġwill Ġsucceed . ĊĠĠĠĠĠĠĠ Ġmain Repository . failure Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġrefresh Reviews Ġmethod . ĊĠĠĠĠĠĠĠ Ġyour Reviews ViewModel . refresh Reviews () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert Ġthat Ġa Ġlist Ġof Ġfive Ġ( mock ) Ġreviews Ġis Ġposted Ġto Ġthe Ġassociated ĠLive Data . ĊĠĠĠĠĠĠĠ ĠassertThat ( your Reviews ViewModel . your Reviews . get Or Await Value (). size , Ġ` is `( 5 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ ĠTODO : ĠWe Ġneed Ġto Ġadd Ġtests Ġfor Ġthe Ġresponses Ġto ĠLoading State . Loading Ġemission s , ĊĠĠĠĠĠĠĠ Ġwhich Ġhave Ġnot Ġyet Ġbeen Ġfully Ġimplemented , Ġcurrently Ġonly Ġlogging Ġa Ġmessage Ġto ĠLog cat . ĊĠĠĠĠ Ġ*/ Ċ Ċ }