/**
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under
* the terms of the Healthcare Disclaimer located at http://openmrs.org/license.
*
* Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS
* graphic logo is a trademark of OpenMRS Inc.
*/
package org.openmrs.module.radiology.report.web;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import org.junit.Before;
import org.junit.Test;
import org.springframework.validation.BindException;
import org.springframework.validation.Errors;
/**
* Tests {@link VoidRadiologyReportRequest}.
*/
public class VoidRadiologyReportRequestValidatorTest {
VoidRadiologyReportRequestValidator voidRadiologyReportRequestValidator;
VoidRadiologyReportRequest voidRadiologyReportRequest;
@Before
public void setUp() {
voidRadiologyReportRequestValidator = new VoidRadiologyReportRequestValidator();
voidRadiologyReportRequest = new VoidRadiologyReportRequest();
voidRadiologyReportRequest.setVoidReason("wrong order selected");
}
@Test
public void shouldReturnTrueOnlyForVoidRadiologyReportRequestObjects() throws Exception {
assertTrue(voidRadiologyReportRequestValidator.supports(VoidRadiologyReportRequest.class));
}
@Test
public void shouldReturnFalseForOtherObjectTypes() throws Exception {
assertFalse(voidRadiologyReportRequestValidator.supports(Object.class));
}
@Test
public void shouldFailValidationIfDiscontinuationOrderRequestIsNull() throws Exception {
Errors errors = new BindException(voidRadiologyReportRequest, "voidRadiologyReportRequest");
voidRadiologyReportRequestValidator.validate(null, errors);
assertTrue(errors.hasErrors());
assertThat(errors.getAllErrors()
.size(),
is(1));
assertThat((errors.getAllErrors()).get(0)
.getCode(),
is("error.general"));
}
@Test
public void shouldFailValidationIfVoidReasonNonCodedIsNull() throws Exception {
voidRadiologyReportRequest.setVoidReason(null);
Errors errors = new BindException(voidRadiologyReportRequest, "voidRadiologyReportRequest");
voidRadiologyReportRequestValidator.validate(voidRadiologyReportRequest, errors);
assertTrue(errors.hasErrors());
assertThat(errors.getAllErrors()
.size(),
is(1));
assertTrue(errors.hasFieldErrors("voidReason"));
voidRadiologyReportRequest.setVoidReason("");
errors = new BindException(voidRadiologyReportRequest, "voidRadiologyReportRequest");
voidRadiologyReportRequestValidator.validate(voidRadiologyReportRequest, errors);
assertTrue(errors.hasErrors());
assertThat(errors.getAllErrors()
.size(),
is(1));
assertTrue(errors.hasFieldErrors("voidReason"));
voidRadiologyReportRequest.setVoidReason(" ");
errors = new BindException(voidRadiologyReportRequest, "voidRadiologyReportRequest");
voidRadiologyReportRequestValidator.validate(voidRadiologyReportRequest, errors);
assertTrue(errors.hasErrors());
assertThat(errors.getAllErrors()
.size(),
is(1));
assertTrue(errors.hasFieldErrors("voidReason"));
}
@Test
public void shouldPassValidationIfAllFieldsAreCorrect() throws Exception {
Errors errors = new BindException(voidRadiologyReportRequest, "voidRadiologyReportRequest");
voidRadiologyReportRequestValidator.validate(voidRadiologyReportRequest, errors);
assertFalse(errors.hasErrors());
}
}