5
5
import static org .junit .jupiter .api .Assertions .assertNotNull ;
6
6
import static org .junit .jupiter .api .Assertions .assertNull ;
7
7
import static org .junit .jupiter .api .Assertions .assertTrue ;
8
- import static org .junit .jupiter .api .Assertions .assertFalse ;
9
8
9
+ import jakarta .transaction .Transactional ;
10
10
import java .util .List ;
11
11
import java .util .stream .Stream ;
12
+ import javax .management .relation .Relation ;
12
13
import org .junit .jupiter .api .Test ;
13
14
import org .junit .jupiter .params .ParameterizedTest ;
14
15
import org .junit .jupiter .params .provider .Arguments ;
17
18
import org .springframework .http .HttpStatus ;
18
19
import org .springframework .http .ResponseEntity ;
19
20
import org .springframework .test .context .jdbc .Sql ;
21
+ import uk .gov .laa .ccms .caab .assessment .model .AssessmentAttributeDetail ;
20
22
import uk .gov .laa .ccms .caab .assessment .model .AssessmentDetail ;
21
23
import uk .gov .laa .ccms .caab .assessment .model .AssessmentDetails ;
24
+ import uk .gov .laa .ccms .caab .assessment .model .AssessmentEntityDetail ;
22
25
import uk .gov .laa .ccms .caab .assessment .model .AssessmentEntityTypeDetail ;
26
+ import uk .gov .laa .ccms .caab .assessment .model .AssessmentRelationshipDetail ;
27
+ import uk .gov .laa .ccms .caab .assessment .model .AssessmentRelationshipTargetDetail ;
23
28
import uk .gov .laa .ccms .caab .assessment .model .PatchAssessmentDetail ;
24
29
25
30
public abstract class BaseAssessmentControllerIntegrationTest {
@@ -118,6 +123,7 @@ public void testGetAssessments_expect200_empty() {
118
123
119
124
@ Test
120
125
@ Sql (scripts = "/sql/assessments_insert.sql" )
126
+ @ Transactional
121
127
public void testPatchAssessments_expect200_empty () {
122
128
123
129
final Long id = 26L ;
@@ -129,7 +135,7 @@ public void testPatchAssessments_expect200_empty() {
129
135
.status ("status2" );
130
136
131
137
ResponseEntity <Void > response =
132
- assessmentController .updateAssessment (26L , "testUser" , patch );
138
+ assessmentController .patchAssessment (26L , "testUser" , patch );
133
139
134
140
ResponseEntity <AssessmentDetail > afterPatchResponse = assessmentController .getAssessment (id );
135
141
@@ -167,6 +173,151 @@ public void testDeleteCheckpoint_returns204() {
167
173
assertNull (assessmentResponse .getBody ().getCheckpoint ());
168
174
}
169
175
176
+ private static Stream <Arguments > updateAssessmentArguments_base () {
177
+ return Stream .of (
178
+ Arguments .of (
179
+ new AssessmentDetail ().id (26L )
180
+ .name ("new_assessment1" )
181
+ .status ("new_status1" )
182
+ .providerId ("new_owner1" )
183
+ .caseReferenceNumber ("987654321" )
184
+ )
185
+ );
186
+ }
187
+
188
+ @ Test
189
+ @ Sql (scripts = "/sql/assessments_insert.sql" )
190
+ @ Transactional
191
+ public void testUpdateAssessment () {
192
+ final String loginId = "testUser" ;
193
+
194
+ AssessmentDetail expected = buildAssessmentDetail ();
195
+
196
+ ResponseEntity <Void > response = assessmentController .updateAssessment (loginId , expected );
197
+ assertEquals (HttpStatus .NO_CONTENT , response .getStatusCode ());
198
+
199
+ ResponseEntity <AssessmentDetail > updatedResponse = assessmentController .getAssessment (expected .getId ());
200
+ assertEquals (HttpStatus .OK , updatedResponse .getStatusCode ());
201
+
202
+ AssessmentDetail actual = updatedResponse .getBody ();
203
+ assertEquals (expected .getName (), actual .getName ());
204
+ assertEquals (expected .getStatus (), actual .getStatus ());
205
+ assertEquals (expected .getProviderId (), actual .getProviderId ());
206
+ assertEquals (expected .getCaseReferenceNumber (), actual .getCaseReferenceNumber ());
207
+
208
+ assertEquals (expected .getEntityTypes ().size (), actual .getEntityTypes ().size ());
209
+ for (AssessmentEntityTypeDetail expectedEntityType : expected .getEntityTypes ()) {
210
+ AssessmentEntityTypeDetail actualEntityType = actual .getEntityTypes ().stream ()
211
+ .filter (a -> a .getId ().equals (expectedEntityType .getId ()))
212
+ .findFirst ()
213
+ .orElseThrow (() -> new AssertionError ("EntityType not found" ));
214
+
215
+ assertEquals (expectedEntityType .getName (), actualEntityType .getName ());
216
+ assertEquals (expectedEntityType .getId (), actualEntityType .getId ());
217
+ assertEquals (expectedEntityType .getEntities ().size (), actualEntityType .getEntities ().size ());
218
+
219
+ for (AssessmentEntityDetail expectedEntity : expectedEntityType .getEntities ()) {
220
+ AssessmentEntityDetail actualEntity = actualEntityType .getEntities ().stream ()
221
+ .filter (a -> a .getId ().equals (expectedEntity .getId ()))
222
+ .findFirst ()
223
+ .orElseThrow (() -> new AssertionError ("Entity not found" ));
224
+
225
+ assertEquals (expectedEntity .getName (), actualEntity .getName ());
226
+ assertEquals (expectedEntity .getId (), actualEntity .getId ());
227
+ assertEquals (expectedEntity .getAttributes ().size (), actualEntity .getAttributes ().size ());
228
+
229
+ for (AssessmentAttributeDetail expectedAttribute : expectedEntity .getAttributes ()) {
230
+ AssessmentAttributeDetail actualAttribute = actualEntity .getAttributes ().stream ()
231
+ .filter (a -> a .getId ().equals (expectedAttribute .getId ()))
232
+ .findFirst ()
233
+ .orElseThrow (() -> new AssertionError ("Attribute not found" ));
234
+
235
+ assertEquals (expectedAttribute .getName (), actualAttribute .getName ());
236
+ assertEquals (expectedAttribute .getId (), actualAttribute .getId ());
237
+ assertEquals (expectedAttribute .getType (), actualAttribute .getType ());
238
+ assertEquals (expectedAttribute .getValue (), actualAttribute .getValue ());
239
+ assertEquals (expectedAttribute .getPrepopulated (), actualAttribute .getPrepopulated ());
240
+ assertEquals (expectedAttribute .getAsked (), actualAttribute .getAsked ());
241
+ }
242
+
243
+ assertEquals (expectedEntity .getRelations ().size (), actualEntity .getRelations ().size ());
244
+
245
+ for (AssessmentRelationshipDetail expectedRelation : expectedEntity .getRelations ()) {
246
+ AssessmentRelationshipDetail actualRelation = actualEntity .getRelations ().stream ()
247
+ .filter (a -> a .getId ().equals (expectedRelation .getId ()))
248
+ .findFirst ()
249
+ .orElseThrow (() -> new AssertionError ("Relation not found" ));
250
+
251
+ assertEquals (expectedRelation .getName (), actualRelation .getName ());
252
+ assertEquals (expectedRelation .getId (), actualRelation .getId ());
253
+ assertEquals (expectedRelation .getRelationshipTargets ().size (), actualRelation .getRelationshipTargets ().size ());
254
+
255
+ for (AssessmentRelationshipTargetDetail expectedTarget : expectedRelation .getRelationshipTargets ()) {
256
+ AssessmentRelationshipTargetDetail actualTarget = actualRelation .getRelationshipTargets ().stream ()
257
+ .filter (a -> a .getId ().equals (expectedTarget .getId ()))
258
+ .findFirst ()
259
+ .orElseThrow (() -> new AssertionError ("RelationshipTarget not found" ));
260
+
261
+ assertEquals (expectedTarget .getId (), actualTarget .getId ());
262
+ assertEquals (expectedTarget .getTargetEntityId (), actualTarget .getTargetEntityId ());
263
+ }
264
+ }
265
+ }
266
+ }
267
+
268
+
269
+ }
270
+
271
+ public static AssessmentDetail buildAssessmentDetail () {
272
+ return new AssessmentDetail ()
273
+ .id (26L )
274
+ .name ("new_assessment1" )
275
+ .status ("new_status1" )
276
+ .providerId ("new_owner1" )
277
+ .caseReferenceNumber ("987654321" )
278
+ .addEntityTypesItem (buildEntityType ());
279
+ }
280
+
281
+ public static AssessmentEntityTypeDetail buildEntityType () {
282
+ return new AssessmentEntityTypeDetail ()
283
+ .id (27L )
284
+ .name ("new_entity_type1" )
285
+ .addEntitiesItem (buildEntity ());
286
+ }
287
+
288
+ public static AssessmentEntityDetail buildEntity () {
289
+ return new AssessmentEntityDetail ()
290
+ .id (28L )
291
+ .name ("new_entity1" )
292
+ .prepopulated (true )
293
+ .addAttributesItem (buildAttribute ())
294
+ .addRelationsItem (buildRelation ());
295
+ }
296
+
297
+ public static AssessmentAttributeDetail buildAttribute () {
298
+ return new AssessmentAttributeDetail ()
299
+ .id (29L )
300
+ .name ("new_attribute1" )
301
+ .type ("new_type1" )
302
+ .value ("new_value1" )
303
+ .prepopulated (true )
304
+ .asked (true );
305
+ }
306
+
307
+ public static AssessmentRelationshipDetail buildRelation () {
308
+ return new AssessmentRelationshipDetail ()
309
+ .id (30L )
310
+ .name ("new_relation1" )
311
+ .prepopulated (true )
312
+ .addRelationshipTargetsItem (buildRelationTarget ());
313
+ }
314
+
315
+ public static AssessmentRelationshipTargetDetail buildRelationTarget () {
316
+ return new AssessmentRelationshipTargetDetail ()
317
+ .id (31L )
318
+ .targetEntityId ("new_entity1" );
319
+ }
320
+
170
321
171
322
172
323
0 commit comments