package Ġcom . pit ic list udio . play ed next . data . repository . datasource . room Ċ Ċ import Ġandroid . arch . persistence . room . Empty ResultSet Exception Ċ import Ġcom . n ha ar man . mockito _ kotlin .* Ċ import Ġcom . pit ic list udio . play ed next . data . entity . mapper . datas ources . game . Room Game Mapper Ċ import Ġcom . pit ic list udio . play ed next . data . entity . room . Room Game Ċ import Ġcom . pit ic list udio . play ed next . data . entity . room . Room Game Proxy Ċ import Ġcom . pit ic list udio . play ed next . data . repository . datasource . room . company . Room Company Repository Impl Ċ import Ġcom . pit ic list udio . play ed next . data . repository . datasource . room . fr anch ise . Room Collection Repository Impl Ċ import Ġcom . pit ic list udio . play ed next . data . repository . datasource . room . game . Game Save Exception Ċ import Ġcom . pit ic list udio . play ed next . data . repository . datasource . room . game . Room Game Repository Impl Ċ import Ġcom . pit ic list udio . play ed next . data . repository . datasource . room . game . Room Game Service Ċ import Ġcom . pit ic list udio . play ed next . data . repository . datasource . room . genre . Room Genre Repository Impl Ċ import Ġcom . pit ic list udio . play ed next . data . repository . datasource . room . image . Room Game Image Repository Impl Ċ import Ġcom . pit ic list udio . play ed next . data . repository . datasource . room . platform . Room Game Platform Repository Impl Ċ import Ġcom . pit ic list udio . play ed next . domain . model . Game Ċ import Ġcom . pit ic list udio . play ed next . test . factory . Game Factory . Factory . make Game Ċ import Ġcom . pit ic list udio . play ed next . test . factory . Game Factory . Factory . make Room Game Ċ import Ġcom . pit ic list udio . play ed next . util . Rx Schedulers Override Rule Ċ import Ġio . reactivex . Back pressure Strategy Ċ import Ġio . reactivex . Comp letable Ċ import Ġio . reactivex . Flow able Ċ import Ġio . reactivex . ob servers . Test Observer Ċ import Ġio . reactivex . subscribers . Test Subscriber Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . jupiter . api . Assertions . assertNotNull Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . DisplayName Ċ import Ġorg . junit . jupiter . api . Nested Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . mockito . Argument Matchers .* Ċ Ċ internal Ġclass ĠRoom Game Repository Impl Test Ġ{ ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġ@ DisplayName (" Given ĠRoom Game Repository Impl Ġinstance ") ĊĠĠĠ Ġinner Ġclass ĠLocal Impl Instance Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Rule ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval Ġm Override Schedulers Rule Ġ= ĠRx Schedulers Override Rule () ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdao Service : ĠRoom Game Service Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmapper : ĠRoom Game Mapper Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcompany Repository Impl : ĠRoom Company Repository Impl Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġimages Repository Impl : ĠRoom Game Image Repository Impl Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcollection Repository Impl : ĠRoom Collection Repository Impl Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġgenre Repository Impl : ĠRoom Genre Repository Impl Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġplatform Repository Impl : ĠRoom Game Platform Repository Impl Ġ= Ġmock () ĊĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġrepository : ĠRoom Game Repository Impl ĊĊĠĠĠĠĠĠĠ Ġ@ BeforeEach ĊĠĠĠĠĠĠĠ Ġinternal Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset ( dao Service , Ġmapper , Ġcompany Repository Impl , Ġimages Repository Impl , Ġcollection Repository Impl , Ġgenre Repository Impl , Ġplatform Repository Impl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository Ġ= ĠRoom Game Repository Impl ( dao Service , Ġcompany Repository Impl , Ġimages Repository Impl , Ġcollection Repository Impl , Ġgenre Repository Impl , Ġplatform Repository Impl , Ġmapper ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Nested ĊĠĠĠĠĠĠĠ Ġ@ DisplayName (" When Ġload Ġis Ġcalled ") ĊĠĠĠĠĠĠĠ Ġinner Ġclass ĠLoad Is Called Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġobserver : ĠTest Subscriber < Game >? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġmodel Ġ= Ġmake Room Game () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġentity Ġ= Ġmake Game () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġde vs Ġ= Ġentity . developers ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġpub s Ġ= Ġentity . publish ers ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġg ens Ġ= Ġentity . genres ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġcol Ġ= Ġentity . collection ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġscreenshots Ġ= Ġentity . images ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ BeforeEach ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflow able Ġ= ĠFlow able . create < List < Room Game >> ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . onNext ( listOf ( model )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . onNext ( listOf ( model )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĠBack pressure Strategy . MISSING ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( dao Service . findById ( 1 0 )). thenReturn ( flow able ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( mapper . map From Data Layer ( any OrNull ())). thenReturn ( entity ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( company Repository Impl . load De velopers For Game ( any Int ())). thenReturn ( Flow able . just ( devs )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( company Repository Impl . load Publish ers For Game ( any Int ())). thenReturn ( Flow able . just ( pub s )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( images Repository Impl . load For Game ( any Int ())). thenReturn ( Flow able . just ( screenshots )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( genre Repository Impl . load For Game ( any Int ())). thenReturn ( Flow able . just ( gens )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( collection Repository Impl . load For Game ( any Int ())). thenReturn ( Flow able . just ( listOf ( col !! ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( platform Repository Impl . load For Game ( any Int ())). thenReturn ( Flow able . just ( entity . platforms )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver Ġ= Ġrepository . load ( 1 0 ). test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġrequest ĠDAO ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġdao Is Called () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( dao Service ). findById ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġrequest Ġdevelopers Ġfor Ġgame ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġrequests De velopers () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( company Repository Impl ). load De velopers For Game ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġrequest Ġpublish ers Ġfor Ġgame ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġrequests Publish ers () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( company Repository Impl ). load Publish ers For Game ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġrequest Ġgen res Ġfor Ġgame ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġrequests Gen res () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( genre Repository Impl ). load For Game ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġrequest Ġimages Ġfor Ġgame ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġrequests Images () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( images Repository Impl ). load For Game ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġrequest Ġcollection Ġfor Ġgame ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġrequests Collection () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( collection Repository Impl ). load For Game ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġrequest Ġplatforms Ġfor Ġgame ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġrequests Platforms () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( platform Repository Impl ). load For Game ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġmap Ġdao Service Ġresult ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġmap Is Called () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( mapper ). map From Data Layer ( arg For Which Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . game Ġ== Ġmodel Ġ&& Ġthis . collection Ġ== Ġcol ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġthis . developers Ġ== Ġde vs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġpublish ers Ġ== Ġpub s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġimages Ġ== Ġscreenshots ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġgen res Ġ== Ġg ens ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġplatforms Ġ== Ġentity . platforms ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġemit Ġwithout Ġerrors ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġwithout Errors () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Not Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Value Count ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert No Errors () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Value ( entity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Nested ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" And Ġimages Ġrepository Ġfails Ġto Ġload ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinner Ġclass ĠImage Error Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġerror Ġ= ĠThrowable (" foo ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ BeforeEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( images Repository Impl . load For Game ( any Int ())). thenReturn ( Flow able . error ( error )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver Ġ= Ġrepository . load ( 1 0 ). test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġemit Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġwithout Errors () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Not Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert No Values () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Error ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Nested ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" And Ġdevelopers Ġrepository Ġfails Ġto Ġload ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinner Ġclass ĠDevelopers Error Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġerror Ġ= ĠThrowable (" foo ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ BeforeEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( company Repository Impl . load De velopers For Game ( any Int ())). thenReturn ( Flow able . error ( error )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver Ġ= Ġrepository . load ( 1 0 ). test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġemit Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġwithout Errors () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Not Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert No Values () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Error ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Nested ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" And Ġpublish ers Ġrepository Ġfails Ġto Ġload ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinner Ġclass ĠPublish ers Error Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġerror Ġ= ĠThrowable (" foo ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ BeforeEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( company Repository Impl . load Publish ers For Game ( any Int ())). thenReturn ( Flow able . error ( error )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver Ġ= Ġrepository . load ( 1 0 ). test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġemit Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġwithout Errors () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Not Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert No Values () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Error ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Nested ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" And Ġcollection Ġrepository Ġfails Ġto Ġload ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinner Ġclass ĠCollection Error Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġerror Ġ= ĠThrowable (" foo ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ BeforeEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( collection Repository Impl . load For Game ( any Int ())). thenReturn ( Flow able . error ( error )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver Ġ= Ġrepository . load ( 1 0 ). test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġemit Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġwithout Errors () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Not Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert No Values () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Error ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Nested ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" And Ġcollection Ġrepository Ġemits Ġempty Ġlist ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinner Ġclass ĠCollection Empty Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ BeforeEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( collection Repository Impl . load For Game ( any Int ())). thenReturn ( Flow able . just ( listOf ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver Ġ= Ġrepository . load ( 1 0 ). test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġemit Ġwithout Ġcollection ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġwithout Errors () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Not Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Value Count ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert No Errors () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Value ( entity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Nested ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" And Ġgenre Ġrepository Ġfails Ġto Ġload ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinner Ġclass ĠGen re Error Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġerror Ġ= ĠThrowable (" foo ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ BeforeEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( genre Repository Impl . load For Game ( any Int ())). thenReturn ( Flow able . error ( error )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver Ġ= Ġrepository . load ( 1 0 ). test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġemit Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġwithout Errors () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Not Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert No Values () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Error ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Nested ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" And Ġplatform Ġrepository Ġfails Ġto Ġload ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinner Ġclass ĠPlatform Error Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġerror Ġ= ĠThrowable (" foo ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ BeforeEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( platform Repository Impl . load For Game ( any Int ())). thenReturn ( Flow able . error ( error )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver Ġ= Ġrepository . load ( 1 0 ). test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġemit Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġwithout Errors () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Not Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert No Values () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Error ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Nested ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" And Ġthere Ġare Ġno Ġresults Ġin Ġdatabase ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinner Ġclass ĠNo Results Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ BeforeEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset ( company Repository Impl , Ġgenre Repository Impl , Ġimages Repository Impl , Ġcollection Repository Impl , Ġplatform Repository Impl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflow able Ġ= ĠFlow able . create < List < Room Game >> ({ Ġit . onNext ( listOf ()) Ġ}, ĠBack pressure Strategy . MISSING ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( dao Service . findById ( any Long ())). thenReturn ( flow able ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver Ġ= Ġrepository . load ( 1 0 ). test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġemit Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġwithout Errors () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Not Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert No Values () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Error Ġ{ Ġit Ġis ĠEmpty ResultSet Exception Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Zero Interactions ( company Repository Impl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Zero Interactions ( genre Repository Impl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Zero Interactions ( images Repository Impl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Zero Interactions ( collection Repository Impl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Zero Interactions ( platform Repository Impl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Nested ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" And ĠGames Dao Ġemits Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinner Ġclass ĠGame Room Error Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġerror Ġ= ĠThrowable (" foo ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ BeforeEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset ( company Repository Impl , Ġgenre Repository Impl , Ġimages Repository Impl , Ġcollection Repository Impl , Ġplatform Repository Impl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflow able Ġ= ĠFlow able . create < List < Room Game >> ({ Ġit . onError ( error ) Ġ}, ĠBack pressure Strategy . MISSING ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( dao Service . findById ( any Long ())). thenReturn ( flow able ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver Ġ= Ġrepository . load ( 1 0 ). test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġemit Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġwithout Errors () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Not Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert No Values () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Error ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Zero Interactions ( company Repository Impl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Zero Interactions ( genre Repository Impl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Zero Interactions ( images Repository Impl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Zero Interactions ( collection Repository Impl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Zero Interactions ( platform Repository Impl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Nested ĊĠĠĠĠĠĠĠ Ġ@ DisplayName (" When Ġsave Ġis Ġcalled ") ĊĠĠĠĠĠĠĠ Ġinner Ġclass ĠSave Is Called Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġsource Ġ= Ġmake Game () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġdata Ġ= ĠRoom Game Proxy ( make Room Game ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġobserver : ĠTest Observer < Void >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ BeforeEach ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( dao Service . insert ( any OrNull ())). thenReturn ( 1 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( mapper . map Into Data Layer Model ( source )). thenReturn ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( company Repository Impl . save Developer For Game ( any Int (), Ġany OrNull ())). thenReturn ( Comp letable . complete ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( company Repository Impl . save Publisher For Game ( any Int (), Ġany OrNull ())). thenReturn ( Comp letable . complete ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( images Repository Impl . save For Game ( any OrNull ())). thenReturn ( Comp letable . complete ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( collection Repository Impl . save For Game ( any Int (), Ġany OrNull ())). thenReturn ( Comp letable . complete ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( platform Repository Impl . save For Game ( any Int (), Ġany OrNull ())). thenReturn ( Comp letable . complete ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( genre Repository Impl . save Genre For Game ( any Int (), Ġany OrNull ())). thenReturn ( Comp letable . complete ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver Ġ= Ġrepository . save ( source ). test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġmaps Ġentity Ġinto ĠDao Ġmodel ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġmaps Entity () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( mapper ). map Into Data Layer Model ( source ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġinserts Ġinto ĠDAO ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġis Inserted () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( dao Service ). insert ( data . game ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġrequests Ġto Ġsave Ġdevelopers ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġsaves De velopers () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . developers . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( company Repository Impl ). save Developer For Game ( source . id , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġrequests Ġto Ġsave Ġpublish ers ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġsaves Publish ers () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . publish ers . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( company Repository Impl ). save Publisher For Game ( source . id , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġrequests Ġto Ġsave Ġgen res ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġsaves Gen res () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . genres . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( genre Repository Impl ). save Genre For Game ( source . id , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġrequests Ġto Ġsave Ġplatforms ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġsaves Platforms () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . platforms . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( platform Repository Impl ). save For Game ( source . id , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġrequests Ġto Ġsave Ġimages ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġsaves Images () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . images . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( images Repository Impl ). save For Game ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġrequests Ġto Ġsave Ġcollection ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġsaves Collection () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . collection ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( collection Repository Impl ). save For Game ( source . id , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġemits Ġcompletion ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġemits Complete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert No Values () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert No Errors () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Nested ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" And Ġfails Ġto Ġsave ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinner Ġclass ĠSave Failed Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ BeforeEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset ( dao Service , Ġcompany Repository Impl , Ġgenre Repository Impl , Ġplatform Repository Impl , Ġimages Repository Impl , Ġcollection Repository Impl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( dao Service . insert ( any OrNull ())). thenReturn ( 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver Ġ= Ġrepository . save ( source ). test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġemits Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġemits Error () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert No Values () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Error ( Game Save Exception :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Not Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġdoes Ġnot Ġsave Ġdevelopers ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġsaves De velopers () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . developers . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( company Repository Impl , Ġnever ()). save Developer For Game ( source . id , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġdoes Ġnot Ġsaves Ġpublish ers ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġsaves Publish ers () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . publish ers . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( company Repository Impl , Ġnever ()). save Publisher For Game ( source . id , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġdoes Ġnot Ġsaves Ġgen res ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġsaves Gen res () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . genres . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( genre Repository Impl , Ġnever ()). save Genre For Game ( source . id , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġdoes Ġnot Ġsave Ġplatforms ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġsaves Platforms () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . platforms . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( platform Repository Impl , Ġnever ()). save For Game ( source . id , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġdoes Ġnot Ġsave Ġimages ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġsaves Images () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . images . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( images Repository Impl , Ġnever ()). save For Game ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġdoes Ġnot Ġsaves Ġcollection ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġsaves Collection () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . collection ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( collection Repository Impl , Ġnever ()). save For Game ( source . id , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Nested ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" And Ġgame Ġdoes Ġnot Ġhave Ġcollection ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinner Ġclass ĠWithout Collection Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġsource Ġ= Ġmake Game ( collection Ġ= Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ BeforeEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset ( collection Repository Impl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( mapper . map Into Data Layer Model ( source )). thenReturn ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver Ġ= Ġrepository . save ( source ). test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġemits Ġcompletion ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġemits Error () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert No Values () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert No Errors () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġskip s Ġcollection Ġsaving ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġsaves De velopers () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Zero Interactions ( collection Repository Impl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Nested ĊĠĠĠĠĠĠĠ Ġ@ DisplayName (" When Ġsearch Ġis Ġcalled ") ĊĠĠĠĠĠĠĠ Ġinner Ġclass ĠSearch Called Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġdata 1 Ġ= Ġmake Room Game () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġdata 2 Ġ= Ġmake Room Game () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġdata 3 Ġ= Ġmake Room Game () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġobserver : ĠTest Subscriber < List < Game >> ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġentity 1 Ġ= Ġmake Game () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ BeforeEach ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflow able Ġ= ĠFlow able . create < List < Room Game >> ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . onNext ( listOf ( data 1 , Ġdata 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . onNext ( listOf ( data 1 , Ġdata 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . onNext ( listOf ( data 1 , Ġdata 2 , Ġdata 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĠBack pressure Strategy . MISSING ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( dao Service . find ByName ( any String ())). thenReturn ( flow able ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( mapper . map From Data Layer ( any OrNull ())). thenReturn ( entity 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver Ġ= Ġrepository . search (" foo ", Ġ 0 , Ġ 1 0 ). test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġsearches Ġon ĠDAO ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġdao Is Called () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( dao Service ). find ByName (" foo ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġmaps Ġresult Ġinto ĠGame Entities ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġis Mapped () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( mapper , Ġtimes ( 2 )). map From Data Layer ( arg For Which Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . game Ġ== Ġdata 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( mapper , Ġtimes ( 2 )). map From Data Layer ( arg For Which Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . game Ġ== Ġdata 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( mapper ). map From Data Layer ( arg For Which Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . game Ġ== Ġdata 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġemits Ġwithout Ġerrors ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġwithout Errors () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserver ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert No Errors () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Value Count ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Not Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Value At ( 0 , Ġ{ Ġit . size Ġ== Ġ 2 Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Value At ( 1 , Ġ{ Ġit . size Ġ== Ġ 3 Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }