package Ġcom . fe el sok man . coroutine playground . ui . fragments . post . view model Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . fe el sok man . coroutine playground . Coroutine Test Rule Ċ import Ġcom . fe el sok man . coroutine playground . Life Cycle Test Owner Ċ import Ġcom . fe el sok man . coroutine playground . repos . Red dit Repository Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġorg . am sh ove . k lu ent . Verify Ċ import Ġorg . am sh ove . k lu ent . Verify No Further Interactions Ċ import Ġorg . am sh ove . k lu ent . When Ċ import Ġorg . am sh ove . k lu ent . called Ċ import Ġorg . am sh ove . k lu ent . calling Ċ import Ġorg . am sh ove . k lu ent . it Returns Ċ import Ġorg . am sh ove . k lu ent . mock Ċ import Ġorg . am sh ove . k lu ent . on Ċ import Ġorg . am sh ove . k lu ent . that Ċ import Ġorg . am sh ove . k lu ent . was Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . rules . Test Rule Ċ Ċ @ Experimental Cor outines Api Ċ class ĠPost ViewModel Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġcoroutine Test Rule Ġ= ĠCor outine Test Rule () ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġvar Ġrule : ĠTest Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġprivate Ġval Ġstate Observer : ĠObserver < State > Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġval Ġre dd it Repository : ĠRed dit Repository Ġ= Ġmock () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlife Cycle Test Owner : ĠLife Cycle Test Owner ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpost ViewModel : ĠPost ViewModel ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġlife Cycle Test Owner Ġ= ĠLife Cycle Test Owner () ĊĠĠĠĠĠĠĠ Ġlife Cycle Test Owner . onCreate () ĊĠĠĠĠĠĠĠ Ġpost ViewModel Ġ= ĠPost ViewModel ( reddit Repository ) ĊĠĠĠĠĠĠĠ Ġpost ViewModel . state Data . observe ( life Cycle Test Owner , Ġstate Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġlife Cycle Test Owner . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ge Red dit Post Ġshows Ġloading Ġfirst Ġthen Ġshows Ġthe Ġpost Ġafter Ġit Ġwas Ġsuccessfully Ġfetched `() Ġ{ ĊĠĠĠĠĠĠĠ Ġcoroutine Test Rule . test Dispatcher . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlife Cycle Test Owner . on Resume () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġre dd it Post Ġ= ĠState . Post (" This Ġis Ġa Ġre dd it Ġpost ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWhen Ġcalling Ġre dd it Repository . getPost () Ġit Returns Ġre dd it Post ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost ViewModel . get Red dit Post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVerify Ġon Ġstate Observer Ġthat Ġstate Observer . on Changed ( State . Loading ) Ġwas Ġcalled ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVerify Ġon Ġstate Observer Ġthat Ġstate Observer . on Changed ( reddit Post ) Ġwas Ġcalled ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVerify No Further Interactions Ġon Ġstate Observer ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` a Ġuseless Ġtest Ġfor Ġget Red dit Post `() Ġ{ ĊĠĠĠĠĠĠĠ Ġcoroutine Test Rule . test Dispatcher . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlife Cycle Test Owner . on Resume () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġre dd it Post Ġ= ĠState . Post (" This Ġis Ġa Ġre dd it Ġpost ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWhen Ġcalling Ġre dd it Repository . getPost () Ġit Returns Ġre dd it Post ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost ViewModel . get Red dit Post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVerify Ġon Ġre dd it Repository Ġthat Ġre dd it Repository . getPost () Ġwas Ġcalled ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVerify Ġon Ġstate Observer Ġthat Ġstate Observer . on Changed ( State . Loading ) Ġwas Ġcalled ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ