package Ġfeature . playground . product . h unt . post . domain Ċ Ċ import Ġapp . playground . store . database . entities . Post Ċ import Ġcore . playground . domain . Result Ċ import Ġfeature . playground . product . h unt . post . data . Post Repository Ċ import Ġio . mock k . Mock K Annotations Ċ import Ġio . mock k . every Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġkotlinx . coroutines . flow . first Ċ import Ġkotlinx . coroutines . flow . flow Of Ċ import Ġkotlinx . coroutines . flow . last Ċ import Ġorg . hamcrest . Core Matchers Ċ import Ġorg . hamcrest . Matcher Assert Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġtesting . playground . core . Coroutine Test Ċ Ċ internal Ġclass ĠLoad Post UseCase Test Ġ: ĠCor outine Test () Ġ{ ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġpost Repository : ĠPost Repository ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġload Post UseCase : ĠLoad Post UseCase ĊĊĠĠĠ Ġprivate Ġval Ġpost Id Ġ= Ġ"" ĊĊĠĠĠ Ġprivate Ġval Ġfake Post Ġ= ĠPost ( ĊĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this ) ĊĠĠĠĠĠĠĠ Ġload Post UseCase Ġ= ĠLoad Post UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Dispatcher , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Repository , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` exception Ġemits ĠResult # Error `() Ġ= Ġrun Test Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpost Repository . observe Post ( post Id ) Ġ} Ġreturns Ġflow Of ( Result . Error ( RuntimeException ())) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġload Post UseCase ( post Id ) ĊĠĠĠĠĠĠĠ ĠMatcher Assert . assertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . last (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCore Matchers . instance Of ( Result . Error :: class . java ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` success Ġemit ĠResult # Success `() Ġ= Ġrun Test Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpost Repository . observe Post ( post Id ) Ġ} Ġreturns Ġflow Of ( Result . Success ( fake Post )) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġload Post UseCase ( post Id ) ĊĠĠĠĠĠĠĠ ĠMatcher Assert . assertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( result . last () Ġas ? ĠResult . Success )?. data , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCore Matchers . all Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCore Matchers . notNull Value (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCore Matchers .` is `( fake Post ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Result # Loading Ġthen ĠResult # Success `() Ġ= Ġrun Test Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpost Repository . observe Post ( post Id ) Ġ} Ġreturns Ġflow Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Loading ( null ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Success ( fake Post ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġload Post UseCase ( post Id ) ĊĠĠĠĠĠĠĠ ĠMatcher Assert . assertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . first (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCore Matchers . instance Of ( Result . Loading :: class . java ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠMatcher Assert . assertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( result . last () Ġas ? ĠResult . Success )?. data , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCore Matchers .` is `( fake Post ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ