package sushi.excel.importer; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.junit.Test; import sushi.event.SushiEvent; import sushi.event.attribute.SushiAttribute; import sushi.excel.importer.ExcelImporter; import sushi.excel.importer.SushiImportEvent; import sushi.util.SushiTestHelper; /** * This class tests the import of excel files. * @author micha */ public class ExcelImportTest { private static String filePath = System.getProperty("user.dir")+"/src/test/resources/Kino.xls"; private static String cinemaSchedulePath = System.getProperty("user.dir")+"/src/test/resources/CinemaSchedule.xls"; private static String cinemaScheduleWithoutTimestampPath = System.getProperty("user.dir")+"/src/test/resources/CinemaScheduleWithoutTime.xls"; private static String formattedFilePathText = "/src/test/resources/Test-Case-Formatting-Text.xls"; private static String formattedFilePathDateShort = "/src/test/resources/Test-Case-Formatting-Date-short.xls"; private static String formattedFilePathDateLong = "/src/test/resources/Test-Case-Formatting-Date-long.xls"; private static String emptyFilePath = System.getProperty("user.dir")+ "/src/test/resources/EmptySheet.xls"; @Test public void testExtractionOfColumnTitles() { ExcelImporter excelNormalizer = new ExcelImporter(); ArrayList<String> columnTitles = excelNormalizer.getColumnTitlesFromFile(filePath); assertTrue("Timestamp column could not be read.", columnTitles.contains("Timestamp")); assertTrue("Location column could not be read.", columnTitles.contains("Location")); assertTrue("Rating column could not be read.", columnTitles.contains("Rating")); } @Test public void testExtractionOfEvents() { ExcelImporter excelNormalizer = new ExcelImporter(); List<String> columnTitles = excelNormalizer.getColumnTitlesFromFile(filePath); List<SushiAttribute> attributes = SushiTestHelper.createAttributes(columnTitles); List<SushiEvent> events = excelNormalizer.importEventsFromFile(filePath, attributes); assertTrue("Not the right number of events imported.", events.size() == 999); // 12: 30.10.2012 20:46 1 yellow SushiEvent testEvent1 = events.get(10); assertTrue("Date of event 1 does not match.", testEvent1.getTimestamp().compareTo(new Date(2012 - 1900, 9, 30, 20, 46, 58)) == 0); //ID is set when saving in DB //assertTrue("ID of event 1 (" + testEvent1.getID() +") does not match.", testEvent1.getID() == 10); System.out.println(testEvent1.getValues()); assertTrue("Location of event 1 does not match.", testEvent1.getValues().get("Location").equals(1)); assertTrue("Rating of event 1 is not right.", testEvent1.getValues().get("Rating").equals("yellow")); //28: 30.10.2012 20:27 1 red SushiEvent testEvent2 = events.get(26); assertTrue("Date of event 2 does not match.", testEvent2.getTimestamp().compareTo(new Date(2012 - 1900, 9, 30, 20, 27, 58)) == 0); //ID is set when saving in DB //assertTrue("ID of event 2 (" + testEvent2.getID() +") does not match.", testEvent2.getID() == 26); assertTrue("Rating of event 2 is not right.", testEvent2.getValues().get("Rating").equals("red")); } @Test public void testColumnSelection() { ExcelImporter excelNormalizer = new ExcelImporter(); // ArrayList<String> columnTitles = excelNormalizer.getColumnTitlesFromXLS(filePath); ArrayList<String> columnTitles = new ArrayList<String>(); columnTitles.add("Timestamp"); columnTitles.add("Location"); List<SushiAttribute> attributes = SushiTestHelper.createAttributes(columnTitles); List<SushiEvent> events = excelNormalizer.importEventsFromFile(filePath, attributes); assertTrue("Not the right number of events imported.", events.size() == 999); //12: 30.10.2012 20:46 1 yellow SushiEvent testEvent1 = events.get(10); assertTrue("Date of event 1 does not match.", testEvent1.getTimestamp().compareTo(new Date(2012 - 1900, 9, 30, 20, 46, 58)) == 0); //ID is set when saving in DB //assertTrue("ID of event 1 (" + testEvent1.getID() +") does not match.", testEvent1.getID() == 10); //28: 30.10.2012 20:27 1 red SushiEvent testEvent2 = events.get(26); assertTrue("Date of event 2 does not match.", testEvent2.getTimestamp().compareTo(new Date(2012 - 1900, 9, 30, 20, 27, 58)) == 0); //ID is set when saving in DB //assertTrue("ID of event 2 (" + testEvent2.getID() +") does not match.", testEvent2.getID() == 26); } @Test public void testBuggyExcelFile() { ExcelImporter excelNormalizer = new ExcelImporter(); List<String> columnTitles = excelNormalizer.getColumnTitlesFromFile(cinemaSchedulePath); List<SushiAttribute> attributes = SushiTestHelper.createAttributes(columnTitles); List<SushiEvent> events = excelNormalizer.importEventsFromFile(cinemaSchedulePath, attributes); assertTrue("Not the right number of events imported. Should be 12, but were " + events.size(), events.size() == 12); System.out.println(events.get(0)); } //TODO @Test public void testFormattedCellsText(){ // ExcelNormalizer excelNormalizer = new ExcelNormalizer(); // ArrayList<String> columnTitles = excelNormalizer.getColumnTitlesFromXLS(formattedFilePathText); // excelNormalizer.importEventsFromXLS(filePath, excelNormalizer.getColumnTitlesFromXLS(filePath), 1); // ArrayList<SushiEvent> events = excelNormalizer.importEventsFromXLS(cinemaSchedulePath, columnTitles); // //Timestamp of cell formatted Text || 12.09.2011 05:00:00 // assertTrue("date formatted Text was not read correctly, timestamp was " + events.get(0).getTimestamp(), events.get(0).getTimestamp().compareTo(new Date(2011 - 1900, 9, 12, 05, 00, 00))==0); } //TODO @Test public void testFormattedCellsDateShort(){ // ExcelNormalizer excelNormalizer = new ExcelNormalizer(); // ArrayList<String> columnTitles = excelNormalizer.getColumnTitlesFromXLS(formattedFilePathDateShort); // excelNormalizer.importEventsFromXLS(filePath, excelNormalizer.getColumnTitlesFromXLS(filePath), 1); // ArrayList<SushiEvent> events = excelNormalizer.importEventsFromXLS(cinemaSchedulePath, columnTitles); // //Timestamp of cell formatted Date(short) || 12.09.2011 05:00:00 // assertTrue("date formatted Date(short) was not read correctly, timestamp was " + events.get(0).getTimestamp(), events.get(0).getTimestamp().compareTo(new Date(2011 - 1900, 9, 12, 05, 00, 00))==0); } //TODO @Test public void testFormattedCellsDateLong(){ // ExcelNormalizer excelNormalizer = new ExcelNormalizer(); // ArrayList<String> columnTitles = excelNormalizer.getColumnTitlesFromXLS(formattedFilePathDateLong); // excelNormalizer.importEventsFromXLS(filePath, excelNormalizer.getColumnTitlesFromXLS(filePath), 1); // ArrayList<SushiEvent> events = excelNormalizer.importEventsFromXLS(cinemaSchedulePath, columnTitles); // //Timestamp of cell formatted Date(long) || 12.09.2011 05:00:00 // assertTrue("date formatted Date(long) was not read correctly, timestamp was " + events.get(0).getTimestamp(), events.get(0).getTimestamp().compareTo(new Date(2011 - 1900, 9, 12, 05, 00, 00))==0); } @Test public void testExtractionOfImportEvent(){ //Importieren mit SushiImportEvent von Events mit TimeStamp ExcelImporter excelNormalizer = new ExcelImporter(); List<String> columnTitles = excelNormalizer.getColumnTitlesFromFile(cinemaSchedulePath); List<SushiImportEvent> events = excelNormalizer.importEventsForPreviewFromFile(cinemaSchedulePath, columnTitles); assertTrue("Not the right number of events imported. Should be 12, but were " + events.size(), events.size() == 12); System.out.println("Event: " + events.get(0)); //Importieren mit SushiImportEvent von Events ohne TimeStamp List<String> columnTitlesWithoutTimestamp = excelNormalizer.getColumnTitlesFromFile(cinemaScheduleWithoutTimestampPath); List<SushiImportEvent> eventsWithoutTimestamp = excelNormalizer.importEventsForPreviewFromFile(cinemaScheduleWithoutTimestampPath, columnTitlesWithoutTimestamp); assertTrue("Not the right number of events imported. Should be 12, but were " + eventsWithoutTimestamp.size(), eventsWithoutTimestamp.size() == 12); System.out.println("Event: " + eventsWithoutTimestamp.get(0)); } @Test public void testEmptySheet(){ ExcelImporter excelNormalizer = new ExcelImporter(); List<String> columnTitles = excelNormalizer.getColumnTitlesFromFile(emptyFilePath); List<SushiImportEvent> events = excelNormalizer.importEventsForPreviewFromFile(emptyFilePath, columnTitles); assertTrue(events.isEmpty()); } }