package Ġcom . mart ys uz uki . repository Ċ Ċ import Ġcom . mart ys uz uki . rem oted at as ource interface . The Movie Database Service Ċ import Ġcom . mart ys uz uki . repository . movie . Movie Repository Impl Ċ import Ġcom . mart ys uz uki . repository interface . movie .* Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġokhttp 3 . ResponseBody Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . fail Ċ import Ġorg . junit . Test Ċ import Ġretrofit 2 . Response Ċ import Ġjava . lang . IllegalArgumentException Ċ Ċ @ Experimental Cor outines Api Ċ class ĠMovie Repository Impl Test Ġ{ ĊĊĠĠĠ Ġprivate Ġclass ĠService Mock : ĠThe Movie Database Service Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmovies Response : ĠResult < The Movie Database Service . ListResponse < The Movie Database Service . Movie >> ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġmovies ( query : ĠString , Ġpage : ĠInt ) Ġ= Ġmovies Response ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . get OrThrow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" movies Response Ġis Ġnull ") ĊĊĠĠĠĠĠĠĠ Ġvar Ġmovie Detail Response : ĠResult < The Movie Database Service . Movie Detail >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġmovie Detail ( movie Id : ĠInt ) Ġ= Ġmovie Detail Response ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . get OrThrow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" movie Detail Response Ġis Ġnull ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ fetch Movies _ is Success _ page Next () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= ĠService Mock () ĊĠĠĠĠĠĠĠ Ġval Ġrepository Ġ= ĠMovie Repository Impl ( service ) ĊĠĠĠĠĠĠĠ Ġval Ġmovie Ġ= ĠThe Movie Database Service . Movie ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposter _ path Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠThe Movie Database Service . ListResponse ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= ĠlistOf ( movie ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal _ results Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal _ pages Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Item Ġ= ĠMovie ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposter Path Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" test " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . movies Response Ġ= ĠResult . success ( response ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresult Ġ= Ġrepository . fetch Movies (" test - query ", Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMov ies Result . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected Item , Ġresult . items . first OrNull ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Page . Next ( 2 ), Ġresult . page ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMov ies Result . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Response Ġmut Ġbe ĠMov ies Result . Success , Ġbut Ġit Ġis Ġ$ result ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ fetch Movies _ is Success _ page Finished () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= ĠService Mock () ĊĠĠĠĠĠĠĠ Ġval Ġrepository Ġ= ĠMovie Repository Impl ( service ) ĊĠĠĠĠĠĠĠ Ġval Ġmovie Ġ= ĠThe Movie Database Service . Movie ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposter _ path Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠThe Movie Database Service . ListResponse ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= ĠlistOf ( movie ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal _ results Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal _ pages Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Item Ġ= ĠMovie ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposter Path Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" test " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . movies Response Ġ= ĠResult . success ( response ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresult Ġ= Ġrepository . fetch Movies (" test - query ", Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMov ies Result . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected Item , Ġresult . items . first OrNull ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Page . Finish , Ġresult . page ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMov ies Result . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Response Ġmut Ġbe ĠMov ies Result . Success , Ġbut Ġit Ġis Ġ$ result ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ fetch Movies _ isEmpty Query () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= ĠService Mock () ĊĠĠĠĠĠĠĠ Ġval Ġrepository Ġ= ĠMovie Repository Impl ( service ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresult Ġ= Ġrepository . fetch Movies ("", Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMov ies Result . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Response Ġmut Ġbe ĠMov ies Result . Failure . Reason . Empty Query , Ġbut Ġit Ġis Ġ$ result ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMov ies Result . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Movies Result . Failure . Reason . Empty Query , Ġresult . reason ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ fetch Movies _ is Invalid Page () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= ĠService Mock () ĊĠĠĠĠĠĠĠ Ġval Ġrepository Ġ= ĠMovie Repository Impl ( service ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresult Ġ= Ġrepository . fetch Movies (" test - query ", Ġ 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMov ies Result . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Response Ġmut Ġbe ĠMov ies Result . Failure . Reason . Invalid Page , Ġbut Ġit Ġis Ġ$ result ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMov ies Result . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Movies Result . Failure . Reason . Invalid Page , Ġresult . reason ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ fetch Movies _ is Unauthorized () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= ĠService Mock () ĊĠĠĠĠĠĠĠ Ġval Ġrepository Ġ= ĠMovie Repository Impl ( service ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= ĠResponse Body . create ( null , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse : ĠResponse < The Movie Database Service . ListResponse < The Movie Database Service . Movie >> Ġ= ĠResponse . error ( 4 0 1 , Ġbody ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . movies Response Ġ= ĠResult . failure ( ret rofit 2 . HttpException ( response )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresult Ġ= Ġrepository . fetch Movies (" test - query ", Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMov ies Result . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Response Ġmut Ġbe ĠMov ies Result . Failure . Reason . Unauthorized , Ġbut Ġit Ġis Ġ$ result ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMov ies Result . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Movies Result . Failure . Reason . Unauthorized , Ġresult . reason ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ fetch Movies _ is NotFound () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= ĠService Mock () ĊĠĠĠĠĠĠĠ Ġval Ġrepository Ġ= ĠMovie Repository Impl ( service ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= ĠResponse Body . create ( null , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse : ĠResponse < The Movie Database Service . ListResponse < The Movie Database Service . Movie >> Ġ= ĠResponse . error ( 4 0 4 , Ġbody ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . movies Response Ġ= ĠResult . failure ( ret rofit 2 . HttpException ( response )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresult Ġ= Ġrepository . fetch Movies (" test - query ", Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMov ies Result . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Response Ġmut Ġbe ĠMov ies Result . Failure . Reason . NotFound , Ġbut Ġit Ġis Ġ$ result ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMov ies Result . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Movies Result . Failure . Reason . NotFound , Ġresult . reason ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ fetch Movies _ is Unknown () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= ĠService Mock () ĊĠĠĠĠĠĠĠ Ġval Ġrepository Ġ= ĠMovie Repository Impl ( service ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . movies Response Ġ= ĠResult . failure ( Illegal AccessException ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresult Ġ= Ġrepository . fetch Movies (" test - query ", Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMov ies Result . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Response Ġmut Ġbe ĠMov ies Result . Failure . Reason . Unknown , Ġbut Ġit Ġis Ġ$ result ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMov ies Result . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Movies Result . Failure . Reason . Unknown ( Illegal AccessException ()). java Class , Ġresult . reason . java Class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ fetch Movie Detail _ is Success () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= ĠService Mock () ĊĠĠĠĠĠĠĠ Ġval Ġrepository Ġ= ĠMovie Repository Impl ( service ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Post er Path Ġ= Ġ" test - path " ĊĠĠĠĠĠĠĠ Ġval Ġexpected Movie Ġ= ĠThe Movie Database Service . Movie ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" test - title ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposter _ path Ġ= Ġexpected Post er Path ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Image Ġ= ĠThe Movie Database Service . Image ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile _ path Ġ= Ġ" test " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Cast Ġ= ĠThe Movie Database Service . Cast ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" test - name ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter Ġ= Ġ" test - character " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Cre w Ġ= ĠThe Movie Database Service . Cre w ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠĠ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" test - name " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Back drop Path Ġ= Ġ" text - backdrop " ĊĠĠĠĠĠĠĠ Ġval Ġexpected Item Ġ= ĠThe Movie Database Service . Movie Detail ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposter _ path Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġback drop _ path Ġ= Ġexpected Back drop Path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverview Ġ= Ġ" test - overview ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelease _ date Ġ= Ġ" 2 0 2 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġruntime Ġ= Ġ 1 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcredits Ġ= ĠThe Movie Database Service . Credit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcast Ġ= ĠlistOf ( expected Cast ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcre w Ġ= ĠlistOf ( expected Cre w ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecommendations Ġ= ĠThe Movie Database Service . ListResponse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= ĠlistOf ( expected Movie ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal _ pages Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal _ results Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimages Ġ= ĠThe Movie Database Service . Movie Image ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġback dro ps Ġ= ĠlistOf ( expected Image ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost ers Ġ= Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . movie Detail Response Ġ= ĠResult . success ( expected Item ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresult Ġ= Ġrepository . fetch Movie Detail ( 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMovie Detail Result . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmovie Ġ= Ġresult . movie ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġback drop Ġ= Ġmovie . back dro ps . first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcast Ġ= Ġmovie . casts . first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecommendation Ġ= Ġmovie . recommend ations . first OrNull () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected Item . id , Ġmovie . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected Item . title , Ġmovie . title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected Item . overview , Ġmovie . overview ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected Item . runtime , Ġmovie . runtime ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" https :// image . t mdb . org / t / p / w 5 0 0 ${ expected Back drop Path }", Ġback drop ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ("${ expected Cast . character } Ġ/ Ġ${ expected Cast . name }", Ġcast ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected Movie . id , Ġrecommendation ?. id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected Movie . title , Ġrecommendation ?. title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" https :// image . t mdb . org / t / p / w 5 0 0 $ expected Post er Path ", Ġrecommendation ?. poster Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMovie Detail Result . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Response Ġmut Ġbe ĠMovie Detail Result . Success , Ġbut Ġit Ġis Ġ$ result ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ fetch Movie Detail _ is Failure () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= ĠService Mock () ĊĠĠĠĠĠĠĠ Ġval Ġrepository Ġ= ĠMovie Repository Impl ( service ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . movies Response Ġ= ĠResult . failure ( Illegal AccessException ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresult Ġ= Ġrepository . fetch Movie Detail ( 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMovie Detail Result . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Response Ġmut Ġbe ĠMov ies Result . Failure . Reason . Unknown , Ġbut Ġit Ġis Ġ$ result ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMovie Detail Result . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Movie Detail Result . Failure ( Illegal AccessException ()). java Class , Ġresult . java Class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }