package Ġcom . example . flow state flow p oc . mv vm . domain Ċ Ċ import Ġcom . example . flow state flow p oc . Main Coroutine Test Rule Ċ import Ġcom . example . flow state flow p oc . mv vm . domain . mapper . to MV V MP h oto Ċ import Ġcom . example . flow state flow p oc . network . models . Photo Response Ċ import Ġcom . example . flow state flow p oc . shared . adapter . models . Photo Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġio . mock k .* Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . flow . flow Of Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ @ Experimental Cor outines Api Ċ class ĠM VV MP h oto UseCase Test Ġ{ ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġvar Ġrule Ġ= ĠMain Coroutine Test Rule () ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrepository : ĠM VV MP h oto Contract . Repository ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġuse Case : ĠM VV MP h oto Contract . UseCase ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this ) ĊĠĠĠĠĠĠĠ Ġmock k Static (" com . example . flow state flow p oc . mv vm . domain . mapper . MV V MP h oto Mapper Kt ") ĊĠĠĠĠĠĠĠ Ġuse Case Ġ= ĠM VV MP h oto UseCase ( repository ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġun mock k Static (" com . example . flow state flow p oc . mv vm . domain . mapper . MV V MP h oto Mapper Kt ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġtake Ġphotos `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġmodels Ġ= ĠlistOf < Photo Response >( mock k ()) ĊĠĠĠĠĠĠĠ Ġval Ġphotos Ġ= ĠlistOf < Photo >( mock k ()) ĊĊĠĠĠĠĠĠĠ Ġmodels . forEach Indexed Ġ{ Ġindex , Ġphoto Response Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġphoto Response . to MV V MP h oto () Ġ} Ġreturns Ġphotos [ index ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġrepository . findAll () Ġ} Ġreturns Ġflow Of ( models ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ Ġrule . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Case . take Photos (). collect Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). isEqualTo ( photos ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }