package Ġorg . opp ia . android . data . backends . g ae . api Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Context Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġdagger . Bind s Instance Ċ import Ġdagger . Component Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . mock webserver . Mock Response Ċ import Ġokhttp 3 . mock webserver . Mock WebServer Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . opp ia . android . data . backends . g ae . Network Module Ċ import Ġorg . opp ia . android . testing . network . Mock Platform Parameter Service Ċ import Ġorg . opp ia . android . testing . network . Ret rofit Test Module Ċ import Ġorg . opp ia . android . testing . plat for mp ar ameter . TEST _ BOOLEAN _ PARAM _ NAME Ċ import Ġorg . opp ia . android . testing . plat for mp ar ameter . TEST _ BOOLEAN _ PARAM _ SERVER _ VALUE Ċ import Ġorg . opp ia . android . testing . plat for mp ar ameter . TEST _ INTEGER _ PARAM _ NAME Ċ import Ġorg . opp ia . android . testing . plat for mp ar ameter . TEST _ INTEGER _ PARAM _ SERVER _ VALUE Ċ import Ġorg . opp ia . android . testing . plat for mp ar ameter . TEST _ STRING _ PARAM _ NAME Ċ import Ġorg . opp ia . android . testing . plat for mp ar ameter . TEST _ STRING _ PARAM _ SERVER _ VALUE Ċ import Ġorg . ro bo lectric . annotation . Looper Mode Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . mos hi . M oshi Converter Factory Ċ import Ġretrofit 2 . mock . Mock Ret rofit Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Qualifier Ċ import Ġjavax . inject . Singleton Ċ Ċ /** Ċ Ġ* ĠTests Ġfor Ġ[ Platform Parameter Service ] Ġretrofit Ġinstance Ġusing Ċ Ġ* Ġ[ org . opp ia . android . testing . network . Mock Platform Parameter Service ]. Ċ Ġ*/ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ @ Looper Mode ( Looper Mode . Mode . PA USED ) Ċ class ĠPlatform Parameter Service Test Ġ{ ĊĊĠ Ġ@ field :[ Inject ĠMock Platform Parameter Service ] ĊĠ Ġlateinit Ġvar Ġmock Platform Parameter Service : ĠPlatform Parameter Service ĊĊĠ Ġprivate Ġlateinit Ġvar Ġmock WebServer : ĠMock WebServer ĊĊĠ Ġ@ Before ĊĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠ ĠsetUp Test Application Component () ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Platform Parameter Service _ setUp Network Request To Get Platform Parameter _ verify The Request () Ġ{ ĊĠĠĠ Ġval Ġplatform Parameter Service Ġ= ĠsetUp Intercept ed Platform Parameter Service () ĊĠĠĠ Ġmock WebServer . enqueue ( Mock Response (). set Body ("{} ")) ĊĊĠĠĠ Ġplatform Parameter Service . get Platform Parameters ByVersion (" 1 "). execute () ĊĠĠĠ Ġval Ġintercept ed Request Ġ= Ġmock WebServer . take Request () ĊĊĠĠĠ Ġval Ġapp Version Ġ= Ġintercept ed Request . request Url ?. query Parameter (" app _ version ") ĊĠĠĠ ĠassertThat ( app Version ). isEqualTo (" 1 ") ĊĊĠĠĠ Ġval Ġplatform Type Ġ= Ġintercept ed Request . request Url ?. query Parameter (" platform _ type ") ĊĠĠĠ ĠassertThat ( platform Type ). isEqualTo (" Android ") ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Platform Parameter Service _ get Platform Parameter Using Mock Service _ verify Successful Response () Ġ{ ĊĠĠĠ Ġval Ġresponse Ġ= Ġmock Platform Parameter Service ĊĠĠĠĠĠ Ġ. get Platform Parameters ByVersion ( version Ġ= Ġ" 1 ") ĊĠĠĠĠĠ Ġ. execute () ĊĠĠĠ ĠassertThat ( response . is Successful ). isTrue () ĊĊĠĠĠ Ġval Ġresponse Body Ġ= Ġresponse . body () ĊĠĠĠ ĠassertThat ( response Body ). isNotNull () ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Platform Parameter Service _ get Platform Parameter Using Mock Service _ check For String Param () Ġ{ ĊĠĠĠ Ġval Ġresponse Ġ= Ġmock Platform Parameter Service ĊĠĠĠĠĠ Ġ. get Platform Parameters ByVersion ( version Ġ= Ġ" 1 ") ĊĠĠĠĠĠ Ġ. execute () ĊĠĠĠ Ġval Ġresponse Body Ġ= Ġresponse . body () !! ĊĠĠĠ ĠassertThat ( response Body ). contains Entry ( TEST _ STRING _ PARAM _ NAME , ĠTEST _ STRING _ PARAM _ SERVER _ VALUE ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Platform Parameter Service _ get Platform Parameter Using Mock Service _ check For Integer Param () Ġ{ ĊĠĠĠ Ġval Ġresponse Ġ= Ġmock Platform Parameter Service ĊĠĠĠĠĠ Ġ. get Platform Parameters ByVersion ( version Ġ= Ġ" 1 ") ĊĠĠĠĠĠ Ġ. execute () ĊĠĠĠ Ġval Ġresponse Body Ġ= Ġresponse . body () !! ĊĠĠĠ ĠassertThat ( response Body ). contains Entry ( TEST _ INTEGER _ PARAM _ NAME , ĠTEST _ INTEGER _ PARAM _ SERVER _ VALUE ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Platform Parameter Service _ get Platform Parameter Using Mock Service _ check For Boolean Param () Ġ{ ĊĠĠĠ Ġval Ġresponse Ġ= Ġmock Platform Parameter Service ĊĠĠĠĠĠ Ġ. get Platform Parameters ByVersion ( version Ġ= Ġ" 1 ") ĊĠĠĠĠĠ Ġ. execute () ĊĠĠĠ Ġval Ġresponse Body Ġ= Ġresponse . body () !! ĊĠĠĠ ĠassertThat ( response Body ). contains Entry ( TEST _ BOOLEAN _ PARAM _ NAME , ĠTEST _ BOOLEAN _ PARAM _ SERVER _ VALUE ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠsetUp Test Application Component () Ġ{ ĊĠĠĠ ĠD agger Platform Parameter Service Test _ Test Application Component . builder () ĊĠĠĠĠĠ Ġ. set Application ( Application Provider . getApplicationContext ()) ĊĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠ Ġ. inject ( this ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠsetUp Intercept ed Platform Parameter Service (): ĠPlatform Parameter Service Ġ{ ĊĠĠĠ Ġmock WebServer Ġ= ĠMock WebServer () ĊĠĠĠ Ġval Ġclient Ġ= ĠOk HttpClient . Builder (). build () ĊĊĠĠĠ Ġ// ĠUse Ġretrofit Ġwith Ġthe ĠMock WebServer Ġhere Ġinstead Ġof ĠMock Ret rofit Ġso Ġthat Ġwe Ġcan Ġverify Ġthat ĊĠĠĠ Ġ// Ġthe Ġfull Ġnetwork Ġrequest Ġproperly Ġexecutes . ĠMock Ret rofit Ġand ĠMock WebServer Ġperform Ġthe Ġsame ĊĠĠĠ Ġ// Ġrequest Ġmock ing Ġin Ġdifferent Ġways Ġand Ġwe Ġwant Ġto Ġverify Ġthe Ġfull Ġrequest Ġis Ġexecuted Ġhere . ĊĠĠĠ Ġ// ĠSee Ġhttps :// github . com / square / ret rofit / issues / 2 3 4 0 # issuecomment - 3 0 2 8 5 6 5 0 4 Ġfor Ġmore Ġcontext . ĊĠĠĠ Ġval Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠ Ġ. baseUrl ( mock WebServer . url ("/ ")) ĊĠĠĠĠĠ Ġ. add Converter Factory ( M oshi Converter Factory . create ()) ĊĠĠĠĠĠ Ġ. client ( client ) ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġreturn Ġretrofit . create ( Platform Parameter Service :: class . java ) ĊĠ Ġ} ĊĊĠ Ġ// ĠAnnotation Ġfor ĠMock Platform Parameter Service ĊĠ Ġ@ Qualifier ĊĠ Ġannotation Ġclass ĠMock Platform Parameter Service ĊĊĠ Ġ// ĠTODO (# 8 9 ): ĠMove Ġthis Ġto Ġa Ġcommon Ġtest Ġapplication Ġcomponent . ĊĠ Ġ@ Module ĊĠ Ġclass ĠTest Module Ġ{ ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Context ( application : ĠApplication ): ĠContext Ġ{ ĊĠĠĠĠĠ Ġreturn Ġapplication ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Mock Platform Parameter Service ĊĠĠĠ Ġfun Ġprovide Mock Platform Parameter Service ( mock Ret rofit : ĠMock Ret rofit ): ĠPlatform Parameter Service Ġ{ ĊĠĠĠĠĠ Ġval Ġdelegate Ġ= Ġmock Ret rofit . create ( Platform Parameter Service :: class . java ) ĊĠĠĠĠĠ Ġreturn ĠMock Platform Parameter Service ( delegate ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ// ĠTODO (# 8 9 ): ĠMove Ġthis Ġto Ġa Ġcommon Ġtest Ġapplication Ġcomponent . ĊĠ Ġ@ Singleton ĊĠ Ġ@ Component ( ĊĠĠĠ Ġmodules Ġ= Ġ[ ĊĠĠĠĠĠ ĠTest Module :: class , ĠNetwork Module :: class , ĠRet rofit Test Module :: class ĊĠĠĠ Ġ] ĊĠ Ġ) ĊĠ Ġinterface ĠTest Application Component Ġ{ ĊĠĠĠ Ġ@ Component . Builder ĊĠĠĠ Ġinterface ĠBuilder Ġ{ ĊĠĠĠĠĠ Ġ@ Bind s Instance ĊĠĠĠĠĠ Ġfun Ġset Application ( application : ĠApplication ): ĠBuilder ĊĠĠĠĠĠ Ġfun Ġbuild (): ĠTest Application Component ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinject ( platform Parameter Service Test : ĠPlatform Parameter Service Test ) ĊĠ Ġ} Ċ } Ċ