package Ġcom . b phen ri ques . employ e esh ifts . shift Ċ Ċ import Ġcom . b phen ri ques . employ e esh ifts . domain . employee . model . Employee Ċ import Ġcom . b phen ri ques . employ e esh ifts . test helper . Employee Test Client Ċ import Ġcom . b phen ri ques . employ e esh ifts . test helper . SQL Util Ċ import Ġcom . b phen ri ques . employ e esh ifts . test helper . Shift Test Client Ċ import Ġcom . b phen ri ques . employ e esh ifts . test helper . tr uncated To Minute Ċ import Ġcom . b phen ri ques . test . Generator . new Employee Ċ import Ġcom . b phen ri ques . test . Generator . new Shift Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . test . autoconfigure . web . reactive . Auto Configure Web Test Client Ċ import Ġorg . springframework . boot . test . context . SpringBootTest Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . jdbc . core . Jdbc Template Ċ import Ġorg . springframework . test . annotation . Dir ties Context Ċ import Ġjava . time . Instant Ċ import Ġjava . time . temporal . Ch rono Unit Ċ Ċ @ SpringBootTest Ċ @ Auto Configure Web Test Client Ċ @ Dir ties Context ( class Mode Ġ= ĠD irt ies Context . Class Mode . BEFORE _ CLASS ) Ċ class ĠCRUD Sh ifts Multiple Employees Tests Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġemployee Test Client : ĠEmployee Test Client ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġshift Test Client : ĠShift Test Client ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġjdbc Template : ĠJdbc Template ĊĊĠĠĠ Ġprivate Ġval Ġnow Ġ= ĠInstant . parse (" 2 0 2 0 - 0 1 - 0 1 T 1 2 : 0 0 : 0 0 Z ") ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ ĠSQL Util . clear All ( jdbc Template ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Create , Ġread , Ġupdate , Ġand Ġdelete Ġsh ifts Ġfor Ġmultiple Ġemployees `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemployee 1 Ġ= Ġcreate Employee ( new Employee ()) ĊĠĠĠĠĠĠĠ Ġval Ġemployee 2 Ġ= Ġcreate Employee ( new Employee ()) ĊĠĠĠĠĠĠĠ Ġval Ġemployee 3 Ġ= Ġcreate Employee ( new Employee ()) ĊĠĠĠĠĠĠĠ Ġval Ġshift 1 Employee 1 Ġ= Ġnew Shift (). copy ( employee Id Ġ= Ġemployee 1 . id , Ġstart Shift Ġ= Ġnow , Ġend Shift Ġ= Ġnow . plus ( 1 , ĠCh rono Unit . MIN UTES )) ĊĠĠĠĠĠĠĠ Ġval Ġshift 2 Employee 1 Ġ= Ġnew Shift (). copy ( employee Id Ġ= Ġemployee 1 . id , Ġstart Shift Ġ= Ġnow . plus ( 1 , ĠCh rono Unit . MIN UTES ), Ġend Shift Ġ= Ġnow . plus ( 2 , ĠCh rono Unit . MIN UTES )) ĊĠĠĠĠĠĠĠ Ġval Ġshift 1 Employee 2 Ġ= Ġnew Shift (). copy ( employee Id Ġ= Ġemployee 2 . id , Ġstart Shift Ġ= Ġnow , Ġend Shift Ġ= Ġnow . plus ( 1 , ĠCh rono Unit . MIN UTES )) ĊĠĠĠĠĠĠĠ Ġval Ġshift 1 Employee 3 Ġ= Ġnew Shift (). copy ( employee Id Ġ= Ġemployee 3 . id , Ġstart Shift Ġ= Ġnow , Ġend Shift Ġ= Ġnow . plus ( 1 , ĠCh rono Unit . MIN UTES )) ĊĠĠĠĠĠĠĠ Ġval Ġall Sh ifts Ġ= ĠlistOf ( shift 1 Employee 1 , Ġshift 2 Employee 1 , Ġshift 1 Employee 2 , Ġshift 1 Employee 3 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate ĊĠĠĠĠĠĠĠ Ġval Ġcreated Sh ifts Ġ= Ġshift Test Client . upsert Sh ifts ( all Sh ifts ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Header (). contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshift Test Client . extract Sh ifts ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( all Sh ifts . tr uncated To Minute (), Ġcreated Sh ifts . map Ġ{ Ġit . copy ( id Ġ= Ġ 0 ) Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠFind ĊĠĠĠĠĠĠĠ Ġval ĠgetBy Employee 1 And 2 Ġ= Ġshift Test Client . find Sh ifts By Employee Id ( listOf ( employee 1 . id , Ġemployee 2 . id )). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Header (). contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreated Sh ifts . filter Ġ{ Ġit . employee Id Ġ== Ġemployee 1 . id Ġ|| Ġit . employee Id Ġ== Ġemployee 2 . id Ġ}. toSet (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshift Test Client . extract Sh ifts ( getBy Employee 1 And 2 ). toSet () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠUpdate ĊĠĠĠĠĠĠĠ Ġval Ġmove All Sh ifts Up Ġ= Ġcreated Sh ifts . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Shift Ġ= Ġit . start Shift . plus ( 1 , ĠCh rono Unit . HOUR S ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Shift Ġ= Ġit . end Shift . plus ( 1 , ĠCh rono Unit . HOUR S ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġshift Test Client . upsert Sh ifts ( move All Sh ifts Up ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Header (). contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġupdated Sh ifts Ġ= Ġshift Test Client . find Sh ifts By Employee Id ( move All Sh ifts Up . map Ġ{ Ġit . employee Id Ġ}). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshift Test Client . extract Sh ifts ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove All Sh ifts Up . toSet (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdated Sh ifts . toSet () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDelete ĊĠĠĠĠĠĠĠ Ġshift Test Client . delete Sh ifts Id ( updated Sh ifts . filter Ġ{ Ġit . employee Id Ġ== Ġemployee 1 . id Ġ}. map Ġ{ Ġit . id Ġ}). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Status (). is Ok ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdated Sh ifts . filter Not Ġ{ Ġit . employee Id Ġ== Ġemployee 1 . id Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshift Test Client . extract Sh ifts ( shift Test Client . find Sh ifts By Employee Id ( listOf ( employee 1 . id , Ġemployee 2 . id , Ġemployee 3 . id ))) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Employee ( employee : ĠEmployee ): ĠEmployee Ġ= ĊĠĠĠĠĠĠĠ Ġemployee Test Client . create Employee ( employee ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Status (). is Created ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemployee Test Client . extract Employee ( this ) ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ