package Ġorg . opp ia . android . domain . plat for mp ar ameter . sync up Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Context Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġandroidx . test . core . content . pm . Application Info Builder Ċ import Ġandroidx . test . core . content . pm . Package Info Builder Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġandroidx . work . Configuration Ċ import Ġandroidx . work . Data Ċ import Ġandroidx . work . One Time Work Request Ċ import Ġandroidx . work . One Time Work RequestBuilder Ċ import Ġandroidx . work . Work Info Ċ import Ġandroidx . work . Work Manager Ċ import Ġandroidx . work . testing . S ynchronous Executor Ċ import Ġandroidx . work . testing . Work Manager Test Init Helper Ċ 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 Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . junit . Mockito JUnit Ċ import Ġorg . mockito . junit . Mockito Rule Ċ import Ġorg . opp ia . android . app . model . Platform Parameter Ċ import Ġorg . opp ia . android . data . backends . g ae . BaseUrl Ċ import Ġorg . opp ia . android . data . backends . g ae . Json Prefix Network Interceptor Ċ import Ġorg . opp ia . android . data . backends . g ae . Network ApiKey Ċ import Ġorg . opp ia . android . data . backends . g ae . Network Config Prod Module Ċ import Ġorg . opp ia . android . data . backends . g ae . Opp ia Ret rofit Ċ import Ġorg . opp ia . android . data . backends . g ae . Remote Auth Network Interceptor Ċ import Ġorg . opp ia . android . data . backends . g ae . api . Platform Parameter Service Ċ import Ġorg . opp ia . android . domain . opp ialog ger . Log Storage Module Ċ import Ġorg . opp ia . android . domain . plat for mp ar ameter . Platform Parameter Controller Ċ import Ġorg . opp ia . android . domain . plat for mp ar ameter . Platform Parameter Singleton Impl Ċ import Ġorg . opp ia . android . testing . Fake Exception Logger Ċ import Ġorg . opp ia . android . testing . Test Log Reporting 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 _ DEFAULT _ 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 . opp ia . android . testing . ro bo lectric . Ro bo lectric Module Ċ import Ġorg . opp ia . android . testing . threading . Test Coroutine Dispatch ers Ċ import Ġorg . opp ia . android . testing . threading . Test Dispatcher Module Ċ import Ġorg . opp ia . android . testing . time . Fake Opp ia Clock Module Ċ import Ġorg . opp ia . android . util . data . AsyncResult Ċ import Ġorg . opp ia . android . util . data . Data Providers . Companion . to LiveData Ċ import Ġorg . opp ia . android . util . data . Data Providers Injector Ċ import Ġorg . opp ia . android . util . data . Data Providers Injector Provider Ċ import Ġorg . opp ia . android . util . logging . Enable Console Log Ċ import Ġorg . opp ia . android . util . logging . Enable File Log Ċ import Ġorg . opp ia . android . util . logging . Global LogLevel Ċ import Ġorg . opp ia . android . util . logging . LogLevel Ċ import Ġorg . opp ia . android . util . networking . Network Connection Debug Util Module Ċ import Ġorg . opp ia . android . util . networking . Network Connection Util Debug Module Ċ import Ġorg . opp ia . android . util . plat for mp ar ameter . Platform Parameter Singleton Ċ import Ġorg . ro bo lectric . Shadow s Ċ import Ġorg . ro bo lectric . annotation . Config Ċ 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 . Singleton Ċ Ċ /** ĠTests Ġfor Ġ[ Platform Parameter Sync Up Worker ]. Ġ*/ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ @ Looper Mode ( Looper Mode . Mode . PA USED ) Ċ @ Config ( ĊĠ Ġapplication Ġ= ĠPlatform Parameter Sync Up Worker Test . Test Application :: class , ĊĠ Ġmanifest Ġ= ĠConfig . NONE Ċ ) Ċ class ĠPlatform Parameter Sync Up Worker Test Ġ{ ĊĊĠ Ġ@ Rule ĊĠ Ġ@ Jvm Field ĊĠ Ġval Ġmock ito Rule : ĠMockito Rule Ġ= ĠMockito JUnit . rule () ĊĊĠ Ġ@ Mock ĊĠ Ġlateinit Ġvar Ġmock Unit Observer : ĠObserver < AsyncResult < Unit >> ĊĊĠ Ġ@ Inject ĊĠ Ġlateinit Ġvar Ġplatform Parameter Singleton : ĠPlatform Parameter Singleton ĊĊĠ Ġ@ Inject ĊĠ Ġlateinit Ġvar Ġplatform Parameter Controller : ĠPlatform Parameter Controller ĊĊĠ Ġ@ Inject ĊĠ Ġlateinit Ġvar Ġplatform Parameter Sync Up Worker Factory : ĠPlatform Parameter Sync Up Worker Factory ĊĊĠ Ġ@ Inject ĊĠ Ġlateinit Ġvar Ġtest Coroutine Dispatch ers : ĠTest Coroutine Dispatch ers ĊĊĠ Ġ@ Inject ĊĠ Ġlateinit Ġvar Ġcontext : ĠContext ĊĊĠ Ġ@ Inject ĊĠ Ġlateinit Ġvar Ġfake Exception Logger : ĠFake Exception Logger ĊĊĠ Ġprivate Ġval Ġexpected Test String Parameter Ġ= ĠPlatform Parameter . newBuilder () ĊĠĠĠ Ġ. setName ( TEST _ STRING _ PARAM _ NAME ) ĊĠĠĠ Ġ. setString ( TEST _ STRING _ PARAM _ SERVER _ VALUE ) ĊĠĠĠ Ġ. build () ĊĊĠ Ġprivate Ġval Ġexpected Test Integer Parameter Ġ= ĠPlatform Parameter . newBuilder () ĊĠĠĠ Ġ. setName ( TEST _ INTEGER _ PARAM _ NAME ) ĊĠĠĠ Ġ. set Integer ( TEST _ INTEGER _ PARAM _ SERVER _ VALUE ) ĊĠĠĠ Ġ. build () ĊĊĠ Ġprivate Ġval Ġdefault Test Integer Parameter Ġ= ĠPlatform Parameter . newBuilder () ĊĠĠĠ Ġ. setName ( TEST _ INTEGER _ PARAM _ NAME ) ĊĠĠĠ Ġ. set Integer ( TEST _ INTEGER _ PARAM _ DEFAULT _ VALUE ) ĊĠĠĠ Ġ. build () ĊĊĠ Ġprivate Ġval Ġexpected Test Boolean Parameter Ġ= ĠPlatform Parameter . newBuilder () ĊĠĠĠ Ġ. setName ( TEST _ BOOLEAN _ PARAM _ NAME ) ĊĠĠĠ Ġ. set Boolean ( TEST _ BOOLEAN _ PARAM _ SERVER _ VALUE ) ĊĠĠĠ Ġ. build () ĊĊĠ Ġ// ĠNot Ġincluding Ġ" expected Test Boolean Parameter " Ġin Ġthis Ġlist Ġto Ġprove Ġthat Ġa Ġrefresh Ġtook Ġplace ĊĠ Ġprivate Ġval Ġmock Platform Parameter List Ġ= ĠlistOf < Platform Parameter >( ĊĠĠĠ Ġexpected Test String Parameter , ĊĠĠĠ Ġdefault Test Integer Parameter Ġ// Ġusing Ġdefault Ġvalue Ġhere Ġjust Ġto Ġprove Ġrefresh Ġtook Ġplace ĊĠ Ġ) ĊĊĠ Ġ@ Before ĊĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠ ĠsetUp Test Application Component () ĊĠĠĠ Ġval Ġconfig Ġ= ĠConfiguration . Builder () ĊĠĠĠĠĠ Ġ. set Executor ( S ynchronous Executor ()) ĊĠĠĠĠĠ Ġ. set Worker Factory ( platform Parameter Sync Up Worker Factory ) ĊĠĠĠĠĠ Ġ. build () ĊĠĠĠ ĠWork Manager Test Init Helper . initialize Test Work Manager ( context , Ġconfig ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Sync Up Worker _ database IsEmpty _ getC orrect Platform Parameters _ verify Values Are Cached () Ġ{ ĊĠĠĠ Ġ// ĠSet Ġup Ġversion Name Ġto Ġget Ġcorrect Ġnetwork Ġresponse Ġfrom Ġmock Ġplatform Ġparameter Ġservice . ĊĠĠĠ ĠsetUp Application For Context ( Mock Platform Parameter Service . app Version For Correct Response ) ĊĊĠĠĠ Ġ// ĠEmpty Ġthe ĠPlatform ĠParameter ĠDatabase Ġto Ġsimulate Ġthe Ġexecution Ġof Ġfirst ĠSync Up ĠWork Ġrequest . ĊĠĠĠ Ġplatform Parameter Controller . update Platform Parameter Database ( listOf ()) ĊĊĠĠĠ Ġval Ġwork Manager Ġ= ĠWork Manager . getInstance ( context ) ĊĊĠĠĠ Ġval Ġinput Data Ġ= ĠData . Builder (). putString ( ĊĠĠĠĠĠ ĠPlatform Parameter Sync Up Worker . WORK ER _ TYPE _ KEY , ĊĠĠĠĠĠ ĠPlatform Parameter Sync Up Worker . PLATFORM _ PARAMETER _ WORK ER ĊĠĠĠ Ġ). build () ĊĊĠĠĠ Ġval Ġrequest : ĠOne Time Work Request Ġ= ĠOne Time Work RequestBuilder < Platform Parameter Sync Up Worker >() ĊĠĠĠĠĠ Ġ. set InputData ( input Data ) ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ// ĠEn queue Ġthe ĠWork ĠRequest Ġto Ġfetch Ġand Ġcache Ġthe ĠPlatform ĠParameters Ġfrom ĠRemote ĠService . ĊĠĠĠ Ġwork Manager . enqueue ( request ) ĊĠĠĠ Ġtest Coroutine Dispatch ers . run Current () ĊĊĠĠĠ Ġval Ġwork Info Ġ= Ġwork Manager . get Work Info ById ( request . id ) ĊĠĠĠ ĠassertThat ( work Info . get (). state ). isEqualTo ( Work Info . State . SUCCEEDED ) ĊĊĠĠĠ Ġ// ĠRetrieve Ġthe Ġpreviously Ġcached ĠPlatform ĠParameters Ġfrom ĠCache ĠStore . ĊĠĠĠ Ġplatform Parameter Controller . getParameter Database (). to LiveData (). observe Fore ver ( mock Unit Observer ) ĊĠĠĠ Ġtest Coroutine Dispatch ers . run Current () ĊĊĠĠĠ Ġ// ĠValues Ġretrieved Ġfrom ĠCache Ġstore Ġwill Ġbe Ġsent Ġto ĠPlatform ĠParameter ĠSingleton Ġby Ġthe ĊĠĠĠ Ġ// ĠController Ġin Ġthe Ġform Ġof Ġa ĠMap , Ġtherefore Ġverify Ġthe Ġretrieved Ġvalues Ġfrom Ġthat ĠMap . ĊĠĠĠ Ġval Ġplatform Parameter Map Ġ= Ġplatform Parameter Singleton . get Platform Parameter Map () ĊĠĠĠ ĠassertThat ( platform Parameter Map ) ĊĠĠĠĠĠ Ġ. contains Entry ( TEST _ STRING _ PARAM _ NAME , Ġexpected Test String Parameter ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Sync Up Worker _ database IsEmpty _ get Wrong Platform Parameters _ verify Worker Cr ashes () Ġ{ ĊĠĠĠ Ġ// ĠSet Ġup Ġversion Name Ġto Ġget Ġincorrect Ġnetwork Ġresponse Ġfrom Ġmock Ġplatform Ġparameter Ġservice . ĊĠĠĠ ĠsetUp Application For Context ( Mock Platform Parameter Service . app Version For Wrong Response ) ĊĊĠĠĠ Ġ// ĠEmpty Ġthe ĠPlatform ĠParameter ĠDatabase Ġto Ġsimulate Ġthe Ġexecution Ġof Ġfirst ĠSync Up ĠWork Ġrequest . ĊĠĠĠ Ġplatform Parameter Controller . update Platform Parameter Database ( listOf ()) ĊĊĠĠĠ Ġval Ġwork Manager Ġ= ĠWork Manager . getInstance ( context ) ĊĊĠĠĠ Ġval Ġinput Data Ġ= ĠData . Builder (). putString ( ĊĠĠĠĠĠ ĠPlatform Parameter Sync Up Worker . WORK ER _ TYPE _ KEY , ĊĠĠĠĠĠ ĠPlatform Parameter Sync Up Worker . PLATFORM _ PARAMETER _ WORK ER ĊĠĠĠ Ġ). build () ĊĊĠĠĠ Ġval Ġrequest : ĠOne Time Work Request Ġ= ĠOne Time Work RequestBuilder < Platform Parameter Sync Up Worker >() ĊĠĠĠĠĠ Ġ. set InputData ( input Data ) ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ// ĠEn queue Ġthe ĠWork ĠRequest Ġto Ġfetch Ġand Ġcache Ġthe ĠPlatform ĠParameters Ġfrom ĠRemote ĠService . ĊĠĠĠ Ġwork Manager . enqueue ( request ) ĊĠĠĠ Ġtest Coroutine Dispatch ers . run Current () ĊĊĠĠĠ Ġval Ġwork Info Ġ= Ġwork Manager . get Work Info ById ( request . id ) ĊĠĠĠ ĠassertThat ( work Info . get (). state ). isEqualTo ( Work Info . State . FAILED ) ĊĊĠĠĠ Ġval Ġexception Message Ġ= Ġfake Exception Logger . get Most Recent Exception (). message ĊĠĠĠ ĠassertThat ( exception Message ) ĊĠĠĠĠĠ Ġ. isEqualTo ( Platform Parameter Sync Up Worker . IN CORRECT _ TYPE _ EXCEPTION _ MSG ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Sync Up Worker _ database Is NotEmpty _ getC orrect Platform Parameters _ verify Values Are Updated () Ġ{ ĊĠĠĠ Ġ// ĠSet Ġup Ġversion Name Ġto Ġget Ġcorrect Ġnetwork Ġresponse Ġfrom Ġmock Ġplatform Ġparameter Ġservice . ĊĠĠĠ ĠsetUp Application For Context ( Mock Platform Parameter Service . app Version For Correct Response ) ĊĊĠĠĠ Ġ// ĠFill Ġthe ĠPlatform ĠParameter ĠDatabase Ġwith Ġmock Ġvalues Ġto Ġsimulate Ġthe Ġexecution Ġof Ġa ĠSync Up ĊĠĠĠ Ġ// ĠWork Ġrequest Ġthat Ġis Ġnot Ġfirst . ĊĠĠĠ Ġplatform Parameter Controller . update Platform Parameter Database ( mock Platform Parameter List ) ĊĊĠĠĠ Ġval Ġwork Manager Ġ= ĠWork Manager . getInstance ( context ) ĊĊĠĠĠ Ġval Ġinput Data Ġ= ĠData . Builder (). putString ( ĊĠĠĠĠĠ ĠPlatform Parameter Sync Up Worker . WORK ER _ TYPE _ KEY , ĊĠĠĠĠĠ ĠPlatform Parameter Sync Up Worker . PLATFORM _ PARAMETER _ WORK ER ĊĠĠĠ Ġ). build () ĊĊĠĠĠ Ġval Ġrequest : ĠOne Time Work Request Ġ= ĠOne Time Work RequestBuilder < Platform Parameter Sync Up Worker >() ĊĠĠĠĠĠ Ġ. set InputData ( input Data ) ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ// ĠEn queue Ġthe ĠWork ĠRequest Ġto Ġfetch Ġand Ġcache Ġthe ĠPlatform ĠParameters Ġfrom ĠRemote ĠService . ĊĠĠĠ Ġwork Manager . enqueue ( request ) ĊĠĠĠ Ġtest Coroutine Dispatch ers . run Current () ĊĊĠĠĠ Ġval Ġwork Info Ġ= Ġwork Manager . get Work Info ById ( request . id ) ĊĠĠĠ ĠassertThat ( work Info . get (). state ). isEqualTo ( Work Info . State . SUCCEEDED ) ĊĊĠĠĠ Ġ// ĠRetrieve Ġthe Ġpreviously Ġcached ĠPlatform ĠParameters Ġfrom ĠCache ĠStore . ĊĠĠĠ Ġplatform Parameter Controller . getParameter Database (). to LiveData (). observe Fore ver ( mock Unit Observer ) ĊĠĠĠ Ġtest Coroutine Dispatch ers . run Current () ĊĊĠĠĠ Ġ// ĠValues Ġretrieved Ġfrom ĠCache Ġstore Ġwill Ġbe Ġsent Ġto ĠPlatform ĠParameter ĠSingleton Ġby Ġthe ĊĠĠĠ Ġ// ĠController Ġin Ġthe Ġform Ġof Ġa ĠMap , Ġtherefore Ġverify Ġthe Ġretrieved Ġvalues Ġfrom Ġthat ĠMap . ĊĠĠĠ Ġval Ġplatform Parameter Map Ġ= Ġplatform Parameter Singleton . get Platform Parameter Map () ĊĠĠĠ ĠassertThat ( platform Parameter Map ). isNotEmpty () ĊĊĠĠĠ Ġ// ĠNew ĠBoolean ĠPlatform ĠParameter Ġis Ġnow Ġpresent Ġin Ġthe ĠDatabase . ĊĠĠĠ ĠassertThat ( platform Parameter Map ) ĊĠĠĠĠĠ Ġ. contains Entry ( TEST _ BOOLEAN _ PARAM _ NAME , Ġexpected Test Boolean Parameter ) ĊĊĠĠĠ Ġ// ĠPrevious ĠString ĠPlatform ĠParameter Ġis Ġstill Ġsame Ġin Ġthe ĠDatabase . ĊĠĠĠ ĠassertThat ( platform Parameter Map ) ĊĠĠĠĠĠ Ġ. contains Entry ( TEST _ STRING _ PARAM _ NAME , Ġexpected Test String Parameter ) ĊĊĠĠĠ Ġ// ĠPrevious ĠInteger ĠPlatform ĠParameter Ġupdated Ġto Ġnew Ġvalue Ġin Ġthe ĠDatabase . ĊĠĠĠ ĠassertThat ( platform Parameter Map ) ĊĠĠĠĠĠ Ġ. contains Entry ( TEST _ INTEGER _ PARAM _ NAME , Ġexpected Test Integer Parameter ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Sync Up Worker _ database Is NotEmpty _ get Wrong Platform Parameters _ verify Worker Cr ashes () Ġ{ ĊĠĠĠ Ġ// ĠSet Ġup Ġversion Name Ġto Ġget Ġincorrect Ġnetwork Ġresponse Ġfrom Ġmock Ġplatform Ġparameter Ġservice . ĊĠĠĠ ĠsetUp Application For Context ( Mock Platform Parameter Service . app Version For Wrong Response ) ĊĊĠĠĠ Ġ// ĠFill Ġthe ĠPlatform ĠParameter ĠDatabase Ġwith Ġmock Ġvalues Ġto Ġsimulate Ġthe Ġexecution Ġof Ġa ĠSync Up ĊĠĠĠ Ġ// ĠWork Ġrequest Ġthat Ġis Ġnot Ġfirst . ĊĠĠĠ Ġplatform Parameter Controller . update Platform Parameter Database ( mock Platform Parameter List ) ĊĊĠĠĠ Ġval Ġwork Manager Ġ= ĠWork Manager . getInstance ( context ) ĊĊĠĠĠ Ġval Ġinput Data Ġ= ĠData . Builder (). putString ( ĊĠĠĠĠĠ ĠPlatform Parameter Sync Up Worker . WORK ER _ TYPE _ KEY , ĊĠĠĠĠĠ ĠPlatform Parameter Sync Up Worker . PLATFORM _ PARAMETER _ WORK ER ĊĠĠĠ Ġ). build () ĊĊĠĠĠ Ġval Ġrequest : ĠOne Time Work Request Ġ= ĠOne Time Work RequestBuilder < Platform Parameter Sync Up Worker >() ĊĠĠĠĠĠ Ġ. set InputData ( input Data ) ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ// ĠEn queue Ġthe ĠWork ĠRequest Ġto Ġfetch Ġand Ġcache Ġthe ĠPlatform ĠParameters Ġfrom ĠRemote ĠService . ĊĠĠĠ Ġwork Manager . enqueue ( request ) ĊĠĠĠ Ġtest Coroutine Dispatch ers . run Current () ĊĊĠĠĠ Ġval Ġwork Info Ġ= Ġwork Manager . get Work Info ById ( request . id ) ĊĠĠĠ ĠassertThat ( work Info . get (). state ). isEqualTo ( Work Info . State . FAILED ) ĊĊĠĠĠ Ġval Ġexception Message Ġ= Ġfake Exception Logger . get Most Recent Exception (). message ĊĠĠĠ ĠassertThat ( exception Message ) ĊĠĠĠĠĠ Ġ. isEqualTo ( Platform Parameter Sync Up Worker . IN CORRECT _ TYPE _ EXCEPTION _ MSG ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Sync Up Worker _ database Is NotEmpty _ get Empty Response For Wrong Version _ verify Values Not Updated () Ġ{ ĊĠĠĠ Ġ// ĠSet Ġup Ġversion Name Ġto Ġget Ġincorrect Ġnetwork Ġresponse Ġfrom Ġmock Ġplatform Ġparameter Ġservice . ĊĠĠĠ ĠsetUp Application For Context ( Mock Platform Parameter Service . app Version For Empty Response ) ĊĊĠĠĠ Ġ// ĠFill Ġthe ĠPlatform ĠParameter ĠDatabase Ġwith Ġmock Ġvalues Ġto Ġsimulate Ġthe Ġexecution Ġof Ġa ĠSync Up ĊĠĠĠ Ġ// ĠWork Ġrequest Ġthat Ġis Ġnot Ġfirst . ĊĠĠĠ Ġplatform Parameter Controller . update Platform Parameter Database ( mock Platform Parameter List ) ĊĊĠĠĠ Ġval Ġwork Manager Ġ= ĠWork Manager . getInstance ( context ) ĊĊĠĠĠ Ġval Ġinput Data Ġ= ĠData . Builder (). putString ( ĊĠĠĠĠĠ ĠPlatform Parameter Sync Up Worker . WORK ER _ TYPE _ KEY , ĊĠĠĠĠĠ ĠPlatform Parameter Sync Up Worker . PLATFORM _ PARAMETER _ WORK ER ĊĠĠĠ Ġ). build () ĊĊĠĠĠ Ġval Ġrequest : ĠOne Time Work Request Ġ= ĠOne Time Work RequestBuilder < Platform Parameter Sync Up Worker >() ĊĠĠĠĠĠ Ġ. set InputData ( input Data ) ĊĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ// ĠEn queue Ġthe ĠWork ĠRequest Ġto Ġfetch Ġand Ġcache Ġthe ĠPlatform ĠParameters Ġfrom ĠRemote ĠService . ĊĠĠĠ Ġwork Manager . enqueue ( request ) ĊĠĠĠ Ġtest Coroutine Dispatch ers . run Current () ĊĊĠĠĠ Ġval Ġwork Info Ġ= Ġwork Manager . get Work Info ById ( request . id ) ĊĠĠĠ ĠassertThat ( work Info . get (). state ). isEqualTo ( Work Info . State . FAILED ) ĊĊĠĠĠ Ġval Ġexception Message Ġ= Ġfake Exception Logger . get Most Recent Exception (). message ĊĠĠĠ ĠassertThat ( exception Message ) ĊĠĠĠĠĠ Ġ. isEqualTo ( Platform Parameter Sync Up Worker . EMPTY _ RESPONSE _ EXCEPTION _ MSG ) ĊĊĠĠĠ Ġ// ĠRetrieve Ġthe Ġpreviously Ġcached ĠPlatform ĠParameters Ġfrom ĠCache ĠStore . ĊĠĠĠ Ġplatform Parameter Controller . getParameter Database (). to LiveData (). observe Fore ver ( mock Unit Observer ) ĊĠĠĠ Ġtest Coroutine Dispatch ers . run Current () ĊĊĠĠĠ Ġ// ĠValues Ġretrieved Ġfrom ĠCache Ġstore Ġwill Ġbe Ġsent Ġto ĠPlatform ĠParameter ĠSingleton Ġby Ġthe ĊĠĠĠ Ġ// ĠController Ġin Ġthe Ġform Ġof Ġa ĠMap , Ġtherefore Ġverify Ġthe Ġretrieved Ġvalues Ġfrom Ġthat ĠMap . ĊĠĠĠ Ġval Ġplatform Parameter Map Ġ= Ġplatform Parameter Singleton . get Platform Parameter Map () ĊĊĠĠĠ Ġ// ĠPrevious ĠString ĠPlatform ĠParameter Ġis Ġstill Ġsame Ġin Ġthe ĠDatabase . ĊĠĠĠ ĠassertThat ( platform Parameter Map ) ĊĠĠĠĠĠ Ġ. contains Entry ( TEST _ STRING _ PARAM _ NAME , Ġexpected Test String Parameter ) ĊĊĠĠĠ Ġ// ĠPrevious ĠInteger ĠPlatform ĠParameter Ġis Ġstill Ġsame Ġin Ġthe ĠDatabase . ĊĠĠĠ ĠassertThat ( platform Parameter Map ) ĊĠĠĠĠĠ Ġ. contains Entry ( TEST _ INTEGER _ PARAM _ NAME , Ġdefault Test Integer Parameter ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠsetUp Test Application Component () Ġ{ ĊĠĠĠ ĠApplication Provider . getApplicationContext < Test Application >(). inject ( this ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠsetUp Application For Context ( test App Version Name : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġpackage Manager Ġ= ĠShadow s . shadow Of ( context . package Manager ) ĊĠĠĠ Ġval Ġapplication Info Ġ= ĊĠĠĠĠĠ ĠApplication Info Builder . newBuilder () ĊĠĠĠĠĠĠĠ Ġ. set PackageName ( context . packageName ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġval Ġpackage Info Ġ= ĊĠĠĠĠĠ ĠPackage Info Builder . newBuilder () ĊĠĠĠĠĠĠĠ Ġ. set PackageName ( context . packageName ) ĊĠĠĠĠĠĠĠ Ġ. set Application Info ( application Info ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġpackage Info . version Name Ġ= Ġtest App Version Name ĊĠĠĠ Ġpackage Manager . install Package ( package Info ) ĊĠ Ġ} ĊĊĠ Ġ// Ġ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 ĊĠĠĠ Ġfun Ġprovide Platform Parameter Singleton ( ĊĠĠĠĠĠ Ġplatform Parameter Singleton Impl : ĠPlatform Parameter Singleton Impl ĊĠĠĠ Ġ): ĠPlatform Parameter Singleton Ġ= Ġplatform Parameter Singleton Impl ĊĊĠĠĠ Ġ// ĠTODO (# 5 9 ): ĠEither Ġisolate Ġthese Ġto Ġtheir Ġown Ġshared Ġtest Ġmodule , Ġor Ġuse Ġthe Ġreal Ġlogging ĊĠĠĠ Ġ// Ġmodule Ġin Ġtests Ġto Ġavoid Ġneeding Ġto Ġspecify Ġthese Ġsettings Ġfor Ġtests . ĊĠĠĠ Ġ@ Enable Console Log ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Enable Console Log (): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġ@ Enable File Log ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Enable File Log (): ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġ@ Global LogLevel ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Global LogLevel (): ĠLogLevel Ġ= ĠLogLevel . VERBOSE ĊĠ Ġ} ĊĊĠ Ġ@ Module ĊĠ Ġclass ĠTest Network Module Ġ{ ĊĊĠĠĠ Ġ@ Opp ia Ret rofit ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Ret rofit Instance ( ĊĠĠĠĠĠ Ġjson Prefix Network Interceptor : ĠJson Prefix Network Interceptor , ĊĠĠĠĠĠ Ġremote Auth Network Interceptor : ĠRemote Auth Network Interceptor , ĊĠĠĠĠĠ Ġ@ BaseUrl ĠbaseUrl : ĠString ĊĠĠĠ Ġ): ĠRet rofit Ġ{ ĊĠĠĠĠĠ Ġval Ġclient Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠ Ġ. add Interceptor ( json Prefix Network Interceptor ) ĊĠĠĠĠĠĠĠ Ġ. add Interceptor ( remote Auth Network Interceptor ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠ Ġ. baseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠ Ġ. add Converter Factory ( M oshi Converter Factory . create ()) ĊĠĠĠĠĠĠĠ Ġ. client ( client ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Network ApiKey ĊĠĠĠ Ġfun Ġprovide Network ApiKey (): ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ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 Ġ= Ġ[ ĊĠĠĠĠĠ ĠLog Storage Module :: class , ĠRo bo lectric Module :: class , ĠTest Dispatcher Module :: class , ĊĠĠĠĠĠ ĠTest Module :: class , ĠTest Log Reporting Module :: class , ĠTest Network Module :: class , ĊĠĠĠĠĠ ĠRet rofit Test Module :: class , ĠFake Opp ia Clock Module :: class , ĠNetwork Config Prod Module :: class , ĊĠĠĠĠĠ ĠNetwork Connection Util Debug Module :: class , ĠNetwork Connection Debug Util Module :: class ĊĠĠĠ Ġ] ĊĠ Ġ) ĊĠ Ġinterface ĠTest Application Component Ġ: ĠData Providers Injector Ġ{ ĊĠĠĠ Ġ@ Component . Builder ĊĠĠĠ Ġinterface ĠBuilder Ġ{ ĊĠĠĠĠĠ Ġ@ Bind s Instance ĊĠĠĠĠĠ Ġfun Ġset Application ( application : ĠApplication ): ĠBuilder ĊĠĠĠĠĠ Ġfun Ġbuild (): ĠTest Application Component ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinject ( platform Parameter Sync Up Worker Test : ĠPlatform Parameter Sync Up Worker Test ) ĊĠ Ġ} ĊĊĠ Ġclass ĠTest Application Ġ: ĠApplication (), ĠData Providers Injector Provider Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcomponent : ĠPlatform Parameter Sync Up Worker Test . Test Application Component Ġby Ġlazy Ġ{ ĊĠĠĠĠĠ ĠD agger Platform Parameter Sync Up Worker Test _ Test Application Component . builder () ĊĠĠĠĠĠĠĠ Ġ. set Application ( this ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinject ( platform Parameter Sync Up Worker Test : ĠPlatform Parameter Sync Up Worker Test ) Ġ{ ĊĠĠĠĠĠ Ġcomponent . inject ( platform Parameter Sync Up Worker Test ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġattach Base Context ( base : ĠContext ?) Ġ{ ĊĠĠĠĠĠ Ġsuper . attach Base Context ( base ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetData Providers Injector (): ĠData Providers Injector Ġ= Ġcomponent ĊĠ Ġ} Ċ } Ċ