package Ġio . github . reactive circ us . stream lined . testing . di Ċ Ċ import Ġdagger . Lazy Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġio . github . reactive circ us . stream lined . remote . api . Mock News ApiService Ċ import Ġio . github . reactive circ us . stream lined . remote . api . News ApiService Ċ import Ġokhttp 3 . Call Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . mock . Mock Ret rofit Ċ import Ġretrofit 2 . mock . Network Behavior Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Module Ċ internal Ġobject ĠTest Service Module Ġ{ ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġok HttpClient (): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( Http Logging Interceptor (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevel Ġ= ĠHttp Logging Interceptor . Level . BASIC ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġretrofit ( ok httpClient : ĠLazy < Ok HttpClient >): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( D UMMY _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. call Factory ( object Ġ: ĠCall . Factory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnew Call ( request : ĠRequest ): ĠCall Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġok httpClient . get (). new Call ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġnetwork Behavior (): ĠNetwork Behavior Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠNetwork Behavior . create (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmake Ġsure Ġbehavior Ġis Ġdeterministic ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Variance Percent ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġno Ġdelay Ġby Ġdefault ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Delay ( 0 , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġno Ġfailure Ġby Ġdefault ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Failure Percent ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġnews ApiService ( ĊĠĠĠĠĠĠĠ Ġnetwork Behavior : ĠNetwork Behavior , ĊĠĠĠĠĠĠĠ Ġretrofit : ĠRet rofit ĊĠĠĠ Ġ): ĠNews ApiService Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMock News ApiService ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate Ġ= ĠMock Ret rofit . Builder ( ret rofit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġnetwork Behavior ( network Behavior ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (). create ( News ApiService :: class . java ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġconst Ġval ĠTEST _ SERVER _ PORT Ġ= Ġ 5 _ 0 0 0 Ċ private Ġconst Ġval ĠD UMMY _ URL Ġ= Ġ" http :// localhost :$ TEST _ SERVER _ PORT /" Ċ