package Ġnl . ent re co . domain . play . stats Ċ Ċ import Ġnl . ent re co . domain . Test Background Ċ import Ġnl . ent re co . domain . Test Foreground Ċ import Ġnl . ent re co . domain . model . Live Stat Ċ import Ġnl . ent re co . domain . repository . Live Stat Repository Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . kotlin . any Ċ import Ġorg . mockito . kotlin . mock Ċ import Ġorg . mockito . kotlin . verify Ċ import Ġorg . mockito . kotlin . wh enever Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġentre co Ġon Ġ 2 4 / 0 1 / 2 0 1 8 . Ċ Ġ*/ Ċ class ĠFetch Live Stat Use case Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmock Live Stat Repository : ĠLive Stat Repository Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġval Ġdone : Ġ( Fetch Live Stat Response ) Ġ-> ĠUnit Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġval Ġfail : Ġ( Throwable ) Ġ-> ĠUnit Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġval Ġmock Live Stat : ĠLive Stat Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġval Ġbg Ġ= ĠTest Background () ĊĠĠĠ Ġprivate Ġval Ġfg Ġ= ĠTest Foreground () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsubject : ĠFetch Live Stat Use case ĊĊĠĠĠ Ġprivate Ġval Ġgiven Turn Id : ĠLong Ġ= Ġ 8 8 8 8 ĊĠĠĠ Ġprivate Ġval Ġgiven Meta Id : ĠLong Ġ= Ġ 9 9 9 9 ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġfetch ĠStats Ġfrom ĠRepository `() Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven Subject () ĊĠĠĠĠĠĠĠ Ġwhen Fetching Stats () ĊĠĠĠĠĠĠĠ Ġthen Stats Are F etched () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġreport Ġresult Ġwhen Ġfetching Ġsucceeds `() Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven Subject () ĊĠĠĠĠĠĠĠ Ġwhen Fetching Stats Suc ceeds () ĊĠĠĠĠĠĠĠ Ġthen Done Is Inv oked () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġshould Ġreport Ġfailed Ġwhen Ġfetching Ġfails `() Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven Subject () ĊĠĠĠĠĠĠĠ Ġwhen Fetching Stats Fails ( RuntimeException (" do ' h ")) ĊĠĠĠĠĠĠĠ Ġthen Fail Is Inv oked () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgiven Subject () Ġ{ ĊĠĠĠĠĠĠĠ Ġsubject Ġ= ĠFetch Live Stat Use case ( mock Live Stat Repository , Ġbg , Ġfg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwhen Fetching Stats () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreq Ġ= ĠFetch Live Stat Request ( given Turn Id , Ġgiven Meta Id ) ĊĠĠĠĠĠĠĠ Ġsubject . exec ( req , Ġdone , Ġfail ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwhen Fetching Stats Suc ceeds () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Live Stat Repository . fetch Stat ( given Turn Id , Ġgiven Meta Id )). thenReturn ( mock Live Stat ) ĊĠĠĠĠĠĠĠ Ġval Ġreq Ġ= ĠFetch Live Stat Request ( given Turn Id , Ġgiven Meta Id ) ĊĠĠĠĠĠĠĠ Ġsubject . exec ( req , Ġdone , Ġfail ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwhen Fetching Stats Fails ( err : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( mock Live Stat Repository . fetch Stat ( given Turn Id , Ġgiven Meta Id )). then Throw ( err ) ĊĠĠĠĠĠĠĠ Ġval Ġreq Ġ= ĠFetch Live Stat Request ( given Turn Id , Ġgiven Meta Id ) ĊĠĠĠĠĠĠĠ Ġsubject . exec ( req , Ġdone , Ġfail ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġthen Stats Are F etched () Ġ{ ĊĠĠĠĠĠĠĠ Ġverify ( mock Live Stat Repository ). fetch Stat ( given Turn Id , Ġgiven Meta Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġthen Done Is Inv oked () Ġ{ ĊĠĠĠĠĠĠĠ Ġverify ( done ). invoke ( any ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġthen Fail Is Inv oked () Ġ{ ĊĠĠĠĠĠĠĠ Ġverify ( fail ). invoke ( any ()) ĊĠĠĠ Ġ} Ċ Ċ }