package uk.ac.ox.zoo.seeg.abraid.mp.common.service.core;
import org.joda.time.LocalDate;
import org.junit.Test;
import uk.ac.ox.zoo.seeg.abraid.mp.common.dao.ModelRunDao;
import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.ModelRun;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.*;
/**
* Tests the ModelRunService class.
*
* Copyright (c) 2014 University of Oxford
*/
public class ModelRunServiceTest {
@Test
public void getModelRunByName() {
// Arrange
String name = "test";
ModelRun expectedRun = new ModelRun();
ModelRunDao modelRunDao = mock(ModelRunDao.class);
when(modelRunDao.getByName(name)).thenReturn(expectedRun);
ModelRunService modelRunService = new ModelRunServiceImpl(modelRunDao);
// Act
ModelRun actualRun = modelRunService.getModelRunByName(name);
// Assert
assertThat(actualRun).isSameAs(expectedRun);
}
@Test
public void saveModelRun() {
// Arrange
ModelRun run = new ModelRun();
ModelRunDao modelRunDao = mock(ModelRunDao.class);
ModelRunService modelRunService = new ModelRunServiceImpl(modelRunDao);
// Act
modelRunService.saveModelRun(run);
// Assert
verify(modelRunDao).save(eq(run));
}
@Test
public void getLastRequestedModelRun() {
// Arrange
int diseaseGroupId = 87;
ModelRun expectedModelRun = new ModelRun();
ModelRunDao modelRunDao = mock(ModelRunDao.class);
when(modelRunDao.getLastRequestedModelRun(diseaseGroupId)).thenReturn(expectedModelRun);
ModelRunService modelRunService = new ModelRunServiceImpl(modelRunDao);
// Act
ModelRun actualModelRun = modelRunService.getLastRequestedModelRun(diseaseGroupId);
// Assert
assertThat(actualModelRun).isEqualTo(expectedModelRun);
}
@Test
public void getMostRecentlyRequestedModelRunWhichCompleted() {
// Arrange
int diseaseGroupId = 87;
ModelRun expectedModelRun = new ModelRun();
ModelRunDao modelRunDao = mock(ModelRunDao.class);
when(modelRunDao.getMostRecentlyRequestedModelRunWhichCompleted(diseaseGroupId)).thenReturn(expectedModelRun);
ModelRunService modelRunService = new ModelRunServiceImpl(modelRunDao);
// Act
ModelRun actualModelRun = modelRunService.getMostRecentlyRequestedModelRunWhichCompleted(diseaseGroupId);
// Assert
assertThat(actualModelRun).isEqualTo(expectedModelRun);
}
@Test
public void getMostRecentlyFinishedModelRunWhichCompleted() {
// Arrange
int diseaseGroupId = 87;
ModelRun expectedModelRun = new ModelRun();
ModelRunDao modelRunDao = mock(ModelRunDao.class);
when(modelRunDao.getMostRecentlyFinishedModelRunWhichCompleted(diseaseGroupId)).thenReturn(expectedModelRun);
ModelRunService modelRunService = new ModelRunServiceImpl(modelRunDao);
// Act
ModelRun actualModelRun = modelRunService.getMostRecentlyFinishedModelRunWhichCompleted(diseaseGroupId);
// Assert
assertThat(actualModelRun).isEqualTo(expectedModelRun);
}
@Test
public void getCompletedModelRunsForDisplay() {
// Arrange
Collection<ModelRun> expectedRuns = Arrays.asList(mock(ModelRun.class), mock(ModelRun.class));
ModelRunDao modelRunDao = mock(ModelRunDao.class);
when(modelRunDao.getCompletedModelRunsForDisplay()).thenReturn(expectedRuns);
ModelRunService modelRunService = new ModelRunServiceImpl(modelRunDao);
// Act
Collection<ModelRun> runs = modelRunService.getCompletedModelRunsForDisplay();
// Assert
assertThat(runs).isEqualTo(expectedRuns);
}
@Test
public void hasBatchingEverCompleted() {
// Arrange
int diseaseGroupId = 87;
ModelRunDao modelRunDao = mock(ModelRunDao.class);
when(modelRunDao.hasBatchingEverCompleted(diseaseGroupId)).thenReturn(true);
ModelRunService modelRunService = new ModelRunServiceImpl(modelRunDao);
// Act
boolean result = modelRunService.hasBatchingEverCompleted(diseaseGroupId);
// Assert
assertThat(result).isTrue();
}
@Test
public void getModelRunRequestServersByUsage() {
// Arrange
List<String> expected = Arrays.asList("A", "B", "C");
ModelRunDao modelRunDao = mock(ModelRunDao.class);
ModelRunService modelRunService = new ModelRunServiceImpl(modelRunDao);
when(modelRunDao.getModelRunRequestServersByUsage()).thenReturn(expected);
// Act
List<String> result = modelRunService.getModelRunRequestServersByUsage();
// Assert
assertThat(result).isEqualTo(expected);
}
@Test
public void getFilteredModelRuns() {
// Arrange
String name = "name";
int diseaseGroupId = 87;
LocalDate minResponseDate = new LocalDate("2015-01-01");
LocalDate maxResponseDate = new LocalDate("2015-01-02");
List<ModelRun> expectedRuns = Arrays.asList(mock(ModelRun.class), mock(ModelRun.class));
ModelRunDao modelRunDao = mock(ModelRunDao.class);
when(modelRunDao.getFilteredModelRuns(name, diseaseGroupId, minResponseDate, maxResponseDate)).thenReturn(expectedRuns);
ModelRunService modelRunService = new ModelRunServiceImpl(modelRunDao);
// Act
Collection<ModelRun> result = modelRunService.getFilteredModelRuns(name, diseaseGroupId, minResponseDate, maxResponseDate);
// Assert
assertThat(result).isEqualTo(expectedRuns);
verify(modelRunDao).getFilteredModelRuns(name, diseaseGroupId, minResponseDate, maxResponseDate);
}
@Test
public void getModelRunsForDiseaseGroup() {
// Arrange
Collection<ModelRun> expectedRuns = Arrays.asList(mock(ModelRun.class), mock(ModelRun.class));
ModelRunDao modelRunDao = mock(ModelRunDao.class);
when(modelRunDao.getModelRunsForDiseaseGroup(anyInt())).thenReturn(expectedRuns);
ModelRunService modelRunService = new ModelRunServiceImpl(modelRunDao);
// Act
Collection<ModelRun> result = modelRunService.getModelRunsForDiseaseGroup(87);
// Assert
assertThat(result).isEqualTo(expectedRuns);
verify(modelRunDao).getModelRunsForDiseaseGroup(87);
}
}