package Ġp oc . service Ċ Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . any Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . junit . Mockito JUnit Runner Ċ import Ġp oc . model .* Ċ import Ġp oc . repository . Entity Repository Ċ import Ġp oc . support . Test Support . random Entity Ċ import Ġp oc . support . Test Support . random String Ċ import Ġjava . time . Instant Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertTrue Ċ Ċ @ RunWith ( Mockito JUnit Runner :: class ) Ċ class ĠEntity Service Test Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdatabase Response : ĠDatabase Response Ġ= ĠDatabase Response ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrepository : ĠEntity Repository ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsut : ĠEntity Service ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġsut Ġ= ĠEntity Service ( repository ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` retrie ves Ġentity Ġby Ġid `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġrandom String () ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġrandom Entity () ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠFind ById Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected , Ġdatabase Response ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġwhenever ( repository . findBy ( any ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( response ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġsut . findBy ( id )) ĊĊĠĠĠĠĠĠĠ Ġverify ( repository ). findBy ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` retrie ves Ġnull Ġfor Ġnot Ġfound Ġentity Ġby Ġid `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġrandom String () ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠFind ById Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected , Ġdatabase Response ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġwhenever ( repository . findBy ( any ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( response ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġsut . findBy ( id )) ĊĊĠĠĠĠĠĠĠ Ġverify ( repository ). findBy ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` retrie ves Ġall Ġentities `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 . range To ( 4 ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Entity () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠFind All Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected , Ġdatabase Response ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġwhenever ( repository . findAll ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( response ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġsut . findAll ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` s aves Ġentity `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġto Save Ġ= ĠEntity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġrandom String (), Ġvalue Ġ= Ġrandom String () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġto Save . copy (). with Timestamp ( Instant . now ()) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠSave Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected , Ġdatabase Response ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġwhenever ( repository . save ( any ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( response ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġsut . save ( to Save )) ĊĊĠĠĠĠĠĠĠ Ġverify ( repository ). save ( to Save ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` de letes Ġentity `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġrandom String () ĊĊĠĠĠĠĠĠĠ Ġwhenever ( repository . delete ( any ())). thenReturn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDelete Response ( database Response ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( sut . delete ( id )) ĊĊĠĠĠĠĠĠĠ Ġverify ( repository ). delete ( id ) ĊĠĠĠ Ġ} Ċ Ċ }