package uk.ac.ox.zoo.seeg.abraid.mp.publicsite.web.tools; import org.junit.Test; import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.DiseaseGroup; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.*; /** * Tests the UploadCsvControllerHelperAsyncWrapper class. * * Copyright (c) 2014 University of Oxford */ public class UploadCsvControllerHelperAsyncWrapperTest { @Test public void acquireCsvDataRunsSuccessfully() throws Exception { // Arrange boolean isGoldStandard = false; boolean isBias = true; DiseaseGroup biasDisease = mock(DiseaseGroup.class); UploadCsvControllerHelper helper = mock(UploadCsvControllerHelper.class); UploadCsvControllerHelperAsyncWrapper wrapper = new UploadCsvControllerHelperAsyncWrapper(helper); byte[] csv = "Test csv".getBytes(); String emailAddress = "user@test.com"; String filePath = "/path/to/filename.csv"; // Act wrapper.acquireCsvData(csv, isBias, isGoldStandard, biasDisease, emailAddress, filePath).get(); // Assert verify(helper).acquireCsvData(eq(csv), eq(isBias), eq(isGoldStandard), eq(biasDisease), eq(emailAddress), eq(filePath)); } @Test public void acquireCsvDataCatchesThrownException() throws Exception { // Arrange boolean isGoldStandard = false; boolean isBias = true; DiseaseGroup biasDisease = mock(DiseaseGroup.class); UploadCsvControllerHelper helper = mock(UploadCsvControllerHelper.class); UploadCsvControllerHelperAsyncWrapper wrapper = new UploadCsvControllerHelperAsyncWrapper(helper); byte[] csv = "Test csv".getBytes(); String emailAddress = "user@test.com"; String filePath = "/path/to/filename.csv"; doThrow(new RuntimeException("Test")).when(helper).acquireCsvData(any(byte[].class), anyBoolean(), anyBoolean(), any(DiseaseGroup.class), anyString(), anyString()); // Act wrapper.acquireCsvData(csv, isBias, isGoldStandard, biasDisease, emailAddress, filePath).get(); // Assert verify(helper).acquireCsvData(eq(csv), eq(isBias), eq(isGoldStandard), eq(biasDisease), eq(emailAddress), eq(filePath)); // Implicit assertion that an exception hasn't bubble out of wrapper.acquireCsvData } }