package Ġcom . co ach . fl ame . testing . integration . api . co ach Ċ Ċ import Ġcom . co ach . fl ame . jpa . entity . Client Ċ import Ġcom . co ach . fl ame . jpa . entity . Client Status Ċ import Ġcom . co ach . fl ame . jpa . entity . Co ach Ċ import Ġcom . co ach . fl ame . jpa . entity . maker .* Ċ import Ġcom . co ach . fl ame . testing . framework . Json Builder Ċ import Ġcom . co ach . fl ame . testing . framework . Load Request Ċ import Ġcom . co ach . fl ame . testing . integration . base . Base IntegrationTest Ċ import Ġcom . nat pr y ce . make ite asy . Make It Easy . with Ċ import Ġorg . assertj . core . api . BDD Assertions . then Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . test . web . client . Test Rest Template Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . web . bind . annotation . Request Method Ċ import Ġjava . util .* Ċ Ċ class ĠGet Client Co ach Plus Clients Available Test Ġ: ĠBase IntegrationTest () Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrest Template : ĠTest Rest Template ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġclient 1 : ĠClient ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġclient 2 : ĠClient ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġclient 3 : ĠClient ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġclient 4 : ĠClient ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġclient 5 : ĠClient ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġclient 6 : ĠClient ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġco ach 1 : ĠCo ach ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġco ach 2 : ĠCo ach ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġoverride Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setup () ĊĊĠĠĠĠĠĠĠ Ġco ach 1 Ġ= Ġco ach Repository . save And Flush ( co ach Maker . but ( with ( Co ach Maker . uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUUID . fromString (" e 5 9 3 4 3 bc - 6 5 6 3 - 4 4 8 8 - a 7 7 e - 1 1 2 e 8 8 6 c 5 7 ae ")), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Co ach Maker . client Type , Ġco ach Type ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Co ach Maker . user , Ġuser Maker ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. but ( with ( User Maker . user Session , Ġuser Session Maker ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. but ( with ( User Session Maker . token , ĠUUID . randomUUID ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. make ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. make ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. make ()) ĊĊĠĠĠĠĠĠĠ Ġco ach 2 Ġ= Ġco ach Repository . save And Flush ( co ach Maker . but ( with ( Co ach Maker . client Type , Ġco ach Type )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. make ()) ĊĊĠĠĠĠĠĠĠ Ġclient 1 Ġ= Ġclient Repository . save And Flush ( client Maker . but ( with ( Client Maker . uuid , ĠUUID . randomUUID ()), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Client Maker . client Type , Ġclient Type )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. make ()) ĊĊĠĠĠĠĠĠĠ Ġclient 2 Ġ= Ġclient Repository . save And Flush ( client Maker . but ( with ( Client Maker . uuid , ĠUUID . randomUUID ()), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Client Maker . client Type , Ġclient Type )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. make ()) ĊĊĠĠĠĠĠĠĠ Ġclient 3 Ġ= Ġclient Repository . save And Flush ( client Maker . but ( with ( Client Maker . uuid , ĠUUID . randomUUID ()), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Client Maker . client Type , Ġclient Type )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. make ()) ĊĊĠĠĠĠĠĠĠ Ġclient 4 Ġ= Ġclient Repository . save And Flush ( client Maker . but ( with ( Client Maker . uuid , ĠUUID . randomUUID ()), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Client Maker . client Type , Ġclient Type )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. make ()) ĊĊĠĠĠĠĠĠĠ Ġclient 5 Ġ= Ġclient Repository . save And Flush ( client Maker . but ( with ( Client Maker . uuid , ĠUUID . randomUUID ()), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Client Maker . client Type , Ġclient Type )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. make ()) ĊĊĠĠĠĠĠĠĠ Ġclient 6 Ġ= Ġclient Repository . save And Flush ( client Maker . but ( with ( Client Maker . uuid , ĠUUID . randomUUID ()), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Client Maker . client Type , Ġclient Type ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Client Maker . client Status , ĠClient Status . ACCEPT ED ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Client Maker . co ach , Ġco ach 2 )). make ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Load Request ( ĊĠĠĠĠĠĠĠ Ġendpoint Ġ= Ġ"/ api / co ach / getClient s Co ach Plus Clients Available ", ĊĠĠĠĠĠĠĠ Ġhttp Method Ġ= ĠRequestMethod . GET , ĊĠĠĠĠĠĠĠ Ġparameters Ġ= Ġ[" identifier : e 5 9 3 4 3 bc - 6 5 6 3 - 4 4 8 8 - a 7 7 e - 1 1 2 e 8 8 6 c 5 7 ae "] ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġ` test Ġget Ġclients Ġfrom Ġco ach Ġplus Ġthe Ġclients Ġavailable Ġfor Ġco aching `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġclient 1 . client Status Ġ= ĠClient Status . ACCEPT ED ĊĠĠĠĠĠĠĠ Ġclient 1 . co ach Ġ= Ġco ach 1 ĊĊĠĠĠĠĠĠĠ Ġclient 2 . client Status Ġ= ĠClient Status . PENDING ĊĠĠĠĠĠĠĠ Ġclient 2 . co ach Ġ= Ġco ach 1 ĊĊĠĠĠĠĠĠĠ Ġclient 3 . client Status Ġ= ĠClient Status . PENDING ĊĠĠĠĠĠĠĠ Ġclient 3 . co ach Ġ= Ġco ach 1 ĊĊĠĠĠĠĠĠĠ Ġclient Repository . save All ( listOf ( client 1 , Ġclient 2 , Ġclient 3 )) ĊĠĠĠĠĠĠĠ Ġclient Repository . flush () ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġrest Template . exchange ( request !! , ĠString :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ Ġthen ( response ). isNotNull ĊĠĠĠĠĠĠĠ Ġthen ( response . statusCode ). isEqualTo ( HttpStatus . OK ) ĊĠĠĠĠĠĠĠ Ġthen ( response . headers . contentType ). isEqualTo ( MediaType . APPLICATION _ JSON ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= ĠJson Builder . get Json FromString ( response . body !! ) ĊĊĠĠĠĠĠĠĠ Ġthen ( body . getAs Json Primitive (" identifier "). asString ). isEqualTo (" e 5 9 3 4 3 bc - 6 5 6 3 - 4 4 8 8 - a 7 7 e - 1 1 2 e 8 8 6 c 5 7 ae ") ĊĠĠĠĠĠĠĠ Ġthen ( body . getAs JsonArray (" clients Co ach ")). has Size ( 5 ) ĊĊĠĠĠĠĠĠĠ Ġval ĠlistOf Clients Ġ= Ġbody . getAs JsonArray (" clients Co ach ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . as JsonObject . getAs Json Primitive (" identifier "). asString Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĊĠĠĠĠĠĠĠ Ġthen ( listOf Clients ). contains ( client 1 . uuid . toString ()) ĊĠĠĠĠĠĠĠ Ġthen ( listOf Clients ). contains ( client 2 . uuid . toString ()) ĊĠĠĠĠĠĠĠ Ġthen ( listOf Clients ). contains ( client 3 . uuid . toString ()) ĊĠĠĠĠĠĠĠ Ġthen ( listOf Clients ). contains ( client 4 . uuid . toString ()) ĊĠĠĠĠĠĠĠ Ġthen ( listOf Clients ). contains ( client 5 . uuid . toString ()) ĊĠĠĠĠĠĠĠ Ġthen ( listOf Clients ). does Not Contain ( client 6 . uuid . toString ()) ĊĠĠĠ Ġ} Ċ Ċ } Ċ