package Ġapp . web . dr jack y cv . domain . products . use case Ċ Ċ import Ġandroidx . paging . Paging Data Ċ import Ġapp . web . dr jack y cv . domain . products . factory . Product Factory Ċ import Ġapp . web . dr jack y cv . domain . products . repository . Products List Repository Ċ import Ġio . mock k . Mock K Annotations Ċ import Ġio . mock k . co Every Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . flow . first Ċ import Ġkotlinx . coroutines . flow . flow Of Ċ import Ġkotlinx . coroutines . test . Standard Test Dispatcher Ċ import Ġkotlinx . coroutines . test . run Test Ċ import Ġkotlinx . coroutines . test . set Main Ċ import Ġorg . hamcrest . Core Matchers .* Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . JUnit 4 Ċ import Ġorg . mockito . Argument Matchers . any String Ċ Ċ @ RunWith ( JUnit 4 :: class ) Ċ class ĠGet Be ers ListBy Coroutine UseCase Test Ġ{ ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġlateinit Ġvar Ġproducts List Repository : ĠProducts List Repository ĊĊĠĠĠ Ġ@ Experimental Cor outines Api ĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠDispatch ers . set Main ( Standard Test Dispatcher ()) ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Experimental Cor outines Api ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġinvoking ĠGet Be ers ListBy Coroutine UseCase Ġgives Ġlist Ġof Ġproducts `() Ġ= ĊĠĠĠĠĠĠĠ Ġrun Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuse case Ġ= ĠGet Be ers ListBy Coroutine UseCase ( products List Repository ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgiven Products Ġ= ĠProduct Factory . create Products ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Products Ġ= ĠP aging Data . from ( given Products ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġproducts List Repository . get Be ers ListBy Coroutine ( any String ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. returns ( flow Of ( expected Products )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInvoke ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproducts List Flow Ġ= Ġuse case ( Get Be ers ListBy Coroutine Params ("")) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( products List Flow , Ġnot NullValue ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproducts List Data State Ġ= Ġproducts List Flow . first () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( products List Data State , Ġnot NullValue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( products List Data State , Ġinstance Of ( Paging Data :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( products List Data State , ĠequalTo ( expected Products )) ĊĠĠĠĠĠĠĠ Ġ} Ċ }