package Ġcom . ep am . br n . integration Ċ Ċ import Ġcom . ep am . br n . model . Exercise Ċ import Ġcom . ep am . br n . model . Exercise Group Ċ import Ġcom . ep am . br n . model . Exercise Type Ċ import Ġcom . ep am . br n . model . Series Ċ import Ġcom . ep am . br n . model . Study History Ċ import Ġcom . ep am . br n . model . User Account Ċ import Ġcom . ep am . br n . repo . Exercise Group Repository Ċ import Ġcom . ep am . br n . repo . Exercise Repository Ċ import Ġcom . ep am . br n . repo . Series Repository Ċ import Ġcom . ep am . br n . repo . Study History Repository Ċ import Ġcom . ep am . br n . repo . User Account Repository Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . LocalDateTime Ċ import Ġorg . json . JSONObject Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . junit . jupiter . api . Tag Ċ import Ġorg . junit . jupiter . api . Test Ċ 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 . http . MediaType Ċ import Ġorg . springframework . security . test . context . support . With Mock User Ċ import Ġorg . springframework . test . context . Active Profiles Ċ import Ġorg . springframework . test . web . servlet . MockMvc Ċ import Ġorg . springframework . test . web . servlet . request . MockMvc Request Builders Ċ import Ġorg . springframework . test . web . servlet . result . MockMvc Result Matchers Ċ import Ġorg . springframework . test . web . servlet . result . MockMvc Result Matchers . json Path Ċ import Ġorg . springframework . test . web . servlet . result . MockMvc Result Matchers . status Ċ Ċ @ SpringBootTest Ċ @ Auto Configure MockMvc Ċ @ Active Profiles (" integration - tests ") Ċ @ Tag (" integration - test ") Ċ @ With Mock User ( username Ġ= Ġ" admin ", Ġroles Ġ= Ġ[" ADMIN "]) Ċ class ĠEx ercises Controller IT Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠbaseUrl Ġ= Ġ"/ exercises " ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġuser Account Repository : ĠUser Account Repository ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġexercise Repository : ĠExercise Repository ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġseries Repository : ĠSeries Repository ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġstudy History Repository : ĠStudy History Repository ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġexercise Group Repository : ĠExercise Group Repository ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġmock Mvc : ĠMock Mvc ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun Ġdelete After Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġstudy History Repository . delete All () ĊĠĠĠĠĠĠĠ Ġexercise Repository . delete All () ĊĠĠĠĠĠĠĠ Ġseries Repository . delete All () ĊĠĠĠĠĠĠĠ Ġexercise Group Repository . delete All () ĊĠĠĠĠĠĠĠ Ġuser Account Repository . delete All () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġget Ġdone Ġexercises Ġby ĠuserId Ġand Ġseries Id `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġval Ġexercise Name Ġ= Ġ" SO M ENAME " ĊĠĠĠĠĠĠĠ Ġval Ġexisting Series Ġ= Ġinsert Series () ĊĠĠĠĠĠĠĠ Ġval Ġexisting User Ġ= Ġinsert User () ĊĠĠĠĠĠĠĠ Ġval Ġexisting Exercise Ġ= Ġinsert Exercise ( exercise Name , Ġexisting Series ) ĊĠĠĠĠĠĠĠ Ġinsert Study History ( existing User , Ġexisting Exercise ) ĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĊĠĠĠĠĠĠĠ Ġval Ġresult Action Ġ= Ġmock Mvc . perform ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock Mvc Request Builders ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. param (" userId ", Ġexisting User . id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. param (" series Id ", Ġexisting Series . id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// ĠTHEN ĊĠĠĠĠĠĠĠ Ġresult Action ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( MockMvc Result Matchers . content (). contentType ( MediaType . APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( json Path (" $. data [ 0 ]. name "). value ( exercise Name )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġget Ġexercises Ġby Ġexercise Id `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġval Ġexercise Name Ġ= Ġ" SO M ENAME " ĊĠĠĠĠĠĠĠ Ġval Ġexisting Series Ġ= Ġinsert Series () ĊĠĠĠĠĠĠĠ Ġval Ġexisting Exercise Ġ= Ġinsert Exercise ( exercise Name , Ġexisting Series ) ĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĊĠĠĠĠĠĠĠ Ġval Ġresult Action Ġ= Ġmock Mvc . perform ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock Mvc Request Builders ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( baseUrl Ġ+ Ġ"/" Ġ+ Ġexisting Exercise . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// ĠTHEN ĊĠĠĠĠĠĠĠ Ġresult Action ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( MockMvc Result Matchers . content (). contentType ( MediaType . APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠ Ġval Ġjson Response Ġ= ĠJSONObject ( result Action . andReturn (). response . content AsString ) ĊĠĠĠĠĠĠĠ Ġval Ġjson DataObject Ġ= Ġjson Response . getJSONObject (" data ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( exercise Name , Ġjson DataObject . get (" name ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinsert Study History ( ĊĠĠĠĠĠĠĠ Ġexisting User : ĠUser Account , ĊĠĠĠĠĠĠĠ Ġexisting Exercise : ĠExercise ĊĠĠĠ Ġ): ĠStudy History Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġstudy History Repository . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStudy History ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Account Ġ= Ġexisting User , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexercise Ġ= Ġexisting Exercise , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendTime Ġ= ĠLocalDateTime . now (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartTime Ġ= ĠLocalDateTime . now (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtasks Count Ġ= Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepet ition Index Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinsert User (): ĠUser Account Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġuser Account Repository . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Account ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfirstName Ġ= Ġ" test User FirstName ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlastName Ġ= Ġ" test User LastName ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbirthday Ġ= ĠLocalDate . now (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġ" 1 2 3 @ 1 2 3 . asd ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġ" password ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinsert Series (): ĠSeries Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexercise Group Ġ= Ġexercise Group Repository . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠExercise Group ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" desc ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" group " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġseries Repository . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSeries ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" desc ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" series ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexercise Group Ġ= Ġexercise Group ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinsert Exercise ( exercise Name : ĠString , Ġseries : ĠSeries ): ĠExercise Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġexercise Repository . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠExercise ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠtoString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseries Ġ= Ġseries , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevel Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġexercise Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexercise Type Ġ= ĠExercise Type . SINGLE _ WORDS . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ