package Ġcz . lo ono . backend . api . v 1 Ċ Ċ import Ġcz . lo ono . backend . api . dto . Badge Type Dto Ċ import Ġcz . lo ono . backend . api . dto . Exam ination Id Dto Ċ import Ġcz . lo ono . backend . api . dto . Exam ination Record Dto Ċ import Ġcz . lo ono . backend . api . dto . Exam ination Type Dto Ċ import Ġcz . lo ono . backend . api . service . Exam ination Record Service Ċ import Ġcz . lo ono . backend . api . service . Pre vention Service Ċ import Ġcz . lo ono . backend . create Account Ċ import Ġcz . lo ono . backend . create Basic User Ċ import Ġcz . lo ono . backend . db . model . Badge Ċ import Ġcz . lo ono . backend . db . repository . Account Repository Ċ import Ġcz . lo ono . backend . extensions . to LocalDateTime Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . mockito . kotlin . mock Ċ import Ġorg . mockito . kotlin . wh enever Ċ import Ġorg . springframework . boot . test . context . SpringBootTest Ċ import Ġorg . springframework . boot . test . context . Test Configuration Ċ import Ġorg . springframework . context . annotation . Bean Ċ import Ġorg . springframework . context . annotation . Import Ċ import Ġorg . springframework . context . annotation . Primary Ċ import Ġorg . springframework . transaction . annotation . Transactional Ċ import Ġjava . time . Clock Ċ import Ġjava . time . Instant Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . LocalDateTime Ċ Ċ @ SpringBootTest ( properties Ġ= Ġ[" spring . profiles . active = test "]) Ċ @ Import ( Exam ination Record Service :: class , ĠPre vention Service :: class ) Ċ class ĠEx amin ations Controller Test ( ĊĠĠĠ Ġprivate Ġval Ġrecord Service : ĠExam ination Record Service , ĊĠĠĠ Ġprivate Ġval Ġpre vention Service : ĠPre vention Service , ĊĠĠĠ Ġprivate Ġval Ġrepo : ĠAccount Repository Ċ ) Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Transactional ĊĠĠĠ Ġfun Ġ` Should Ġadd Ġbadge Ġand Ġpoints `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontroller Ġ= ĠEx amin ations Controller ( record Service , Ġpre vention Service ) ĊĠĠĠĠĠĠĠ Ġval Ġbasic User Ġ= Ġcreate Basic User () ĊĠĠĠĠĠĠĠ Ġvar Ġexisting Account Ġ= Ġcreate Account ( birthday Ġ= ĠLocalDate . of ( 1 9 7 0 , Ġ 1 , Ġ 1 )) ĊĠĠĠĠĠĠĠ Ġval Ġexam ination Record Ġ= ĠExam ination Record Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠExam ination Type Dto . D ENT IST , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplanned Date Ġ= ĠLocalDateTime . now (). minus Years ( 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Exam Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġdone Ġto Ġget Ġassigned ĠID Ġby Ġthe ĠDB ĊĠĠĠĠĠĠĠ Ġexisting Account Ġ= Ġrepo . save ( existing Account ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Badge Ġ= ĠBadge ( Badge Type Dto . HEAD BAND . value , Ġexisting Account . id , Ġ 1 , Ġexisting Account , ĠInstant . of Epoch Milli ( 1 6 4 4 6 8 2 4 4 6 4 1 9 L ). to LocalDateTime ()) ĊĊĠĠĠĠĠĠĠ Ġvar Ġexam UUID Ġ= Ġcontroller . update OrCreate ( basic User , Ġexam ination Record ). uuid !! ĊĠĠĠĠĠĠĠ Ġcontroller . confirm ( basic User , ĠExam ination Id Dto ( exam UUID )) ĊĊĠĠĠĠĠĠĠ Ġvar Ġactual Ġ= Ġrepo . findBy Uid (" uid ") !! ĊĠĠĠĠĠĠĠ ĠassertThat ( actual . badges ). contains Exactly ( expected Badge ) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual . points ). isEqualTo ( 3 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġcontroller . update OrCreate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbasic User , Ġexam ination Record . copy ( pl anned Date Ġ= ĠLocalDateTime . now (). minus Years ( 1 )) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMaking Ġsure Ġthat Ġlevel Ġupgraded Ġand Ġpoints Ġincreased ĊĠĠĠĠĠĠĠ Ġactual Ġ= Ġrepo . findBy Uid (" uid ") !! ĊĠĠĠĠĠĠĠ ĠassertThat ( actual . badges ). contains Exactly ( expected Badge . copy ( level Ġ= Ġ 2 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual . points ). isEqualTo ( 6 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreating Ġexam Ġof Ġanother Ġtype ĊĠĠĠĠĠĠĠ Ġexam UUID Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontroller . update OrCreate ( basic User , Ġexam ination Record . copy ( type Ġ= ĠExam ination Type Dto . U RO LOG IST )). uuid !! ĊĠĠĠĠĠĠĠ Ġcontroller . confirm ( basic User , ĠExam ination Id Dto ( exam UUID )) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( actual . badges ). contains Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Badge . copy ( level Ġ= Ġ 2 ), Ġexpected Badge . copy ( type Ġ= ĠBadge Type Dto . B EL T . value ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual . points ). isEqualTo ( 9 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Configuration ĊĠĠĠ Ġclass ĠMock ed Clock Config Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠ Ġ@ Primary ĊĠĠĠĠĠĠĠ Ġfun Ġmocked Clock () Ġ= Ġmock < Clock >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( instant ()). thenReturn ( Instant . of Epoch Milli ( 1 6 4 4 6 8 2 4 4 6 4 1 9 L )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ