/** * 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; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.openmrs.module.radiology.test.ValidatorAssertions.assertSingleGeneralError; import static org.openmrs.module.radiology.test.ValidatorAssertions.assertSingleNullErrorInField; import org.junit.Before; import org.junit.Test; import org.openmrs.Provider; import org.openmrs.module.radiology.dicom.code.PerformedProcedureStepStatus; import org.openmrs.module.radiology.order.RadiologyOrder; import org.openmrs.module.radiology.study.RadiologyStudy; import org.springframework.validation.BindException; import org.springframework.validation.Errors; /** * Tests {@link RadiologyReportValidator}. */ public class RadiologyReportValidatorTest { private RadiologyReportValidator radiologyReportValidator; private RadiologyOrder radiologyOrder; private RadiologyStudy radiologyStudy; private RadiologyReport radiologyReport; private Errors errors; @Before public void setUp() { radiologyReportValidator = new RadiologyReportValidator(); radiologyOrder = new RadiologyOrder(); radiologyStudy = new RadiologyStudy(); radiologyStudy.setPerformedStatus(PerformedProcedureStepStatus.COMPLETED); radiologyOrder.setStudy(radiologyStudy); radiologyReport = new RadiologyReport(radiologyOrder); radiologyReport.setPrincipalResultsInterpreter(new Provider()); radiologyReport.setBody("Found a broken bone."); errors = new BindException(radiologyReport, "radiologyReport"); } @Test public void shouldReturnFalseForOtherObjectTypes() throws Exception { assertFalse(radiologyReportValidator.supports(Object.class)); } @Test public void shouldReturnTrueForRadiologyReportObjects() throws Exception { assertTrue(radiologyReportValidator.supports(RadiologyReport.class)); } @Test public void shouldFailValidationIfRadiologyReportIsNull() throws Exception { radiologyReportValidator.validate(null, errors); assertSingleGeneralError(errors); } @Test public void shouldFailValidationIfPrincipalResultsInterpreterIsNull() throws Exception { radiologyReport.setPrincipalResultsInterpreter(null); radiologyReportValidator.validate(radiologyReport, errors); assertSingleNullErrorInField(errors, "principalResultsInterpreter"); } @Test public void shouldFailValidationIfReportBodyIsNull() throws Exception { radiologyReport.setBody(null); radiologyReportValidator.validate(radiologyReport, errors); assertSingleNullErrorInField(errors, "body"); } @Test public void shouldFailValidationIfReportBodyIsEmpty() throws Exception { radiologyReport.setBody(""); radiologyReportValidator.validate(radiologyReport, errors); assertSingleNullErrorInField(errors, "body"); } @Test public void shouldFailValidationIfReportBodyIsWhitespacesOnly() throws Exception { radiologyReport.setBody(" "); radiologyReportValidator.validate(radiologyReport, errors); assertSingleNullErrorInField(errors, "body"); } @Test public void shouldPassValidationIfAllFieldsAreCorrect() throws Exception { radiologyReportValidator.validate(radiologyReport, errors); assertFalse(errors.hasErrors()); } }