package Ġbr . com . jd sc aram . covid . repository Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġbr . com . jd sc aram . core . Cor outines Test Rule Ċ import Ġbr . com . jd sc aram . web service . api . Cov id Api Ċ import Ġbr . com . jd sc aram . core . Dispatcher Provider Ċ import Ġbr . com . jd sc aram . web service . core . Web service Ċ import Ġbr . com . jd sc aram . web service . model . Country Response Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ 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 . junit .* Ċ Ċ import Ġretrofit 2 . Call Ċ import Ġjava . lang . Exception Ċ Ċ @ Experimental Cor outines Api Ċ class ĠC ov id Repository Impl Test Ġ{ ĊĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġinstant Task Executor Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġcor outines Test Rule Ġ= ĠCor outines Test Rule () ĊĊĠĠĠ Ġprivate Ġval Ġweb service Ġ= Ġmock k < Web service >() ĊĠĠĠ Ġprivate Ġval Ġtest Dispatcher Ġ= ĠTest Coroutine Dispatcher () ĊĠĠĠ Ġprivate Ġval Ġrequest Ġ= Ġmock k < Cov id Api >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcov id Repository : ĠC ov id Repository ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ ĠDispatch ers . set Main ( test Dispatcher ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ ĠDispatch ers . reset Main () ĊĠĠĠĠĠĠĠ Ġtest Dispatcher . cleanup Test Cor outines () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Cov id By Country _ return Success () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponses Ġ= ĠlistOf ( Country Response (" Br azil ", Ġ" BR ", Ġ" bra ")) ĊĠĠĠĠĠĠĠ Ġprepare Scenario ( responses , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcov id Repository . getC ov id By Country () ĊĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( result . is Success ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" Br azil ", Ġresult . get OrNull ()?. first ()?. country ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Cov id By Country _ return Error () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġprepare Scenario () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcov id Repository . getC ov id By Country () ĊĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( result . is Failure ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Scenario ( ĊĠĠĠĠĠĠĠ Ġcountries Response : ĠList < Country Response > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġis Success : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrequest . getCount ries () Ġ} Ġreturns Ġmock k () ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġweb service . create Request < Cov id Api >( any ()) Ġ} Ġreturns Ġrequest ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb service . execute Request < List < Country Response >>( any ()) ĊĠĠĠĠĠĠĠ Ġ} Ġreturns Ġif Ġ( is Success ) ĠResult . success ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcountries Response ĊĠĠĠĠĠĠĠ Ġ) Ġelse ĠResult . failure ( Exception ()) ĊĊĠĠĠĠĠĠĠ Ġcov id Repository Ġ= ĠC ov id Repository Impl ( web service , Ġcor outines Test Rule . test Dispatcher Provider ) ĊĠĠĠ Ġ} Ċ }