package Ġid . ap w devs . app . core . inter actor Ċ Ċ import Ġid . ap w devs . app . core . domain . repository . Movie Repository Ċ import Ġid . ap w devs . app . core . domain . repository . Tv Show Repository Ċ import Ġid . ap w devs . app . core . domain . use case . Detail Interactor Ċ import Ġid . ap w devs . app . core . domain . use case . Detail UseCase Ċ import Ġid . ap w devs . app . core . utils . State Ċ import Ġid . ap w devs . app . libs . data . Fake Domain Ċ import Ġio . mock k . Mock K Annotations Ċ import Ġio . mock k . every Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġio . mock k . verify Ċ import Ġkotlinx . coroutines . flow . flow Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ class ĠDetail UseCase Test Ġ{ ĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġlateinit Ġvar Ġmovie Repository : ĠMovie Repository ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġlateinit Ġvar Ġtv Show Repository : ĠT v Show Repository ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdetail UseCase : ĠDetail UseCase ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this ) ĊĠĠĠĠĠĠĠ Ġdetail UseCase Ġ= ĠDetail Interactor ( movie Repository , Ġtv Show Repository ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` get Detail Movie () Ġmust Ġcall Ġrepository Ġand Ġreturn Ġright Ġvalue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmovie Id Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfake Data Ġ= ĠFake Domain . generate Detail Movie Domain ( movie Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġflow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( State . Success ( fake Data )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmovie Repository . get Detail Movie ( any ()) Ġ} Ġreturns Ġexpected ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġdetail UseCase . get Detail Movie ( movie Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( actual ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( expected , Ġactual ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġmovie Repository . get Detail Movie ( cmp Eq ( movie Id )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` get Detail Tv Show () Ġmust Ġcall Ġrepository Ġand Ġreturn Ġright Ġvalue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Id Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfake Data Ġ= ĠFake Domain . generate Detail Tv Domain ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġflow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( State . Success ( fake Data )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtv Show Repository . get Detail Tv Show ( any ()) Ġ} Ġreturns Ġexpected ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġdetail UseCase . get Detail Tv Show ( tv Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( actual ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( expected , Ġactual ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġtv Show Repository . get Detail Tv Show ( cmp Eq ( tv Id )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }