/* Ċ Ġ* ĠDesign ed Ġand Ġdeveloped Ġby Ġ 2 0 2 0 Ġsky do ves Ġ( Ja ew o ong ĠE um ) Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . sky do ves . dis ney mot ions . network Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġjava . io . IOException Ċ import Ġjava . nio . charset . StandardCharsets Ċ import Ġokhttp 3 . mock webserver . Mock Response Ċ import Ġokhttp 3 . mock webserver . Mock WebServer Ċ import Ġok io . buffer Ċ import Ġok io . source Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . JUnit 4 Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ Ċ @ RunWith ( JUnit 4 :: class ) Ċ abstract Ġclass ĠApi Abstract < T > Ġ{ ĊĊĠ Ġ@ Rule ĊĠ Ġ@ Jvm Field ĊĠ Ġval Ġinstant Executor Rule : ĠInstant Task Executor Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠ Ġlateinit Ġvar Ġmock WebServer : ĠMock WebServer ĊĊĠ Ġ@ Throws ( IOException :: class ) ĊĠ Ġ@ Before ĊĠ Ġfun Ġmock Server () Ġ{ ĊĠĠĠ Ġmock WebServer Ġ= ĠMock WebServer () ĊĠĠĠ Ġmock WebServer . start () ĊĠ Ġ} ĊĊĠ Ġ@ Throws ( IOException :: class ) ĊĠ Ġ@ After ĊĠ Ġfun Ġstop Server () Ġ{ ĊĠĠĠ Ġmock WebServer . shutdown () ĊĠ Ġ} ĊĊĠ Ġ@ Throws ( IOException :: class ) ĊĠ Ġfun Ġenqueue Response ( fileName : ĠString ) Ġ{ ĊĠĠĠ Ġenqueue Response ( fileName , Ġempty Map ()) ĊĠ Ġ} ĊĊĠ Ġ@ Throws ( IOException :: class ) ĊĠ Ġprivate Ġfun Ġenqueue Response ( fileName : ĠString , Ġheaders : ĠMap < String , ĠString >) Ġ{ ĊĠĠĠ Ġval ĠinputStream Ġ= Ġjava Class . class Loader !!. getResource AsStream (" api - response /$ fileName ") ĊĠĠĠ Ġval Ġsource Ġ= ĠinputStream . source (). buffer () ĊĠĠĠ Ġval Ġmock Response Ġ= ĠMock Response () ĊĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġheaders ) Ġ{ ĊĠĠĠĠĠ Ġmock Response . add Header ( key , Ġvalue ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġmock WebServer . enqueue ( mock Response . set Body ( source . readString ( StandardCharsets . UTF _ 8 ))) ĊĠ Ġ} ĊĊĠ Ġfun Ġcreate Service ( clazz : ĠClass < T >): ĠT Ġ{ ĊĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠ Ġ. baseUrl ( mock WebServer . url ("/ ")) ĊĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠ Ġ. create ( clazz ) ĊĠ Ġ} Ċ } Ċ