package Ġfr anc isco . vis int ini . merc ad ol ib re . data . search Ċ Ċ import Ġfr anc isco . vis int ini . merc ad ol ib re . data . search . dto . Search Dto Ċ import Ġfr anc isco . vis int ini . merc ad ol ib re . data . search . fixtures . SearchResult Fixtures Ċ import Ġfr anc isco . vis int ini . merc ad ol ib re . data . search . repository . Search Repository Impl Ċ import Ġfr anc isco . vis int ini . merc ad ol ib re . data . search . service . Search Service Ċ import Ġfr anc isco . vis int ini . merc ad ol ib re . domain . entity . Result Ċ import Ġfr anc isco . vis int ini . merc ad ol ib re . domain . error . ErrorHandler Ċ import Ġfr anc isco . vis int ini . merc ad ol ib re . domain . repository . Search Repository Ċ import Ġio . mock k . co Every Ċ import Ġio . mock k . co Verify Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġjava . lang . Exception Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . am sh ove . k lu ent . shouldBe InstanceOf Ċ import Ġorg . am sh ove . k lu ent . should Equal Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ class ĠSearch Repository Impl Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġservice : ĠSearch Service ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠerrorHandler : ĠError Handler ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrepository : ĠSearch Repository ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġservice Ġ= Ġmock k () ĊĠĠĠĠĠĠĠ ĠerrorHandler Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġrepository Ġ= ĠSearch Repository Impl ( service , ĠerrorHandler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWe Ġhave Ġto Ġuse Ġrun Blocking Ġand Ġnot Ġrun Blocking Test Ġbecause Ġof Ġthis Ġopen Ġissue : ĊĠĠĠĠ Ġ* Ġhttps :// github . com / Kotlin / kotlin x . coroutines / issues / 1 2 0 4 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Get Ġsearch Ġresults Ġ- Ġwith Ġsuccess Ġresult Ġ- Ġcalls Ġservice Ġand Ġreturns Ġcorrect Ġsuccess Ġresult `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmocked Query Ġ= Ġ" mocked Query " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmocked Page Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Dto Ġ= Ġmock k < Search Dto >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Result Ġ= ĠSearch Result Fixtures . just () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġservice . search ( any (), Ġany ()) Ġ} Ġco Answers Ġ{ Ġsearch Dto Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġsearch Dto . map To Domain () Ġ} Ġreturns Ġsearch Result ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrepository . search ( mocked Query , Ġmocked Page ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġservice . search ( mocked Query , Ġmocked Page ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĠshouldBe InstanceOf ĠResult . Success :: class ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( result Ġas ĠResult . Success ). result Ġshould Equal Ġsearch Result ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWe Ġhave Ġto Ġuse Ġrun Blocking Ġand Ġnot Ġrun Blocking Test Ġbecause Ġof Ġthis Ġopen Ġissue : ĊĠĠĠĠ Ġ* Ġhttps :// github . com / Kotlin / kotlin x . coroutines / issues / 1 2 0 4 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Experimental Cor outines Api ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Get Ġsearch Ġresults Ġ- Ġwith Ġerror Ġresult Ġ- Ġcalls Ġerror Ġhandler Ġand Ġreturns Ġerror Ġresult `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmocked Query Ġ= Ġ" mocked Query " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmocked Page Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexception Ġ= ĠException () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġservice . search ( any (), Ġany ()) Ġ} Ġthrows Ġexception ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrepository . search ( mocked Query , Ġmocked Page ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Verify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler . track Error ( any ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler . map Error ( any ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĠshouldBe InstanceOf ĠResult . Error :: class ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ