package Ġcom . yo ss ise ge v . data Ċ Ċ import Ġcom . yo ss ise ge v . data . api . Api Ċ import Ġcom . yo ss ise ge v . data . api . Movie ListResult Ċ import Ġcom . yo ss ise ge v . data . map pers . Details Data Movie Entity Mapper Ċ import Ġcom . yo ss ise ge v . data . map pers . Movie Data Entity Mapper Ċ import Ġcom . yo ss ise ge v . data . repositories . Movies Repository Impl Ċ import Ġcom . yo ss ise ge v . data . utils . Tests Utils Ċ import Ġcom . yo ss ise ge v . domain . Movies Repository Ċ import Ġcom . yo ss ise ge v . domain . common . Domain TestUtils Ċ import Ġcom . yo ss ise ge v . domain . common . Domain TestUtils . Companion . generate Movie Entity List Ċ import Ġcom . yo ss ise ge v . domain . common . Test Movies Cache Ċ import Ġcom . yo ss ise ge v . domain . entities . Movie Details Entity Ċ import Ġio . reactivex . Observable Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . Mockito .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠY oss i ĠSe ge v Ġon Ġ 1 8 / 0 2 / 2 0 1 8 . Ċ Ġ*/ Ċ class ĠMovie Repository Impl Tests Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmovie Data Mapper Ġ= ĠMovie Data Entity Mapper () ĊĠĠĠ Ġprivate Ġval Ġdetails Data Mapper Ġ= ĠDetails Data Movie Entity Mapper () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapi : ĠApi ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmovie Cache : ĠTest Movies Cache ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmovie Repository : ĠMov ies Repository ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġbefore () Ġ{ ĊĠĠĠĠĠĠĠ Ġapi Ġ= Ġmock ( Api :: class . java ) ĊĠĠĠĠĠĠĠ Ġmovie Cache Ġ= ĠTest Movies Cache () ĊĠĠĠĠĠĠĠ Ġmovie Repository Ġ= ĠMov ies Repository Impl ( api , Ġmovie Cache , Ġmovie Data Mapper , Ġdetails Data Mapper ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest When Cache Is NotEmpty Get Movies Returns Cached Movies () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġmovie Cache . save All ( generate Movie Entity List ()) ĊĠĠĠĠĠĠĠ Ġmovie Repository . get Movies (). test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value Ġ{ Ġmovies Ġ-> Ġmovies . size Ġ== Ġ 5 Ġ} ĊĊĠĠĠĠĠĠĠ Ġverify Zero Interactions ( api ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest When Cache IsEmpty Get Movies Returns Movies From Api () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmovie ListResult Ġ= ĠMovie ListResult () ĊĠĠĠĠĠĠĠ Ġmovie ListResult . movies Ġ= ĠTests Utils . generate Movie DataList () ĊĠĠĠĠĠĠĠ Ġ` when `( api . get Pop ular Movies ()). thenReturn ( Observable . just ( movie ListResult )) ĊĠĠĠĠĠĠĠ Ġmovie Repository . get Movies (). test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value Ġ{ Ġmovies Ġ-> Ġmovies . size Ġ== Ġ 5 Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Search Returns Expected Results () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmovie ListResult Ġ= ĠMovie ListResult () ĊĠĠĠĠĠĠĠ Ġmovie ListResult . movies Ġ= ĠTests Utils . generate Movie DataList () ĊĠĠĠĠĠĠĠ Ġ` when `( api . search Movies (" test Ġquery ")). thenReturn ( Observable . just ( movie ListResult )) ĊĠĠĠĠĠĠĠ Ġmovie Repository . search (" test Ġquery "). test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value Ġ{ Ġresults Ġ-> Ġresults . size Ġ== Ġ 5 Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Movie ById Returned Api Movie () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdetails Data Ġ= ĠTests Utils . generate Details Data ( 1 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġ` when `( api . get Movie Details ( 1 0 0 )). thenReturn ( Observable . just ( details Data )) ĊĠĠĠĠĠĠĠ Ġmovie Repository . get Movie ( 1 0 0 ). test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value Ġ{ Ġit . hasValue () Ġ&& Ġit . value Ġ== Ġdetails Data Mapper . map From ( details Data ) Ġ} ĊĠĠĠ Ġ} Ċ }