package Ġpl . d roid con . app . sessions . inter actor Ċ Ċ import Ġcom . n ha ar man . mockito _ kotlin . mock Ċ import Ġcom . n ha ar man . mockito _ kotlin . times Ċ import Ġcom . n ha ar man . mockito _ kotlin . verify Ċ import Ġcom . n ha ar man . mockito _ kotlin . wh enever Ċ import Ġio . reactivex . Observable Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . JUnit 4 Ċ import Ġpl . d roid con . app . data . On Remote Success Ċ import Ġpl . d roid con . app . data . mapper . Session Type Mapper Ċ import Ġpl . d roid con . app . data . mapper . Sessions Mapper Ċ import Ġpl . d roid con . app . data . network . Session Remote Ċ import Ġpl . d roid con . app . data . network . Sessions Service Ċ import Ġpl . d roid con . app . domain . Session Ċ import Ġpl . d roid con . app . speak ers . inter actor . S peak ers Repository Ċ import Ġutil . create Speaker Ċ import Ġjava . io . IOException Ċ Ċ @ RunWith ( JUnit 4 :: class ) Ċ class ĠRemote Sessions Source Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġsessions Service : ĠS essions Service Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġval Ġspeak ers Repository : ĠS peak ers Repository Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġval Ġsuccess : ĠOn Remote Success < List < Session >> Ġ= Ġmock () ĊĊĠĠĠ Ġprivate Ġval Ġsessions Mapper Ġ= ĠS essions Mapper ( Session Type Mapper ()) ĊĊĠĠĠ Ġprivate Ġval Ġsystem UnderTest Ġ= ĠRemote Sessions Source ( sessions Service , Ġsessions Mapper , Ġspeak ers Repository ) ĊĊĠĠĠ Ġprivate Ġval Ġsession Remote Ġ= ĠSession Remote ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsessionId Ġ= Ġ 1 2 3 L , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Type Ġ= Ġ" Talk ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Title Ġ= Ġ" title ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Description Ġ= Ġ" 1 2 3 4 5 6 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspeaker Ids Ġ= ĠlistOf ( 1 , Ġ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Length Ġ= Ġ 4 5 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworkshop Capacity Ġ= Ġ 1 3 ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġspeaker 1 Ġ= Ġcreate Speaker ( 1 ) ĊĠĠĠ Ġprivate Ġval Ġspeaker 2 Ġ= Ġcreate Speaker ( 2 ) ĊĠĠĠ Ġprivate Ġval Ġspeak ers Ġ= ĠlistOf ( speaker 1 , Ġspeaker 2 ) ĊĠĠĠ Ġprivate Ġval Ġresponse Ġ= ĠlistOf ( session Remote ) ĊĠĠĠ Ġprivate Ġval Ġexpected Ġ= Ġsessions Mapper . map ( session Remote , Ġspeak ers ) ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( speak ers Repository . get ()). thenReturn ( Observable . just ( speak ers )) ĊĠĠĠĠĠĠĠ Ġwhenever ( sessions Service . sessions ()). thenReturn ( Observable . just ( response )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` calls Ġsuccess Ġwhen Ġloaded Ġfrom Ġremote `() Ġ{ ĊĠĠĠĠĠĠĠ Ġsystem UnderTest . get ( success ). test () ĊĊĠĠĠĠĠĠĠ Ġverify ( success ). invoke ( listOf ( expected )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` returns Ġremote Ġwhen Ġsubscribed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġsystem UnderTest . get ( success ). test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value ( listOf ( expected )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` does Ġnot Ġcall Ġsuccess Ġwhen Ġempty Ġresponse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( sessions Service . sessions ()). thenReturn ( Observable . just ( emptyList ())) ĊĊĠĠĠĠĠĠĠ Ġsystem UnderTest . get ( success ). test () ĊĊĠĠĠĠĠĠĠ Ġverify ( success , Ġtimes ( 0 )). invoke ( listOf ( expected )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` returns Ġerror Ġwhen Ġspeak ers Ġfailed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= ĠIOException () ĊĠĠĠĠĠĠĠ Ġwhenever ( speak ers Repository . get ()). thenReturn ( Observable . error ( error )) ĊĊĠĠĠĠĠĠĠ Ġsystem UnderTest . get ( success ). test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Error ( error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` returns Ġerror Ġwhen Ġsessions Ġfailed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= ĠIOException () ĊĠĠĠĠĠĠĠ Ġwhenever ( sessions Service . sessions ()). thenReturn ( Observable . error ( error )) ĊĊĠĠĠĠĠĠĠ Ġsystem UnderTest . get ( success ). test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Error ( error ) ĊĠĠĠ Ġ} Ċ }