/* Ċ Ġ* Ġ ĠCopyright Ġ( c ) Ġ 2 0 2 2 Ġ ĠTh i ago ĠL op es Ġda ĠSil va Ċ Ġ* Ċ Ġ* Ġ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ġ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* Ġ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . lo pes . github search . data . source Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġcom . lo pes . github search . data . database . App Database Ċ import Ġcom . lo pes . github search . util . rule . Test Coroutine Rule Ċ import Ġio . mock k . Mock K Annotations Ċ import Ġio . mock k . clear Mocks Ċ import Ġio . mock k . co Verify Ċ import Ġio . mock k . impl . annotations . Rel ax ed Mock K Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ class ĠSearch Local Repo Impl Data UnitTest Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġinstant Executor Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġ@ Experimental Cor outines Api ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġtest Dispatcher Ġ= ĠTest Coroutine Rule () ĊĊĠĠĠ Ġ@ Rel ax ed Mock K ĊĠĠĠ Ġlateinit Ġvar Ġapp Database : ĠApp Database ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this , Ġrelax Unit Fun Ġ= Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Experimental Cor outines Api ĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġclear Mocks ( app Database ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Experimental Cor outines Api ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould _ call _ insert _ all _ method _ once () Ġ= Ġtest Dispatcher . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsearch Local Repo Ġ= ĠSearch Local Repo Impl Data ( app Database ) ĊĊĠĠĠĠĠĠĠ Ġsearch Local Repo . insert All ( emptyList ()) ĊĊĠĠĠĠĠĠĠ Ġco Verify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġapp Database . search Github Dao (). insert All ( any ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Experimental Cor outines Api ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould _ call _ get _ all _ method _ once () Ġ= Ġtest Dispatcher . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsearch Local Repo Ġ= ĠSearch Local Repo Impl Data ( app Database ) ĊĊĠĠĠĠĠĠĠ Ġsearch Local Repo . getAll By Paging Source () ĊĊĠĠĠĠĠĠĠ Ġco Verify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġapp Database . search Github Dao (). getAll By Paging Source () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Experimental Cor outines Api ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould _ call _ clean _ all _ method _ once () Ġ= Ġtest Dispatcher . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsearch Local Repo Ġ= ĠSearch Local Repo Impl Data ( app Database ) ĊĊĠĠĠĠĠĠĠ Ġsearch Local Repo . clean All () ĊĊĠĠĠĠĠĠĠ Ġco Verify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġapp Database . search Github Dao (). clean All () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Experimental Cor outines Api ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould _ call _ return _ valid _ database _ instance () Ġ= Ġtest Dispatcher . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsearch Local Repo Ġ= ĠSearch Local Repo Impl Data ( app Database ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsearch Local Repo . get Database () ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result , Ġapp Database ) ĊĠĠĠ Ġ} Ċ } Ċ