@@ -407,6 +407,68 @@ public void validate_shouldRejectOverlappingActiveVisits() {
407
407
assertTrue (errors .hasFieldErrors ("startDatetime" ));
408
408
}
409
409
410
+ /**
411
+ * @see VisitValidator#validate(Object, org.springframework.validation.Errors)
412
+ * Should skip validation if it is an end visit call and start date is not changed
413
+ */
414
+ @ Test
415
+ public void validate_shouldNotRejectOnVisitOverlapDuringEndVisit () {
416
+
417
+ // active visit: |---------------->
418
+ // overlapping visit: |--|
419
+ // ended active visit: |----------|
420
+
421
+ String activeVisitUuid = "c2639863-cbbe-44bb-986d-8a4820f8ae14" ;
422
+ Visit activeVisit = Context .getVisitService ().getVisitByUuid (activeVisitUuid );
423
+
424
+ String newStopDateTime = "2014-02-06T00:00:00" ;
425
+
426
+ // make a clone and update the visit with an end date
427
+ Visit updatedVisit = new Visit ();
428
+ updatedVisit .setVisitId (activeVisit .getVisitId ());
429
+ updatedVisit .setUuid (activeVisit .getUuid ());
430
+ updatedVisit .setPatient (activeVisit .getPatient ());
431
+ updatedVisit .setStartDatetime (activeVisit .getStartDatetime ());
432
+ updatedVisit .setVisitType (activeVisit .getVisitType ());
433
+ updatedVisit .setStopDatetime (parseIsoDate (newStopDateTime ));
434
+
435
+ Errors errors = new BindException (updatedVisit , "visit" );
436
+ new VisitValidator ().validate (updatedVisit , errors );
437
+
438
+ assertFalse (errors .hasFieldErrors ("startDatetime" ));
439
+ }
440
+
441
+ /**
442
+ * @see VisitValidator#validate(Object, org.springframework.validation.Errors)
443
+ * Should skip validation if it is an end visit call and start date is not changed
444
+ */
445
+ @ Test
446
+ public void validate_shouldRejectOnVisitOverlapDuringEndVisitWithStartDateUpdated () {
447
+ // active visit: |---------------->
448
+ // overlapping visit: |--|
449
+ // ended active visit: |----------|
450
+
451
+ String activeVisitUuid = "c2639863-cbbe-44bb-986d-8a4820f8ae14" ;
452
+ Visit activeVisit = Context .getVisitService ().getVisitByUuid (activeVisitUuid );
453
+
454
+ String newStartDateTime = "2014-02-04T00:00:00" ;
455
+ String newStopDateTime = "2014-02-06T00:00:00" ;
456
+
457
+ // make a clone and update the visit with an end date
458
+ Visit updatedVisit = new Visit ();
459
+ updatedVisit .setVisitId (activeVisit .getVisitId ());
460
+ updatedVisit .setUuid (activeVisit .getUuid ());
461
+ updatedVisit .setPatient (activeVisit .getPatient ());
462
+ updatedVisit .setVisitType (activeVisit .getVisitType ());
463
+ updatedVisit .setStartDatetime (parseIsoDate (newStartDateTime ));
464
+ updatedVisit .setStopDatetime (parseIsoDate (newStopDateTime ));
465
+
466
+ Errors errors = new BindException (updatedVisit , "visit" );
467
+ new VisitValidator ().validate (updatedVisit , errors );
468
+
469
+ assertTrue (errors .hasFieldErrors ("startDatetime" ));
470
+ }
471
+
410
472
/**
411
473
* @see VisitValidator#validate(Object, org.springframework.validation.Errors)
412
474
* This test verifies that updating an existing visit does not result in a rejection
0 commit comments