package Ġlt . bold admin . c row bar . test . unit . generator Ċ Ċ import Ġio . mock k .* Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġio . mock k . junit 5 . Mock K Extension Ċ import Ġlt . bold admin . c row bar . generator . Confirmation Code Generator Ċ import Ġlt . bold admin . c row bar . repository . User Confirmation Code Repository Ċ import Ġlt . bold admin . c row bar . type . entity . User Confirmation Code Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Assertions . assertTrue Ċ 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 ĠConfirm ation Code Generator Test Ġ{ ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrepository Mock : ĠUser Confirmation Code Repository ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġconfirmation Code Generator : ĠConfirm ation Code Generator ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġ` Set Ġup `() Ġ{ ĊĠĠĠĠĠĠĠ Ġconfirmation Code Generator Ġ= ĠConfirm ation Code Generator ( repository Mock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Stores Ġconfirmation Ġcode `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrepository Mock . exists By Code ( any ()) Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrepository Mock . save ( any ()) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠ Ġconfirmation Code Generator . generate And Store ( USER _ ID ) ĊĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġrepository Mock . save ( any ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Gener ates Ġconfirmation Ġcode `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfirmation Code Ġ= ĠCapt uring Slot < String >() ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrepository Mock . exists By Code ( capture ( confirmation Code )) Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrepository Mock . save ( any ()) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠ Ġconfirmation Code Generator . generate And Store ( USER _ ID ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( confirmation Code . captured . isNotEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Gener ates Ġconfirmation Ġcode Ġuntil Ġunique Ġone Ġis Ġfound `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfirmation Codes Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġval Ġsaved Code Ġ= ĠCapt uring Slot < User Confirmation Code >() ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrepository Mock . exists By Code ( capture ( confirmation Codes )) Ġ} Ġreturns Ġtrue Ġand Then Ġfalse ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrepository Mock . save ( capture ( saved Code )) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠ Ġconfirmation Code Generator . generate And Store ( USER _ ID ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( confirmation Codes [ 0 ] Ġ!= Ġconfirmation Codes [ 1 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( USER _ ID , Ġsaved Code . captured . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( confirmation Codes [ 1 ], Ġsaved Code . captured . code ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠUSER _ ID Ġ= Ġ" userId " ĊĠĠĠ Ġ} Ċ } Ċ