package Ġde . r ki . cor on aw arn app . test . debug options . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġde . r ki . cor on aw arn app . environment . Environment Setup Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . mock k . Mock K Annotations Ċ import Ġio . mock k . Runs Ċ import Ġio . mock k . clear All Mocks Ċ import Ġio . mock k . every Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġio . mock k . just Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . verify Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ import Ġtest helpers . Base Test Ċ import Ġtest helpers . Test Dispatcher Provider Ċ import Ġtest helpers . extensions . Cor outines Test Extension Ċ import Ġtest helpers . extensions . Instant Executor Extension Ċ import Ġtest helpers . fl aky Test Ċ Ċ @ Extend With ( Instant Executor Extension :: class , ĠCor outines Test Extension :: class ) Ċ class ĠDebug Options Fragment ViewModel Test Ġ: ĠBaseTest () Ġ{ ĊĊĠĠĠ Ġ@ Mock K Ġprivate Ġlateinit Ġvar Ġenvironment Setup : ĠEnvironment Setup ĊĠĠĠ Ġ@ Mock K Ġprivate Ġlateinit Ġvar Ġcontext : ĠContext ĊĊĠĠĠ Ġprivate Ġvar Ġcurrent Environment Ġ= ĠEnvironment Setup . Type . DEV ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this ) ĊĠĠĠĠĠĠĠ Ġcurrent Environment Ġ= ĠEnvironment Setup . Type . DEV ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġenvironment Setup . default Environment Ġ} Ġreturns ĠEnvironment Setup . Type . DEV ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġenvironment Setup . submission C dn Url Ġ} Ġreturns Ġ" submission Url " ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġenvironment Setup . download C dn Url Ġ} Ġreturns Ġ" download Url " ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġenvironment Setup . verification C dn Url Ġ} Ġreturns Ġ" verification Url " ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġenvironment Setup . current Environment Ġ= Ġany () Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Environment Ġ= Ġarg ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUnit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġenvironment Setup . current Environment Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Environment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun Ġteardown () Ġ{ ĊĠĠĠĠĠĠĠ Ġclear All Mocks () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate ViewModel (): ĠDebug Options Fragment ViewModel Ġ= ĠDebug Options Fragment ViewModel ( ĊĠĠĠĠĠĠĠ Ġcontext Ġ= Ġcontext , ĊĠĠĠĠĠĠĠ Ġenv Setup Ġ= Ġenvironment Setup , ĊĠĠĠĠĠĠĠ Ġdispatcher Provider Ġ= ĠTest Dispatcher Provider ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` to g ge ling Ġthe Ġenv Ġworks `() Ġ= Ġflaky Test Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Environment Ġ= ĠEnvironment Setup . Type . DEV ĊĠĠĠĠĠĠĠ Ġval Ġvm Ġ= Ġcreate ViewModel () ĊĊĠĠĠĠĠĠĠ Ġval Ġstates Ġ= Ġmutable ListOf < Environment State >() ĊĠĠĠĠĠĠĠ Ġval Ġobserver State Ġ= Ġmock k < Observer < Environment State >>() ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġobserver State . on Changed ( capture ( states )) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠ Ġvm . environment State . observe Fore ver ( observer State ) ĊĊĠĠĠĠĠĠĠ Ġval Ġevents Ġ= Ġmutable ListOf < Environment Setup . Type >() ĊĠĠĠĠĠĠĠ Ġval Ġobserver Event Ġ= Ġmock k < Observer < Environment Setup . Type >>() ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġobserver Event . on Changed ( capture ( events )) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠ Ġvm . environment ChangeEvent . observe Fore ver ( observer Event ) ĊĊĠĠĠĠĠĠĠ Ġvm . select Environment T yt pe ( Environment Setup . Type . DEV . raw Key ) ĊĠĠĠĠĠĠĠ Ġvm . select Environment T yt pe ( Environment Setup . Type . WR U _ XA . raw Key ) ĊĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 3 , Ġtimeout Ġ= Ġ 3 0 0 0 ) Ġ{ Ġobserver State . on Changed ( any ()) Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 2 , Ġtimeout Ġ= Ġ 3 0 0 0 ) Ġ{ Ġobserver Event . on Changed ( any ()) Ġ} ĊĊĠĠĠĠĠĠĠ Ġstates [ 0 ]. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent ĠshouldBe ĠEnvironment Setup . Type . DEV ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstates [ 1 ]. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent ĠshouldBe ĠEnvironment Setup . Type . DEV ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġevents [ 0 ] ĠshouldBe ĠEnvironment Setup . Type . DEV ĊĊĠĠĠĠĠĠĠ Ġstates [ 2 ]. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent ĠshouldBe ĠEnvironment Setup . Type . WR U _ XA ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġevents [ 1 ] ĠshouldBe ĠEnvironment Setup . Type . WR U _ XA ĊĠĠĠ Ġ} Ċ } Ċ