package Ġcom . fox . p 2 p Ċ Ċ import Ġcom . fox . persistence . Users Repository Ċ import Ġcom . fox . user . Persist able User Ċ import Ġio . kot lint est . shouldBe Ċ import Ġio . kot lint est . specs . Fun Spec Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠSte phen ĠF ox Ġon Ġ 3 / 2 4 / 1 9 . Ċ Ġ*/ Ċ class ĠSend Money Specification Ġ: ĠFun Spec ({ ĊĊĠĠĠ Ġcontext (" Receiver Ġaccepts ") Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġusers Repository Ġ= ĠUsers Repository () ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= ĠSend Money Service ( users Repository ) ĊĊĠĠĠĠĠĠĠ Ġtest (" Two Ġbrand Ġnew Ġusers , Ġone Ġsends Ġmoney Ġto Ġthe Ġother ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser 1 Ġ= ĠPers ist able User . in Memory ( 1 0 0 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser 2 Ġ= ĠPers ist able User . in Memory ( 1 0 0 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusers Repository . register ( user 1 , Ġuser 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( service ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġverify ing Ġall Ġstate Ġin Ġone Ġgo . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser 1 . pending Transactions ( user 2 ). count () ĠshouldBe Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġuser 1 . send ( user 2 , Ġsome Money Ġ= Ġ 1 0 . 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser 1 . pending Transactions ( user 2 ). count () ĠshouldBe Ġ 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser 2 . accept ( request ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusers Repository [ user 1 . id ]. balance ĠshouldBe Ġuser 1 . balance Ġ- Ġrequest . amount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusers Repository [ user 2 . id ]. balance ĠshouldBe Ġuser 2 . balance Ġ+ Ġrequest . amount ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser 1 . pending Transactions ( user 2 ). count () ĠshouldBe Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcontext (" Receiver Ġreject s ") Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġusers Repository Ġ= ĠUsers Repository () ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= ĠSend Money Service ( users Repository ) ĊĊĠĠĠĠĠĠĠ Ġtest (" Two Ġbrand Ġnew Ġusers , Ġone Ġsends Ġmoney Ġto Ġthe Ġother ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser 1 Ġ= ĠPers ist able User . in Memory ( 1 0 0 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser 2 Ġ= ĠPers ist able User . in Memory ( 1 0 0 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusers Repository . register ( user 1 , Ġuser 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( service ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġverify ing Ġall Ġstate Ġin Ġone Ġgo . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser 1 . pending Transactions ( user 2 ). count () ĠshouldBe Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġuser 1 . send ( user 2 , Ġsome Money Ġ= Ġ 1 0 . 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser 1 . pending Transactions ( user 2 ). count () ĠshouldBe Ġ 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser 2 . reject ( request ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusers Repository [ user 1 . id ]. balance ĠshouldBe Ġuser 1 . balance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusers Repository [ user 2 . id ]. balance ĠshouldBe Ġuser 2 . balance ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser 1 . pending Transactions ( user 2 ). count () ĠshouldBe Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ })