package Ġcom . github . dan zx . x of . core . use case . post Ċ Ċ import Ġcom . github . dan zx . x of . core . dat apro vider . Post Vote Pers ister Ċ import Ġcom . github . dan zx . x of . core . domain . Vote Ċ import Ġcom . github . dan zx . x of . core . test . constants . TEST _ POST Ċ import Ġcom . github . dan zx . x of . core . use case . user . Validate UserId Exists UseCase Ċ Ċ import Ġio . mock k . impl . annotations . Inject Mock Ks Ċ import Ġio . mock k . impl . annotations . Rel ax ed Mock K Ċ import Ġio . mock k . junit 5 . Mock K Extension Ċ import Ġio . mock k . verify Order Ċ Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ Ċ @ Extend With ( Mock K Extension :: class ) Ċ class ĠV ote On Post UseCase Test Ġ{ ĊĊĠĠĠ Ġ@ Rel ax ed Mock K Ġlateinit Ġvar Ġvalidate Post Id Exists UseCase : ĠValidate Post Id Exists UseCase ĊĠĠĠ Ġ@ Rel ax ed Mock K Ġlateinit Ġvar Ġvalidate UserId Exists UseCase : ĠValidate UserId Exists UseCase ĊĠĠĠ Ġ@ Rel ax ed Mock K Ġlateinit Ġvar Ġpost Vote Pers ister Ġ: ĠPost Vote Pers ister ĊĠĠĠ Ġ@ Inject Mock Ks Ġlateinit Ġvar Ġuse Case : ĠV ote On Post UseCase ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġsave Ġor Ġupdate Ġthe Ġpost Ġvotes Ġwhen Ġno Ġexceptions Ġhappen `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcommand Ġ= ĠV ote ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Id Ġ= ĠTEST _ POST . id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠuserId Ġ= ĠTEST _ POST . user . id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection Ġ= ĠV ote . Direction . UP ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġuse Case ( command ) ĊĊĠĠĠĠĠĠĠ Ġverify Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Post Id Exists UseCase ( command . entityId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate UserId Exists UseCase ( command . userId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Vote Pers ister . save OrUpdate ( command ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }