package Ġlt . code dict ed . eg z amin ai . core . unit . controller . pup p Ċ Ċ import Ġio . mock k .* Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġio . mock k . junit 5 . Mock K Extension Ċ import Ġlt . code dict ed . eg z amin ai . core . model . pup p . P up p Exam Ċ import Ġlt . code dict ed . eg z amin ai . core . model . types . P up p Exam Name Ċ import Ġlt . code dict ed . eg z amin ai . core . repository . pup p . P up p Exam Repository Ċ import Ġlt . code dict ed . eg z amin ai . core . service . Validator To Exception Converter Ċ import Ġlt . code dict ed . eg z amin ai . core . service . pup p . P up p Exam Service Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ Ċ @ Extend With ( Mock K Extension :: class ) Ċ class ĠP up p Exam Service Test Ġ{ ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrepository : ĠP up p Exam Repository ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġvalidator : ĠValidator To Exception Converter ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontroller : ĠP up p Exam Service ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontroller Ġ= ĠP up p Exam Service ( repository , Ġvalidator ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Retrie ves Ġex ams `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ex ams Ġ= ĠlistOf ( P up p Exam (" id ", ĠP up p Exam Name . L ITH U AN IAN _ LANGUAGE _ WR IT ING , Ġ 2 0 2 0 , Ġ" url ")) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrepository . findAll () Ġ} Ġreturns Ġexpected Ex ams ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ex ams Ġ= Ġcontroller . get Ex ams () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Ex ams , Ġactual Ex ams ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` S aves Ġexam `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Exam Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP up p Exam (" id ", ĠP up p Exam Name . L ITH U AN IAN _ LANGUAGE _ WR IT ING , Ġ 2 0 2 0 , Ġ" url ") ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrepository . save ( any ()) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġvalidator . validate ( expected Exam ) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠ Ġcontroller . save ( expected Exam ) ĊĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġrepository . save ( any ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Valid ates Ġon Ġsave `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Exam Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP up p Exam (" id ", ĠP up p Exam Name . L ITH U AN IAN _ LANGUAGE _ WR IT ING , Ġ 2 0 2 0 , Ġ" url ") ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrepository . save ( any ()) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġvalidator . validate ( expected Exam ) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠ Ġcontroller . save ( expected Exam ) ĊĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġvalidator . validate ( expected Exam ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Updates Ġexam `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Exam Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP up p Exam (" id ", ĠP up p Exam Name . L ITH U AN IAN _ LANGUAGE _ WR IT ING , Ġ 2 0 2 0 , Ġ" url ") ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrepository . save ( expected Exam ) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġvalidator . validate ( expected Exam ) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠ Ġcontroller . update ( expected Exam ) ĊĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġrepository . save ( expected Exam ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Valid ates Ġon Ġupdate `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Exam Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP up p Exam (" id ", ĠP up p Exam Name . L ITH U AN IAN _ LANGUAGE _ WR IT ING , Ġ 2 0 2 0 , Ġ" url ") ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrepository . save ( any ()) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġvalidator . validate ( expected Exam ) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠ Ġcontroller . update ( expected Exam ) ĊĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġvalidator . validate ( expected Exam ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Deletes Ġexam `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrepository . delete ById (" id ") Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠ Ġcontroller . delete (" id ") ĊĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġrepository . delete ById (" id ") Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ