package Ġcom . lee h end ry p . stone android challenge . feed . domain . use cases Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġcom . lee h end ry p . stone android challenge . core . DTO s Ċ import Ġcom . lee h end ry p . stone android challenge . core . Rx UnitTest Ċ import Ġcom . lee h end ry p . stone android challenge . feed . domain . Jo ke Repository Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . reactivex . rx java 3 . core . Flow able Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ class ĠSearch Jo ke UseCase Impl Test Ġ: ĠRx UnitTest () Ġ{ ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġtask Executor Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrepository : ĠJo ke Repository ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġuse Case : ĠSearch Jo ke UseCase ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġ` set Ġup `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository Ġ= Ġmock k () ĊĠĠĠĠĠĠĠ Ġuse Case Ġ= ĠSearch Jo ke UseCase Impl ( repository ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġreturn Ġjo ke Ġlist Ġfrom Ġsuccessful Ġrepository Ġdata Ġfetch Ġattempt `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrepository . search ( any ()) Ġ} Ġreturns ĠD TO s . jo ke Flow able ĊĊĠĠĠĠĠĠĠ Ġuse Case . execute ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Complete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert No Errors () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. values () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains All ( DTO s . j okes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġreturn Ġerror Ġfrom Ġfailed Ġrepository Ġdata Ġfetch Ġattempt `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= ĠThrowable () ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrepository . search ( any ()) Ġ} Ġreturns ĠFlow able . error ( error ) ĊĊĠĠĠĠĠĠĠ Ġuse Case . execute ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assertNot Complete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Error ( error ) ĊĠĠĠ Ġ} Ċ } Ċ