/** * 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.mockito.Mockito.when; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.mockito.InjectMocks; import org.mockito.Mock; import org.openmrs.api.APIException; import org.openmrs.module.radiology.order.RadiologyOrder; import org.openmrs.test.BaseContextMockTest; /** * Tests {@link RadiologyReportService} */ public class RadiologyReportServiceTest extends BaseContextMockTest { @InjectMocks private RadiologyReportService radiologyReportService = new RadiologyReportServiceImpl(); @Mock private RadiologyOrder radiologyOrder; @Mock private RadiologyReport radiologyReport; @Mock private TestRadiologyReportDAO radiologyReportDAO; @Rule public ExpectedException expectedException = ExpectedException.none(); @Test public void shouldFailToCreateReportIfGivenNull() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("radiologyOrder cannot be null"); radiologyReportService.createRadiologyReport(null); } @Test public void shouldFailToCreateReportIfGivenOrderIsNotCompleted() { when(radiologyOrder.isNotCompleted()).thenReturn(true); expectedException.expect(APIException.class); expectedException.expectMessage("radiology.RadiologyReport.cannot.create.for.not.completed.order"); radiologyReportService.createRadiologyReport(radiologyOrder); } @Test public void shouldFailToCreateReportIfGivenOrderHasAClaimedReport() { when(radiologyReportDAO.hasRadiologyOrderClaimedRadiologyReport(radiologyOrder)).thenReturn(true); expectedException.expect(APIException.class); expectedException.expectMessage("radiology.RadiologyReport.cannot.create.already.claimed"); radiologyReportService.createRadiologyReport(radiologyOrder); } @Test public void shouldFailToCreateReportIfGivenOrderHasACompletedReport() { when(radiologyReportDAO.hasRadiologyOrderCompletedRadiologyReport(radiologyOrder)).thenReturn(true); expectedException.expect(APIException.class); expectedException.expectMessage("radiology.RadiologyReport.cannot.create.already.completed"); radiologyReportService.createRadiologyReport(radiologyOrder); } @Test public void shouldFailToSaveReportDraftGivenNull() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("radiologyReport cannot be null"); radiologyReportService.saveRadiologyReportDraft(null); } @Test public void shouldFailToSaveReportDraftGivenReportWithReportIdNull() { when(radiologyReport.getReportId()).thenReturn(null); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("radiologyReport.reportId cannot be null"); radiologyReportService.saveRadiologyReportDraft(radiologyReport); } @Test public void shouldFailToSaveReportDraftIfReportIsCompleted() { when(radiologyReport.getStatus()).thenReturn(RadiologyReportStatus.COMPLETED); expectedException.expect(APIException.class); expectedException.expectMessage("radiology.RadiologyReport.cannot.saveDraft.already.completed"); radiologyReportService.saveRadiologyReportDraft(radiologyReport); } @Test public void shouldFailToSaveReportDraftIfReportIsVoided() { when(radiologyReport.getVoided()).thenReturn(true); expectedException.expect(APIException.class); expectedException.expectMessage("radiology.RadiologyReport.cannot.saveDraft.already.voided"); radiologyReportService.saveRadiologyReportDraft(radiologyReport); } @Test public void shouldFailToSaveReportDraftIfGivenReportsOrderHasACompletedReport() { when(radiologyReport.getRadiologyOrder()).thenReturn(radiologyOrder); when(radiologyReportDAO.hasRadiologyOrderCompletedRadiologyReport(radiologyOrder)).thenReturn(true); expectedException.expect(APIException.class); expectedException.expectMessage("radiology.RadiologyReport.cannot.saveDraft.already.reported"); radiologyReportService.saveRadiologyReportDraft(radiologyReport); } @Test public void shouldFailToVoidReportGivenNull() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("radiologyReport cannot be null"); radiologyReportService.voidRadiologyReport(null, null); } @Test public void shouldFailToVoidIfGivenReportWithReportIdNull() { when(radiologyReport.getReportId()).thenReturn(null); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("radiologyReport.reportId cannot be null"); radiologyReportService.voidRadiologyReport(radiologyReport, null); } @Test public void shouldFailToVoidReportIfGivenVoidReasonIsNullOrContainsOnlyWhitespaces() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("voidReason cannot be null or empty"); radiologyReportService.voidRadiologyReport(radiologyReport, null); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("voidReason cannot be null or empty"); radiologyReportService.voidRadiologyReport(radiologyReport, ""); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("voidReason cannot be null or empty"); radiologyReportService.voidRadiologyReport(radiologyReport, " "); } @Test public void shouldFailToVoidReportIfReportIsCompleted() { when(radiologyReport.getStatus()).thenReturn(RadiologyReportStatus.COMPLETED); expectedException.expect(APIException.class); expectedException.expectMessage("radiology.RadiologyReport.cannot.void.completed"); radiologyReportService.voidRadiologyReport(radiologyReport, "some reason"); } @Test public void shouldFailToSaveReportIfGivenNull() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("radiologyReport cannot be null"); radiologyReportService.saveRadiologyReport(null); } @Test public void shouldFailToSaveReportIfGivenReportWithReportIdNull() { when(radiologyReport.getReportId()).thenReturn(null); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("radiologyReport.reportId cannot be null"); radiologyReportService.saveRadiologyReport(radiologyReport); } @Test public void shouldFailToSaveReportIfGivenReportWithStatusNull() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("radiologyReport.status cannot be null"); radiologyReportService.saveRadiologyReport(radiologyReport); } @Test public void shouldFailToSaveReportIfGivenReportIsCompleted() { when(radiologyReport.getStatus()).thenReturn(RadiologyReportStatus.COMPLETED); expectedException.expect(APIException.class); expectedException.expectMessage("radiology.RadiologyReport.cannot.complete.completed"); radiologyReportService.saveRadiologyReport(radiologyReport); } @Test public void shouldFailToSaveReportIfGivenReportIsVoided() { when(radiologyReport.getStatus()).thenReturn(RadiologyReportStatus.DRAFT); when(radiologyReport.getVoided()).thenReturn(true); expectedException.expect(APIException.class); expectedException.expectMessage("radiology.RadiologyReport.cannot.complete.voided"); radiologyReportService.saveRadiologyReport(radiologyReport); } @Test public void shouldFailToGetReportByIdIfGivenNull() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("reportId cannot be null"); radiologyReportService.getRadiologyReport(null); } @Test public void shouldFailToGetReportByUuidIfGivenNull() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("radiologyReportUuid cannot be null"); radiologyReportService.getRadiologyReportByUuid(null); } @Test public void hasOrderClaimedReport_shouldFailIfGivenNull() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("radiologyOrder cannot be null"); radiologyReportService.hasRadiologyOrderClaimedRadiologyReport(null); } @Test public void hasOrderCompletedReport_shouldFailIfGivenNull() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("radiologyOrder cannot be null"); radiologyReportService.hasRadiologyOrderCompletedRadiologyReport(null); } @Test public void shouldFailToGetActiveReportByOrderIfGivenNull() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("radiologyOrder cannot be null"); radiologyReportService.getActiveRadiologyReportByRadiologyOrder(null); } @Test public void shouldFailToGetReportsIfGivenNull() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("radiologyReportSearchCriteria cannot be null"); radiologyReportService.getRadiologyReports(null); } public interface TestRadiologyReportDAO extends RadiologyReportDAO {} }