package Ġcom . ja ime gc . covid 1 9 tracker . activity Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġandroidx . test . core . app . Activity Scenario Ċ import Ġandroidx . test . espress o . intent . Intent s Ċ import Ġandroidx . test . espress o . intent . Intent s . int ended Ċ import Ġandroidx . test . espress o . intent . matcher . Intent Matchers . has Component Ċ import Ġandroidx . test . filters . Large Test Ċ import Ġandroidx . test . internal . runner . junit 4 . Android JUnit 4 Class Runner Ċ import Ġarrow . core . Either Ċ import Ġcom . ja ime gc . covid 1 9 tracker . Screen State Factory Test Ċ import Ġcom . ja ime gc . covid 1 9 tracker . data . room . Cov id 1 9 Tracker Database Ċ import Ġcom . ja ime gc . covid 1 9 tracker . domain . use case . Get Cov id Tracker Ċ import Ġcom . ja ime gc . covid 1 9 tracker . ui . home . Initialize Database Activity Ċ import Ġcom . ja ime gc . covid 1 9 tracker . ui . home . MainActivity Ċ import Ġcom . ja ime gc . covid 1 9 tracker . util . FileUtils Ċ import Ġio . mock k . co Every Ċ import Ġio . mock k . co Verify Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . mock k Class Ċ import Ġkotlinx . coroutines . flow . flow Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . k oin . core . context . load K oin Modules Ċ import Ġorg . k oin . core . context . unload K oin Modules Ċ import Ġorg . k oin . core . module . Module Ċ import Ġorg . k oin . dsl . module Ċ import Ġorg . k oin . test . K oin Test Ċ import Ġorg . k oin . test . mock . Mock Provider Rule Ċ import Ġorg . k oin . test . mock . declare Mock Ċ Ċ @ RunWith ( Android JUnit 4 Class Runner :: class ) Ċ @ Large Test Ċ class ĠInitialize Database Activity Test Ġ: ĠK oin Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġinstant Executor Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġscenario : ĠActivity Scenario < Initialize Database Activity > ĊĠĠĠ Ġprivate Ġval Ġfile Utils Ġ= Ġmock k < FileUtils >() ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Module : ĠModule ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġmock Provider Ġ= ĠMock Provider Rule . create Ġ{ Ġclazz Ġ-> ĊĠĠĠĠĠĠĠ Ġmock k Class ( clazz ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Module Ġ= Ġmodule ( createdAt Start Ġ= Ġtrue , Ġoverride Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ov id 1 9 Tracker Database . build Test ( get ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Utils ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmock Requests () ĊĊĠĠĠĠĠĠĠ ĠInt ents . init () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ ĠInt ents . release () ĊĠĠĠĠĠĠĠ Ġun load K oin Modules ( mock Module ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmock Requests () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠEmpty Ġrequests Ġfor ĠUpdate Database Worker ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġfile Utils . generate Current Dates () Ġ} Ġreturns ĠlistOf () ĊĊĠĠĠĠĠĠĠ Ġdeclare Mock < Get Cov id Tracker > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġget Cov id Tracker By Date ( any ()) Ġ} Ġreturns Ġflow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( Either . right ( Screen State Factory Test . state Cov id Tracker Empty Data )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġif Database Exists _ should Not Call Init Database () Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġfile Utils . database Exists () Ġ} Ġreturns Ġtrue ĊĊĠĠĠĠĠĠĠ Ġload K oin Modules ( mock Module ) ĊĊĠĠĠĠĠĠĠ Ġscenario Ġ= ĠActivity Scenario . launch ( Initialize Database Activity :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġco Verify ( exact ly Ġ= Ġ 0 ) Ġ{ Ġfile Utils . init Database () Ġ} ĊĊĠĠĠĠĠĠĠ Ġscenario . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġif Database DoesNotExist _ should Call Init Database () Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġfile Utils . database Exists () Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġfile Utils . init Database () Ġ} Ġreturns ĠUnit ĊĊĠĠĠĠĠĠĠ Ġload K oin Modules ( mock Module ) ĊĊĠĠĠĠĠĠĠ Ġscenario Ġ= ĠActivity Scenario . launch ( Initialize Database Activity :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġfile Utils . init Database () Ġ} ĊĊĠĠĠĠĠĠĠ Ġscenario . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġif Database Exists _ should Open MainActivity Direct ly () Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġfile Utils . database Exists () Ġ} Ġreturns Ġtrue ĊĊĠĠĠĠĠĠĠ Ġload K oin Modules ( mock Module ) ĊĊĠĠĠĠĠĠĠ Ġscenario Ġ= ĠActivity Scenario . launch ( Initialize Database Activity :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġintended ( has Component ( MainActivity :: class . java . name )) ĊĊĠĠĠĠĠĠĠ Ġscenario . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġif Database DoesNotExist _ should Open MainActivity After Init Database () Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġfile Utils . database Exists () Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġfile Utils . init Database () Ġ} Ġreturns ĠUnit ĊĊĠĠĠĠĠĠĠ Ġload K oin Modules ( mock Module ) ĊĊĠĠĠĠĠĠĠ Ġscenario Ġ= ĠActivity Scenario . launch ( Initialize Database Activity :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġintended ( has Component ( MainActivity :: class . java . name )) ĊĊĠĠĠĠĠĠĠ Ġscenario . close () ĊĠĠĠ Ġ} Ċ }