package fr.openwide.core.imports.excel.test.poi;
import static org.junit.Assert.*;
import java.io.InputStream;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang3.time.DateUtils;
import org.javatuples.Quartet;
import org.junit.Test;
import com.google.common.collect.ImmutableList;
import fr.openwide.core.imports.table.common.event.exception.TableImportException;
public class ApachePoiExcelImportTest {
@Test
public void testSuccess() throws TableImportException {
InputStream stream = ApachePoiExcelImportTest.class.getResourceAsStream("/wellFormattedFile.xlsx");
TestApachePoiExcelImporter importer = new TestApachePoiExcelImporter();
List<Quartet<Date, Boolean, String, Integer>> results = importer.doImport(stream, "wellFormattedFile.xlsx");
Calendar calendar = Calendar.getInstance();
calendar.set(2014, Calendar.FEBRUARY, 14);
Date firstDate = DateUtils.truncate(calendar.getTime(), Calendar.DATE);
calendar.set(2014, Calendar.FEBRUARY, 15);
Date secondDate = DateUtils.truncate(calendar.getTime(), Calendar.DATE);
List<Quartet<Date, Boolean, String, Integer>> expectedResults = ImmutableList.of(
newResult(firstDate, true, "String 3", 123),
newResult(null, false, "string 4", 123),
newResult(null, false, null, 9723),
newResult(secondDate, false, "4244.12", null)
);
assertEquals(expectedResults.size(), results.size());
int index = 0;
for (Quartet<Date, Boolean, String, Integer> expectedResult : expectedResults) {
Quartet<Date, Boolean, String, Integer> actualResult = results.get(index);
assertValueEquals(index, 0, "date", expectedResult, actualResult);
assertValueEquals(index, 1, "boolean", expectedResult, actualResult);
assertValueEquals(index, 2, "string", expectedResult, actualResult);
assertValueEquals(index, 3, "integer", expectedResult, actualResult);
++index;
}
}
private void assertValueEquals(int rowIndex, int valueIndex, String valueName,
Quartet<Date, Boolean, String, Integer> expectedResult, Quartet<Date, Boolean, String, Integer> actualResult) {
Object expectedValue = expectedResult.getValue(valueIndex);
Object actualValue = actualResult.getValue(valueIndex);
assertEquals("Wrong " + valueName + " at row " + (rowIndex+2), expectedValue, actualValue);
}
private Quartet<Date, Boolean, String, Integer> newResult(Date date, Boolean bool, String string, Integer integer) {
return Quartet.with(date, bool, string, integer);
}
}