/** @see ShortPatientFormValidator#validate(Object,Errors) */ @Test @Verifies(value = "should reject a duplicate address", method = "validate(Object,Errors)") public void validate_shouldRejectADuplicateAddress() throws Exception { Patient patient = ps.getPatient(2); PersonAddress oldAddress = patient.getPersonAddress(); Assert.assertEquals(1, patient.getAddresses().size()); // sanity check // add a name for testing purposes PersonAddress address = (PersonAddress) oldAddress.clone(); address.setPersonAddressId(null); address.setUuid(null); address.setAddress1("address1"); address.setAddress2("address2"); patient.addAddress(address); Context.getPatientService().savePatient(patient); Assert.assertNotNull(address.getId()); // should have been added ShortPatientModel model = new ShortPatientModel(patient); // should still be the preferred address for the test to pass Assert.assertEquals(oldAddress.getId(), model.getPersonAddress().getId()); // change to a duplicate name model.getPersonAddress().setAddress1("Address1"); // should be case insensitive model.getPersonAddress().setAddress2("address2"); Errors errors = new BindException(model, "patientModel"); validator.validate(model, errors); Assert.assertEquals(true, errors.hasErrors()); }
/** @see ShortPatientFormValidator#validate(Object,Errors) */ @Test @Verifies(value = "should fail validation if gender is blank", method = "validate(Object,Errors)") public void validate_shouldFailValidationIfGenderIsBlank() throws Exception { Patient p = ps.getPatient(2); p.setGender(""); ShortPatientModel model = new ShortPatientModel(p); Errors errors = new BindException(model, "patientModel"); validator.validate(model, errors); Assert.assertEquals(true, errors.hasFieldErrors()); }
/** @see ShortPatientFormValidator#validate(Object,Errors) */ @Test @Verifies( value = "should fail if all identifiers have been voided", method = "validate(Object,Errors)") public void validate_shouldFailIfAllIdentifiersHaveBeenVoided() throws Exception { Patient p = ps.getPatient(2); for (PatientIdentifier pId : p.getActiveIdentifiers()) pId.setVoided(true); ShortPatientModel model = new ShortPatientModel(p); Errors errors = new BindException(model, "patientModel"); validator.validate(model, errors); Assert.assertEquals(true, errors.hasGlobalErrors()); }
/** @see {@link ShortPatientFormValidator#validate(Object,Errors)} */ @Test @Verifies( value = "should fail if any name has more than 50 characters", method = "validate(Object,Errors)") public void validate_shouldFailIfAnyNameHasMoreThan50Characters() throws Exception { Patient p = ps.getPatient(2); p.getPersonName().setGivenName("ooooooooooooooooooooooooooooooooooooooooooooooooooo"); ShortPatientModel model = new ShortPatientModel(p); Errors errors = new BindException(model, "patientModel"); validator.validate(model, errors); Assert.assertEquals(true, errors.hasErrors()); }
/** @see ShortPatientFormValidator#validate(Object,Errors) */ @Test @Verifies( value = "should fail if all name fields are empty or white space characters", method = "validate(Object,Errors)") public void validate_shouldFailIfAllNameFieldsAreEmptyOrWhiteSpaceCharacters() throws Exception { Patient p = ps.getPatient(2); p.getPersonName().setGivenName(" "); p.getPersonName().setFamilyName(""); ShortPatientModel model = new ShortPatientModel(p); Errors errors = new BindException(model, "patientModel"); validator.validate(model, errors); Assert.assertEquals(true, errors.hasGlobalErrors()); }
/** @see ShortPatientFormValidator#validate(Object,Errors) */ @Test @Verifies( value = "should fail validation if birthdate makes patient 120 years old or older", method = "validate(Object,Errors)") public void validate_shouldFailValidationIfBirthdateMakesPatient120YearsOldOrOlder() throws Exception { Patient p = ps.getPatient(2); Calendar c = Calendar.getInstance(); c.roll(Calendar.YEAR, -121); p.setBirthdate(c.getTime()); ShortPatientModel model = new ShortPatientModel(p); Errors errors = new BindException(model, "patientModel"); validator.validate(model, errors); Assert.assertEquals(true, errors.hasFieldErrors()); }
/** @see ShortPatientFormValidator#validate(Object,Errors) */ @Test @Verifies( value = "should fail validation if causeOfDeath is blank when patient is dead", method = "validate(Object,Errors)") public void validate_shouldFailValidationIfCauseOfDeathIsBlankWhenPatientIsDead() throws Exception { Patient p = ps.getPatient(2); p.setDead(true); p.setCauseOfDeath(null); p.setDeathDate(Calendar.getInstance().getTime()); ShortPatientModel model = new ShortPatientModel(p); Errors errors = new BindException(model, "patientModel"); validator.validate(model, errors); Assert.assertEquals(true, errors.hasFieldErrors()); }
/** @see ShortPatientFormValidator#validate(Object,Errors) */ @Test @Verifies( value = "should fail validation if birthdate is a future date", method = "validate(Object,Errors)") public void validate_shouldFailValidationIfBirthdateIsAFutureDate() throws Exception { Patient p = ps.getPatient(2); Calendar c = Calendar.getInstance(); // put the time into the future by a minute c.add(Calendar.MINUTE, 1); p.setBirthdate(c.getTime()); ShortPatientModel model = new ShortPatientModel(p); Errors errors = new BindException(model, "patientModel"); validator.validate(model, errors); Assert.assertEquals(true, errors.hasFieldErrors()); }
/** @see ShortPatientFormValidator#validate(Object,Errors) */ @Test @Verifies(value = "should fail if no identifiers are added", method = "validate(Object,Errors)") public void validate_shouldFailIfNoIdentifiersAreAdded() throws Exception { Patient p = ps.getPatient(2); List<PatientIdentifier> activeIdentifiers = p.getActiveIdentifiers(); Set<PatientIdentifier> patientIdentifiers = p.getIdentifiers(); // remove all the active identifiers for (PatientIdentifier activeIdentifier : activeIdentifiers) patientIdentifiers.remove(activeIdentifier); p.setIdentifiers(patientIdentifiers); ShortPatientModel model = new ShortPatientModel(p); Errors errors = new BindException(model, "patientModel"); validator.validate(model, errors); Assert.assertEquals(true, errors.hasGlobalErrors()); }
/** @see ShortPatientFormValidator#validate(Object,Errors) */ @Test @Verifies( value = "should fail if the deathdate is before the birthdate incase the patient is dead", method = "validate(Object,Errors)") public void validate_shouldFailIfTheDeathdateIsBeforeTheBirthdateIncaseThePatientIsDead() throws Exception { Patient p = ps.getPatient(2); p.setDead(true); p.setCauseOfDeath(new Concept(88)); Calendar c = Calendar.getInstance(); c.set(1975, 3, 7); p.setDeathDate(c.getTime()); ShortPatientModel model = new ShortPatientModel(p); Errors errors = new BindException(model, "patientModel"); validator.validate(model, errors); Assert.assertEquals(true, errors.hasFieldErrors()); }
/** @see {@link ShortPatientFormValidator#validate(Object,Errors)} */ @Test @Verifies( value = "should pass if the minimum required fields are provided and are valid", method = "validate(Object,Errors)") public void validate_shouldPassIfTheMinimumRequiredFieldsAreProvidedAndAreValid() throws Exception { Patient p = new Patient(); p.setGender("M"); Calendar c = Calendar.getInstance(); c.set(1950, 3, 3); p.setBirthdate(c.getTime()); p.addName(new PersonName("hor", null, "ty")); p.addIdentifier(new PatientIdentifier("hiuh", new PatientIdentifierType(2), new Location(1))); ShortPatientModel model = new ShortPatientModel(p); Errors errors = new BindException(model, "patientModel"); validator.validate(model, errors); Assert.assertEquals(false, errors.hasErrors()); }
/** @see ShortPatientFormValidator#validate(Object,Errors) */ @Test @Verifies(value = "should reject a duplicate name", method = "validate(Object,Errors)") public void validate_shouldRejectADuplicateName() throws Exception { Patient patient = ps.getPatient(7); PersonName oldName = patient.getPersonName(); Assert.assertEquals(1, patient.getNames().size()); // sanity check // add a name for testing purposes PersonName name = new PersonName("my", "duplicate", "name"); patient.addName(name); Context.getPatientService().savePatient(patient); Assert.assertNotNull(name.getId()); // should have been added ShortPatientModel model = new ShortPatientModel(patient); // should still be the preferred name for the test to pass Assert.assertEquals(oldName.getId(), model.getPersonName().getId()); // change to a duplicate name model.getPersonName().setGivenName("My"); // should be case insensitive model.getPersonName().setMiddleName("duplicate"); model.getPersonName().setFamilyName("name"); Errors errors = new BindException(model, "patientModel"); validator.validate(model, errors); Assert.assertEquals(true, errors.hasErrors()); }