package Ġcom . ew ings a . o hy eah . messages Ċ Ċ import Ġcom . ew ings a . o hy eah . database . Message Ċ import Ġcom . ew ings a . o hy eah . database . Message Dao Ċ import Ġcom . ew ings a . o hy eah . database . Sender Ċ import Ġcom . ew ings a . o hy eah . database . Sender Message Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . argument Captor Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġio . reactivex . Maybe Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . schedul ers . Schedulers . tr amp oline Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ class ĠMessages Repository Test Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġinter actor : ĠMessages Contract . Interactor Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġvar Ġmessage Dao : ĠMessage Dao Ġ= Ġmock () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmessages Repository : ĠMessages Repository ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġmessages Repository Ġ= ĠMessages Repository ( message Dao , Ġtr amp oline (), Ġtr amp oline ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Interactor ( inter actor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Fetch Messages () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsender Maybe Ġ= ĠMaybe . just ( SEND ER ) ĊĠĠĠĠĠĠĠ Ġval Ġmessages Observable Ġ= ĠObservable . from Array ( listOf ( MESSAGE , ĠMESSAGE _ 2 )) ĊĊĠĠĠĠĠĠĠ Ġwhenever ( message Dao . get Existing Conversation ( SEND ER _ ID )). thenReturn ( sender Maybe ) ĊĠĠĠĠĠĠĠ Ġwhenever ( message Dao . find Messages ( SEND ER _ ID )). thenReturn ( messages Observable ) ĊĊĠĠĠĠĠĠĠ Ġmessages Repository . fetch Messages ( SEND ER _ ID ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcapt or Ġ= Ġargument Captor < List < Sender Message >>() ĊĊĠĠĠĠĠĠĠ Ġverify ( inter actor ). on Messages Retrie ved ( capt or . capture ()) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( MESSAGE _ ID , Ġcapt or . first Value [ 0 ]. message . message Id ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( MESSAGE _ ID _ 2 , Ġcapt or . first Value [ 1 ]. message . message Id ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( SEND ER _ NAME , Ġcapt or . first Value [ 0 ]. sender . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMESSAGE _ TEXT Ġ= Ġ" message " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMESSAGE _ ID Ġ= Ġ 1 L ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMESSAGE _ ID _ 2 Ġ= Ġ 1 1 L ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠS ENDER _ NAME Ġ= Ġ" sender " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠS ENDER _ ID Ġ= Ġ 2 L ĊĊĠĠĠĠĠĠĠ Ġval ĠMESSAGE Ġ= ĠMessage ( MESSAGE _ ID , ĠMESSAGE _ TEXT , ĠS ENDER _ ID , Ġ 3 L ) ĊĠĠĠĠĠĠĠ Ġval ĠMESSAGE _ 2 Ġ= ĠMessage ( MESSAGE _ ID _ 2 , ĠMESSAGE _ TEXT , ĠS ENDER _ ID , Ġ 3 L ) ĊĠĠĠĠĠĠĠ Ġval ĠS ENDER Ġ= ĠSender ( SEND ER _ ID , ĠS ENDER _ NAME , Ġnull ) ĊĠĠĠ Ġ} Ċ } Ċ