package Ġorg . j dc . template . inject Ċ Ċ import Ġandroid . app . Application Ċ import Ġcom . jak ew h art on . ret rofit 2 . converter . kotlin x . serialization . as Converter Factory Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġokhttp 3 . MediaType . Companion . to MediaType Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . mock webserver . Mock WebServer Ċ import Ġorg . j dc . template . Test Filesystem Ċ import Ġorg . j dc . template . model . web service . colors . Color Service Ċ import Ġorg . mockito . Argument Matchers . any String Ċ import Ġorg . mockito . Mockito . do Answer Ċ import Ġorg . mockito . Mockito . mock Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġjava . io . File Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Module Ċ class ĠCommon Test Module Ġ{ ĊĠĠĠ Ġ// Ġ========== ĠAND ROID Ġ========== ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġinternal Ġfun Ġprovide Application (): ĠApplication Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapplication Ġ= Ġmock ( Application :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġwhenever ( application . files Dir ). thenReturn ( Test Filesystem . INTERNAL _ FILES _ DIR ) ĊĊĠĠĠĠĠĠĠ Ġdo Answer Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġinvocation . get Argument < String >( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ do Answer ĠFile ( Test Filesystem . EXTERNAL _ FILES _ DIR , Ġtype ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ do Answer ĠTest Filesystem . EXTERNAL _ FILES _ DIR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. wh enever ( application ). get External Files Dir ( any String ()) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġapplication ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Ok Http (): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 1 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 1 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Color Service ( mock WebServer : ĠMock WebServer ): ĠColor Service Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠcontentType Ġ= Ġ" application / json ". to MediaType () ĊĊĠĠĠĠĠĠĠ Ġval Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( mock WebServer . url ("")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( provide Ok Http ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Json . non strict . as Converter Factory ( contentType )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġretrofit . create ( Color Service :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Mock WebServer () Ġ= ĠMock WebServer () Ċ } Ċ