package Ġbr . u fs . n ub ank challenge . core . tests . presentation . be haviors Ċ Ċ import Ġbr . u fs . n ub ank challenge . core . domain . errors . Infrastructure Error Ċ import Ġbr . u fs . n ub ank challenge . core . domain . errors . Networking Issue Ċ import Ġbr . u fs . n ub ank challenge . core . presentation . be haviors . Be haviors Presenter Ċ import Ġbr . u fs . n ub ank challenge . core . presentation . error state . Error State View Ċ import Ġbr . u fs . n ub ank challenge . core . presentation . loading . Loading View Ċ import Ġbr . u fs . n ub ank challenge . core . presentation . networking . Networking Error View Ċ import Ġbr . u fs . n ub ank challenge . core . tests . util . Sil ent Observer Ċ import Ġcom . n ha ar man . mockito _ kotlin . in Order Ċ import Ġcom . n ha ar man . mockito _ kotlin . mock Ċ import Ġcom . n ha ar man . mockito _ kotlin . never Ċ import Ġcom . n ha ar man . mockito _ kotlin . verify Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . functions . Action Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ /** Ċ Ġ* Ċ Ġ* ĠCreated Ġby Ġ@ ub ir atan f so ares Ċ Ġ* Ċ Ġ*/ Ċ Ċ class ĠBe haviors Presenter Tests Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġui Scheduler Ġ= ĠS chedulers . tr amp oline () ĊĊĠĠĠ Ġlateinit Ġvar Ġshow Error State : ĠAction ĊĠĠĠ Ġlateinit Ġvar Ġhide Error State : ĠAction ĊĠĠĠ Ġlateinit Ġvar Ġreport Networking Error : ĠAction ĊĠĠĠ Ġlateinit Ġvar Ġshow Loading : ĠAction ĊĠĠĠ Ġlateinit Ġvar Ġhide Loading : ĠAction ĊĊĠĠĠ Ġlateinit Ġvar Ġpresenter : ĠBe haviors Presenter ĊĊĠĠĠ Ġ@ Before Ġfun Ġ` before Ġeach Ġtest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Error State Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġhide Error State Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġreport Networking Error Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġshow Loading Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġhide Loading Ġ= Ġmock () ĊĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġobject Ġ: ĠError State View , ĠNetwork ing Error View , ĠLoading View Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshow Loading (): ĠAction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġshow Loading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhide Loading (): ĠAction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġhide Loading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġreport Networking Error ( issue : ĠNetwork ing Issue ): ĠAction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġreport Networking Error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshow Error State ( error : ĠInfrastructure Error ): ĠAction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġshow Error State ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhide Error State (): ĠAction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġhide Error State ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpresenter Ġ= ĠBe haviors Presenter ( view , Ġui Scheduler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` should Ġintegrate Ġmultiple Ġbehaviors , Ġinfrastructure Ġerror `() Ġ{ ĊĠĠĠĠĠĠĠ ĠObservable . error < Any >( Infrastructure Error . Remote System Down ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( presenter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( Sil ent Observer ) ĊĊĠĠĠĠĠĠĠ Ġverify ( show Error State ). run () ĊĠĠĠĠĠĠĠ Ġverify ( report Networking Error , Ġnever ()). run () ĊĊĠĠĠĠĠĠĠ Ġ` verify Ġloading Ġactions `() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` should Ġintegrate Ġmultiple Ġbehaviors , Ġnetworking Ġerror `() Ġ{ ĊĠĠĠĠĠĠĠ ĠObservable . error < Any >( Networking Issue . Connection Spi ke ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( presenter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( Sil ent Observer ) ĊĊĠĠĠĠĠĠĠ Ġverify ( report Networking Error ). run () ĊĠĠĠĠĠĠĠ Ġverify ( show Error State , Ġnever ()). run () ĊĊĠĠĠĠĠĠĠ Ġ` verify Ġloading Ġactions `() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ` verify Ġloading Ġactions `() Ġ{ ĊĠĠĠĠĠĠĠ Ġin Order ( show Loading , Ġhide Loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( show Loading ). run () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( hide Loading ). run () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }