package Ġcom . the apache 6 4 . ph ok uz ed . ui . screen . splash Ċ Ċ import Ġapp . cash . tur bine . test Ċ import Ġcom . github . the apache 6 4 . ex pe kt . should Ċ import Ġcom . the apache 6 4 . ph ok uz ed . data . remote . Config Ċ import Ġcom . the apache 6 4 . ph ok uz ed . data . repo . Config Repo Ċ import Ġcom . the apache 6 4 . ph ok uz ed . data . repo . Root Repo Ċ import Ġcom . the apache 6 4 . ph ok uz ed . util . Resource Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . flow . flow Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . kotlin . do Return Ċ import Ġorg . mockito . kotlin . mock Ċ Ċ @ Experimental Cor outines Api Ċ class ĠSpl ash ViewModel Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Shows Ġupdate Ġdialog Ġfor Ġolder Ġversion `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFake Ġrepo ĊĠĠĠĠĠĠĠ Ġval Ġfake Config Repo Ġ= Ġmock < Config Repo > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġget Remote Config () Ġ} Ġdo Return Ġflow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfake Config Ġ= ĠConfig ( mandatory Version Code Ġ= ĠInt . MAX _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( Resource . Success ( fake Config )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= ĠSpl ash ViewModel ( fake Config Repo , Ġmock (), Ġmock ()) ĊĠĠĠĠĠĠĠ ĠviewModel . view Action . test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . init () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġawait Item (). action . should . be . instance of ( Splash View Action . Show Update Dialog :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Go es Ġto Ġmain Ġfor Ġnewer Ġversions `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFake Ġrepo ĊĠĠĠĠĠĠĠ Ġval Ġfake Config Repo Ġ= Ġmock < Config Repo > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġget Remote Config () Ġ} Ġdo Return Ġflow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfake Config Ġ= ĠConfig ( mandatory Version Code Ġ= Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( Resource . Success ( fake Config )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġroot Repo Ġ= Ġmock < Root Repo > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Blocking Ġ{ Ġis Root ed () Ġ} Ġdo Return Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= ĠSpl ash ViewModel ( fake Config Repo , Ġroot Repo , Ġmock ()) ĊĠĠĠĠĠĠĠ ĠviewModel . view Action . test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . init () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġawait Item (). action . should . be . instance of ( Splash View Action . Go To Main :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Version Ġcheck Ġhappens Ġon Ġevery ĠonStart Ġexcept Ġthe Ġfirst `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFake Ġrepo ĊĠĠĠĠĠĠĠ Ġval Ġfake Config Repo Ġ= Ġmock < Config Repo > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Blocking Ġ{ Ġget Local Config () Ġ} Ġdo Return ĠConfig ( mandatory Version Code Ġ= ĠInt . MAX _ VALUE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= ĠSpl ash ViewModel ( fake Config Repo , Ġmock (), Ġmock ()) ĊĠĠĠĠĠĠĠ ĠviewModel . view Action . test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . onStart ( mock ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . onStart ( mock ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġawait Item (). action . should . be . instance of ( Splash View Action . Show Update Dialog :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Click ing Ġupdate Ġla unches Ġa ĠURL `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= ĠSpl ash ViewModel ( mock (), Ġmock (), Ġmock ()) ĊĠĠĠĠĠĠĠ ĠviewModel . view Action . test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Interaction ( Splash Interactor . Update Click ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġawait Item (). action . should . instance of ( Splash View Action . Open Url :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ