package com.metservice.kanban.csv; import static com.metservice.kanban.csv.CsvConstants.AVERAGE_CASE_ESIMATE; import static com.metservice.kanban.csv.CsvConstants.COLOR_COLUMN_NAME; import static com.metservice.kanban.csv.CsvConstants.EXCLUDED_COLUMN_NAME; import static com.metservice.kanban.csv.CsvConstants.ID_COLUMN_NAME; import static com.metservice.kanban.csv.CsvConstants.IMPORTANCE_COLUMN_NAME; import static com.metservice.kanban.csv.CsvConstants.NAME_COLUMN_NAME; import static com.metservice.kanban.csv.CsvConstants.NOTES_COLUMN_NAME; import static com.metservice.kanban.csv.CsvConstants.PARENT_ID_COLUMN_NAME; import static com.metservice.kanban.csv.CsvConstants.SIZE_COLUMN_NAME; import static com.metservice.kanban.utils.DateUtils.formatIsoDate; import static com.metservice.kanban.utils.DateUtils.parseIsoDate; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; import org.joda.time.LocalDate; import org.junit.Test; import com.metservice.kanban.model.WorkItem; import com.metservice.kanban.model.WorkItemType; public class WorkItemParserTest { @Test public void parsesWorkItems() { // TODO Use TestKanbanBoardBuilder to construct test data instead WorkItemType type = new WorkItemType("phase 1", "phase 2", "phase 3"); LocalDate date1 = parseIsoDate("2011-06-10"); LocalDate date2 = parseIsoDate("2011-06-13"); CsvColumnNames columnNames = new CsvColumnNames("phase 1", ID_COLUMN_NAME, NAME_COLUMN_NAME, "phase 2", IMPORTANCE_COLUMN_NAME, NOTES_COLUMN_NAME, PARENT_ID_COLUMN_NAME, AVERAGE_CASE_ESIMATE, "phase 3", EXCLUDED_COLUMN_NAME, COLOR_COLUMN_NAME); String[] cells = new String[] { formatIsoDate(date1), "77", "work item name", formatIsoDate(date2), "-3", "some notes", "7", "5", "", "true", "FFFFFF" }; DefaultWorkItemParser parser = new DefaultWorkItemParser(type); WorkItem workItem = parser.parseWorkItem(columnNames, cells); assertThat(workItem.getDate("phase 1"), is(date1)); assertThat(workItem.getDate("phase 2"), is(date2)); assertThat(workItem.hasDate("phase 3"), is(false)); assertThat(workItem.getId(), is(77)); assertThat(workItem.getParentId(), is(7)); assertThat(workItem.getName(), is("work item name")); assertThat(workItem.getNotes(), is("some notes")); assertThat(workItem.getAverageCaseEstimate(), is(5)); assertThat(workItem.getImportance(), is(-3)); assertThat(workItem.isExcluded(), is(true)); } @Test public void parsesOldCsvDataFile() { WorkItemType type = new WorkItemType("phase 1", "phase 2", "phase 3"); LocalDate date1 = parseIsoDate("2011-06-10"); LocalDate date2 = parseIsoDate("2011-06-13"); CsvColumnNames columnNames = new CsvColumnNames("phase 1", ID_COLUMN_NAME, NAME_COLUMN_NAME, "phase 2", IMPORTANCE_COLUMN_NAME, NOTES_COLUMN_NAME, PARENT_ID_COLUMN_NAME, SIZE_COLUMN_NAME, "phase 3", EXCLUDED_COLUMN_NAME, COLOR_COLUMN_NAME); String[] cells = new String[] { formatIsoDate(date1), "77", "work item name", formatIsoDate(date2), "-3", "some notes", "7", "5", "", "true", "FFFFFF" }; DefaultWorkItemParser parser = new DefaultWorkItemParser(type); WorkItem workItem = parser.parseWorkItem(columnNames, cells); assertThat(workItem.getDate("phase 1"), is(date1)); assertThat(workItem.getDate("phase 2"), is(date2)); assertThat(workItem.hasDate("phase 3"), is(false)); assertThat(workItem.getId(), is(77)); assertThat(workItem.getParentId(), is(7)); assertThat(workItem.getName(), is("work item name")); assertThat(workItem.getNotes(), is("some notes")); assertThat(workItem.getAverageCaseEstimate(), is(5)); assertThat(workItem.getImportance(), is(-3)); assertThat(workItem.isExcluded(), is(true)); } }