package Ġcom . par ad igma . rick and mort y . data . resp osit ory . remote Ċ Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġandroidx . test . filters . Medium Test Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġcom . par ad igma . rick and mort y . Build Config Ċ import Ġcom . par ad igma . rick and mort y . data . mapper . Mapper Ċ import Ġcom . par ad igma . rick and mort y . data . repository . Result Location Ċ import Ġcom . par ad igma . rick and mort y . data . repository . remote . api . R icky And M ort y ApiService Ċ import Ġcom . par ad igma . rick and mort y . data . repository . remote . api . model . Location DTO Ċ import Ġcom . par ad igma . rick and mort y . data . repository . remote . location . Location Repository Impl Ċ import Ġcom . par ad igma . rick and mort y . domain . Location Ċ import Ġcom . par ad igma . rick and mort y . mock webserver . Error Dispatcher Ċ import Ġcom . par ad igma . rick and mort y . mock webserver . No Data Dispatcher Ċ import Ġcom . par ad igma . rick and mort y . mock webserver . Success Dispatcher Ċ import Ġdagger . h ilt . android . testing . H ilt Android Rule Ċ import Ġdagger . h ilt . android . testing . H ilt Android Test Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġokhttp 3 . mock webserver . Mock WebServer Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġjavax . inject . Inject Ċ Ċ @ Medium Test Ċ @ H ilt Android Test Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ @ Experimental Cor outines Api Ċ class ĠLocation Repository Impl Test { ĊĊĠĠĠ Ġprivate Ġval Ġmock WebServer Ġby Ġlazy Ġ{ ĠMock WebServer () Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġlocation Repository : ĠLocation Repository Impl ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġr icky And M ort y ApiService : ĠR icky And M ort y ApiService ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġlocation Mapper : ĠMapper < Location DTO , ĠLocation > ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġvar Ġh ilt Rule Ġ= ĠH ilt Android Rule ( this ) ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp (){ ĊĠĠĠĠĠĠĠ Ġh ilt Rule . inject () ĊĠĠĠĠĠĠĠ Ġmock WebServer . start ( Build Config . TEST _ PORT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun Ġclean Up () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock WebServer . shutdown () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlocation Repository Impl _ getLocation (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġmock WebServer . dispatcher Ġ= ĠSuccess Dispatcher () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġlocation Repository . getLocation (" 3 ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result Ġis ĠResult Location . Success ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlocation Repository Impl _ getLocation _ No Data (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġmock WebServer . dispatcher Ġ= ĠNo Data Dispatcher () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġlocation Repository . getLocation (" 3 ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result Ġis ĠResult Location . No Data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlocation Repository Impl _ getLocation _ Error (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġmock WebServer . dispatcher Ġ= ĠError Dispatcher () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġlocation Repository . getLocation (" 3 ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result Ġis ĠResult Location . Error ) ĊĠĠĠ Ġ} ĊĊ Ċ }