package uk.ac.ox.zoo.seeg.abraid.mp.datamanager.process; import org.joda.time.DateTime; import org.junit.Test; import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.DiseaseProcessType; import uk.ac.ox.zoo.seeg.abraid.mp.common.service.workflow.ModelRunWorkflowService; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.*; /** * Tests the DiseaseProcessManagerTest class. * Copyright (c) 2014 University of Oxford */ public class DiseaseProcessManagerTest { @Test public void updateExpertsWeightingsCallsWorkflowService() throws Exception { // Arrange ModelRunWorkflowService modelRunWorkflowService = mock(ModelRunWorkflowService.class); DiseaseProcessGatekeeper diseaseProcessGatekeeper = mock(DiseaseProcessGatekeeper.class); DiseaseProcessManager target = new DiseaseProcessManager(diseaseProcessGatekeeper, modelRunWorkflowService); // Act target.updateExpertsWeightings(); // Assert verify(modelRunWorkflowService).updateExpertsWeightings(); } @Test public void processOccurrencesOnDataValidatorCallsWorkflowService() throws Exception { // Arrange int diseaseGroupId = 1; ModelRunWorkflowService modelRunWorkflowService = mock(ModelRunWorkflowService.class); DiseaseProcessGatekeeper diseaseProcessGatekeeper = mock(DiseaseProcessGatekeeper.class); DiseaseProcessManager target = new DiseaseProcessManager(diseaseProcessGatekeeper, modelRunWorkflowService); // Act target.processOccurrencesOnDataValidator(diseaseGroupId); // Assert verify(modelRunWorkflowService).processOccurrencesOnDataValidator(diseaseGroupId, DiseaseProcessType.AUTOMATIC); } @Test public void updateDiseaseExtentsCallsWorkflowServiceIfRequired() throws Exception { // Arrange int diseaseGroupId = 1; ModelRunWorkflowService modelRunWorkflowService = mock(ModelRunWorkflowService.class); DiseaseProcessGatekeeper diseaseProcessGatekeeper = mock(DiseaseProcessGatekeeper.class); DiseaseProcessManager target = new DiseaseProcessManager(diseaseProcessGatekeeper, modelRunWorkflowService); when(diseaseProcessGatekeeper.extentShouldRun(diseaseGroupId)).thenReturn(true); // Act target.updateDiseaseExtents(diseaseGroupId); // Assert verify(modelRunWorkflowService).generateDiseaseExtent(diseaseGroupId, DiseaseProcessType.AUTOMATIC); } @Test public void updateDiseaseExtentsSkipsCallToWorkflowServiceIfNotRequired() throws Exception { // Arrange int diseaseGroupId = 1; ModelRunWorkflowService modelRunWorkflowService = mock(ModelRunWorkflowService.class); DiseaseProcessGatekeeper diseaseProcessGatekeeper = mock(DiseaseProcessGatekeeper.class); DiseaseProcessManager target = new DiseaseProcessManager(diseaseProcessGatekeeper, modelRunWorkflowService); when(diseaseProcessGatekeeper.extentShouldRun(diseaseGroupId)).thenReturn(false); // Act target.updateDiseaseExtents(diseaseGroupId); // Assert verify(modelRunWorkflowService, never()).generateDiseaseExtent(anyInt(), any(DiseaseProcessType.class)); } @Test public void requestModelRunSkipsCallToWorkflowServiceIfNotRequired() throws Exception { // Arrange int diseaseGroupId = 1; ModelRunWorkflowService modelRunWorkflowService = mock(ModelRunWorkflowService.class); DiseaseProcessGatekeeper diseaseProcessGatekeeper = mock(DiseaseProcessGatekeeper.class); DiseaseProcessManager target = new DiseaseProcessManager(diseaseProcessGatekeeper, modelRunWorkflowService); when(diseaseProcessGatekeeper.modelShouldRun(diseaseGroupId)).thenReturn(true); // Act target.requestModelRun(diseaseGroupId); // Assert verify(modelRunWorkflowService).prepareForAndRequestModelRun(diseaseGroupId, DiseaseProcessType.AUTOMATIC, null, null); } @Test public void requestModelRunCallsWorkflowServiceIfRequired() throws Exception { // Arrange int diseaseGroupId = 1; ModelRunWorkflowService modelRunWorkflowService = mock(ModelRunWorkflowService.class); DiseaseProcessGatekeeper diseaseProcessGatekeeper = mock(DiseaseProcessGatekeeper.class); DiseaseProcessManager target = new DiseaseProcessManager(diseaseProcessGatekeeper, modelRunWorkflowService); when(diseaseProcessGatekeeper.modelShouldRun(diseaseGroupId)).thenReturn(false); // Act target.requestModelRun(diseaseGroupId); // Assert verify(modelRunWorkflowService, never()).prepareForAndRequestModelRun(anyInt(), any(DiseaseProcessType.class), any(DateTime.class), any(DateTime.class)); } }