package Ġcom . j ann is . j ahr . the b oring game . controllers Ċ import Ġcom . j ann is . j ahr . the b oring game . entities . Player Ċ import Ġcom . j ann is . j ahr . the b oring game . repositories . Player Repository Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . mockito . BDD Mockito . given Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . test . autoconfigure . web . servlet . Auto Configure MockMvc Ċ import Ġorg . springframework . boot . test . context . SpringBootTest Ċ import Ġorg . springframework . boot . test . mock . mockito . Mock Bean Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . test . web . servlet . MockMvc Ċ import Ġorg . springframework . test . web . servlet . request . MockMvc Request Builders . get Ċ import Ġorg . springframework . test . web . servlet . request . MockMvc Request Builders . post Ċ import Ġorg . springframework . test . web . servlet . result . MockMvc Result Matchers .* ĊĊ Ċ @ SpringBootTest Ċ @ Auto Configure MockMvc Ġ// need Ġthis Ġin ĠSpring ĠBoot Ġtest Ċ class ĠGame Controller Test (@ Autowired Ġval Ġmock Mvc : ĠMock Mvc ) Ġ{ ĊĠĠĠ Ġ@ Mock Bean ĊĠĠĠ Ġlateinit Ġvar Ġplayer Repository : ĠPlayer Repository ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplayer 1 Ġ= ĠPlayer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġ" Jon as ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscore Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġplayer 2 Ġ= ĠPlayer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġ" A br ah am ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscore Ġ= Ġ- 1 0 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Retrieve Ġall ĠP layers Ġ- ĠOK `() Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven ( player Repository . findAll ()). willReturn ( mutable ListOf ( player 1 , Ġplayer 2 )) ĊĠĠĠĠĠĠĠ Ġmock Mvc . perform ( get ("/ players "). accept ( MediaType . APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( content (). contentType ( MediaType . APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( json Path ("$ [ 0 ]. id "). value ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( json Path ("$ [ 0 ]. username "). value (" Jon as ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( json Path ("$ [ 0 ]. score "). value ( 1 0 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( json Path ("$ [ 1 ]. id "). value ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( json Path ("$ [ 1 ]. username "). value (" A br ah am ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( json Path ("$ [ 1 ]. score "). value (- 1 0 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Add ĠPlayer Ġwith Ġname Ġthat Ġexists Ġ- ĠConflict `() Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven ( player Repository . findBy Username (" Jon as ")). willReturn ( mutable ListOf ( player 1 )) ĊĠĠĠĠĠĠĠ Ġmock Mvc . perform ( post ("/ players ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. param (" username ", Ġ" Jon as ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is 4 xx Client Error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Retrieve ĠPlayer Ġ- ĠOK `() Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven ( player Repository . findBy Username (" Jon as ")). willReturn ( mutable ListOf ( player 1 )) ĊĠĠĠĠĠĠĠ Ġmock Mvc . perform ( get ("/ players / Jon as ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( json Path (" $. id "). value ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( json Path (" $. username "). value (" Jon as ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( json Path (" $. score "). value (- 1 0 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Retrieve ĠPlayer Ġ- ĠNot Ġfound `() Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven ( player Repository . findBy Username (" Jon as ")). willReturn ( mutable ListOf ( player 1 )) ĊĠĠĠĠĠĠĠ Ġmock Mvc . perform ( get ("/ players / J ak ob ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is 4 xx Client Error ) ĊĠĠĠ Ġ} Ċ }