package uk.ac.ox.zoo.seeg.abraid.mp.common.service.workflow.support.runrequest.data;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.AdminUnitDiseaseExtentClass;
import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.DiseaseOccurrence;
import java.io.File;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.*;
/**
* Tests for InputDataManager.
* Copyright (c) 2014 University of Oxford
*/
public class InputDataManagerTest {
@Rule
public TemporaryFolder testFolder = new TemporaryFolder(); ///CHECKSTYLE:SUPPRESS VisibilityModifier
@Test
public void writeOccurrenceDataCallsOccurrenceDataWriterWithCorrectTargetFile() throws Exception {
// Arrange
OccurrenceDataWriter mockOccurrenceWriter = mock(OccurrenceDataWriter.class);
InputDataManager target = new InputDataManagerImpl(mock(ExtentDataWriter.class), mockOccurrenceWriter);
File dataDir = testFolder.newFolder();
// Act
target.writeOccurrenceData(new ArrayList<DiseaseOccurrence>(), dataDir, false);
// Assert
verify(mockOccurrenceWriter).write(anyListOf(DiseaseOccurrence.class), eq(Paths.get(dataDir.toString(), "occurrences.csv").toFile()), eq(true));
}
@Test
public void writeOccurrenceDataCallsOccurrenceDataWriterWithCorrectData() throws Exception {
// Arrange
OccurrenceDataWriter mockOccurrenceWriter = mock(OccurrenceDataWriter.class);
InputDataManager target = new InputDataManagerImpl(mock(ExtentDataWriter.class), mockOccurrenceWriter);
List<DiseaseOccurrence> mockData = new ArrayList<>();
// Act
target.writeOccurrenceData(mockData, testFolder.newFolder(), false);
// Assert
verify(mockOccurrenceWriter).write(same(mockData), any(File.class), eq(true));
}
@Test
public void writeOccurrenceDataCallsOccurrenceDataWriterWithCorrectBiasTargetFile() throws Exception {
// Arrange
OccurrenceDataWriter mockOccurrenceWriter = mock(OccurrenceDataWriter.class);
InputDataManager target = new InputDataManagerImpl(mock(ExtentDataWriter.class), mockOccurrenceWriter);
File dataDir = testFolder.newFolder();
// Act
target.writeOccurrenceData(new ArrayList<DiseaseOccurrence>(), dataDir, true);
// Assert
verify(mockOccurrenceWriter).write(anyListOf(DiseaseOccurrence.class), eq(Paths.get(dataDir.toString(), "sample_bias.csv").toFile()), eq(false));
}
@Test
public void writeOccurrenceDataCallsOccurrenceDataWriterWithCorrectBiasData() throws Exception {
// Arrange
OccurrenceDataWriter mockOccurrenceWriter = mock(OccurrenceDataWriter.class);
InputDataManager target = new InputDataManagerImpl(mock(ExtentDataWriter.class), mockOccurrenceWriter);
List<DiseaseOccurrence> mockData = new ArrayList<>();
// Act
target.writeOccurrenceData(mockData, testFolder.newFolder(), true);
// Assert
verify(mockOccurrenceWriter).write(same(mockData), any(File.class), eq(false));
}
@Test
public void writeExtentDataCallsExtentDataWriterWithCorrectTargetFile() throws Exception {
// Arrange
ExtentDataWriter mockExtentWriter = mock(ExtentDataWriter.class);
InputDataManager target = new InputDataManagerImpl(mockExtentWriter, mock(OccurrenceDataWriter.class));
File dataDir = testFolder.newFolder();
// Act
target.writeExtentData(new ArrayList<AdminUnitDiseaseExtentClass>(), testFolder.newFile(), dataDir);
// Assert
verify(mockExtentWriter).write(
anyListOf(AdminUnitDiseaseExtentClass.class),
any(File.class),
eq(Paths.get(dataDir.toString(), "extent.tif").toFile()));
}
@Test
public void writeExtentDataCallsExtentDataWriterWithCorrectBaseExtentRaster() throws Exception {
// Arrange
ExtentDataWriter mockExtentWriter = mock(ExtentDataWriter.class);
InputDataManager target = new InputDataManagerImpl(mockExtentWriter, mock(OccurrenceDataWriter.class));
File baseExtentRaster = new File("global.asc");
// Act
target.writeExtentData(new ArrayList<AdminUnitDiseaseExtentClass>(), baseExtentRaster, testFolder.newFolder());
// Assert
verify(mockExtentWriter).write(
anyListOf(AdminUnitDiseaseExtentClass.class),
eq(baseExtentRaster),
any(File.class));
}
@Test
public void writeExtentDataCallsExtentDataWriterWithCorrectData() throws Exception {
// Arrange
ExtentDataWriter mockExtentWriter = mock(ExtentDataWriter.class);
InputDataManager target = new InputDataManagerImpl(mockExtentWriter, mock(OccurrenceDataWriter.class));
List<AdminUnitDiseaseExtentClass> extentData = new ArrayList<AdminUnitDiseaseExtentClass>();
// Act
target.writeExtentData(extentData, testFolder.newFile(), testFolder.newFolder());
// Assert
verify(mockExtentWriter).write(
eq(extentData),
any(File.class),
any(File.class));
}
}