/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠJames ĠB acon Ċ Ġ* Ċ Ġ* Ġ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 Ġuk . co . b acon i . playground . kotlin . akka . hw Ċ Ċ import Ġakka . actor . Actor System Ċ import Ġakka . actor . Scheduler Ċ import Ġakka . actor . typed . Actor Ref Ċ import Ġio . kot lint est . shouldBe Ċ import Ġio . kot lint est . specs . String Spec Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . spy k Ċ import Ġio . mock k . verify Ċ import Ġuk . co . b acon i . playground . kotlin . akka . test kit . Mock ing Support Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . Comp letableFuture Ċ import Ġjava . util . concurrent . Completion Stage Ċ Ċ class ĠHello World Provider Spec Ġ: ĠMock ing Support , ĠString Spec ({ ĊĊĠĠĠ Ġval Ġmock Actor System : ĠActor System Ġ= Ġmock k () ĊĠĠĠ Ġval Ġmock Actor Ref : ĠActor Ref < HelloWorld Command > Ġ= Ġmock k () ĊĠĠĠ Ġval Ġmock Scheduler : ĠScheduler Ġ= Ġmock k () ĊĊĠĠĠ Ġval Ġunder Test : ĠHello World Provider Ġ= Ġspy k () ĊĊĠĠĠ Ġ"[ Happy ĠPath ] ĠSpawn Ġan Ġactor Ġper Ġrequest Ġwith Ġa Ġunique Ġname " Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġuuid Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġunder Test . actor Id Provider () Ġ} Ġreturns Ġuuid ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġunder Test . spawn < HelloWorld Command >( any (), Ġany (), Ġany ()) Ġ} Ġreturns Ġmock Actor Ref ĊĊĠĠĠĠĠĠĠ Ġval Ġcompletion Stage : ĠCompletion Stage < HelloWorld Message > Ġ= ĠCompletableFuture . completed Future ( HelloWorld Message ("")) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġunder Test . ask < HelloWorld Command , ĠHello World Message >( any (), Ġany (), Ġany (), Ġany ()) Ġ} Ġreturns Ġcompletion Stage ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmock Actor System . scheduler Ġ} Ġreturns Ġmock Scheduler ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġunder Test . invoke ( mock Actor System ) ĊĠĠĠĠĠĠĠ Ġresult ĠshouldBe Ġcompletion Stage ĊĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġunder Test . spawn < HelloWorld Command >( any (), Ġany (), Ġ" hello - world -$ uuid ") Ġ} ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġunder Test . ask < HelloWorld Command , ĠHello World Message >( mock Actor Ref , Ġany (), Ġany (), Ġmock Scheduler ) Ġ} ĊĠĠĠ Ġ} Ċ Ċ })