package Ġcom . example . tam ask oz mer . kotlin rx example . presentation . present ers Ċ Ċ import Ġcom . example . tam ask oz mer . kotlin rx example . domain . inter actors . Get Details Ċ import Ġcom . example . tam ask oz mer . kotlin rx example . presentation . view . Detail View Ċ import Ġcom . example . tam ask oz mer . kotlin rx example . presentation . view . view models . Details ViewModel Ċ import Ġcom . example . tam ask oz mer . kotlin rx example . testutil . Test Scheduler Provider Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . schedul ers . Test Scheduler Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . Mockito .` when ` Ċ import Ġorg . mockito . Mockito . verify Ċ import Ġorg . mockito . Mockito Annotations Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠT am as _ K oz mer Ġon Ġ 7 / 2 1 / 2 0 1 7 . Ċ Ġ*/ Ċ class ĠDetail Presenter Test Ġ{ ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġmock Get Details : ĠGet Details ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġmock View : ĠDetail View ĊĊĠĠĠ Ġlateinit Ġvar Ġdetail Presenter : ĠDetail Presenter ĊĊĠĠĠ Ġlateinit Ġvar Ġtest Scheduler : ĠTest Scheduler ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠMockito Annotations . init Mocks ( this ) ĊĠĠĠĠĠĠĠ Ġtest Scheduler Ġ= ĠTest Scheduler () ĊĠĠĠĠĠĠĠ Ġval Ġtest Scheduler Provider Ġ= ĠTest Scheduler Provider ( test Scheduler ) ĊĠĠĠĠĠĠĠ Ġdetail Presenter Ġ= ĠDetail Presenter ( mock Get Details , Ġtest Scheduler Provider ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Details _ error () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= Ġ" Test Ġerror " ĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= Ġ 1 L ĊĠĠĠĠĠĠĠ Ġval Ġsingle : ĠSingle < Details ViewModel > Ġ= ĠSingle . create Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter Ġ-> Ġemitter . onError ( Exception ( error )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġ` when `( mock Get Details . execute ( userId , Ġfalse )). thenReturn ( single ) ĊĊĠĠĠĠĠĠĠ Ġdetail Presenter . attach View ( mock View ) ĊĠĠĠĠĠĠĠ Ġdetail Presenter . get Details ( userId ) ĊĊĠĠĠĠĠĠĠ Ġtest Scheduler . trigger Actions () ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify ( mock View ). show Loading () ĊĠĠĠĠĠĠĠ Ġverify ( mock View ). hide Loading () ĊĠĠĠĠĠĠĠ Ġverify ( mock View ). show Error ( error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Details _ success () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġdetails Ġ= ĠDetails ViewModel ( emptyList (), Ġempty List (), Ġempty List ()) ĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= Ġ 1 L ĊĠĠĠĠĠĠĠ Ġval Ġsingle : ĠSingle < Details ViewModel > Ġ= ĠSingle . create Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter Ġ-> Ġemitter . on Success ( details ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġ` when `( mock Get Details . execute ( userId , Ġfalse )). thenReturn ( single ) ĊĊĠĠĠĠĠĠĠ Ġdetail Presenter . attach View ( mock View ) ĊĠĠĠĠĠĠĠ Ġdetail Presenter . get Details ( userId ) ĊĊĠĠĠĠĠĠĠ Ġtest Scheduler . trigger Actions () ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify ( mock View ). show Loading () ĊĠĠĠĠĠĠĠ Ġverify ( mock View ). hide Loading () ĊĠĠĠĠĠĠĠ Ġverify ( mock View ). show Details ( details ) ĊĠĠĠ Ġ} Ċ }