package com.metservice.kanban.csv;
import static java.util.Collections.singleton;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import com.metservice.kanban.model.WorkItem;
import com.metservice.kanban.model.WorkItemType;
import com.metservice.kanban.utils.DateUtils;
public class KanbanCsvWriterTest {
@Test
public void canReadAWorkItemItWrites() throws IOException {
// TODO Use TestKanbanBoardBuilder to construct test data instead
WorkItemType type = new WorkItemType("phase 1", "phase 2");
WorkItem workItem = new WorkItem(111, 11, type);
workItem.setName("workItem 1");
workItem.setAverageCaseEstimate(6);
workItem.setImportance(3);
workItem.setNotes("notes");
workItem.setDateAsString("phase 1", "2011-06-02");
workItem.setExcluded(true);
List<WorkItem> workItems = new ArrayList<WorkItem>(singleton(workItem));
StringWriter writeTarget = new StringWriter();
KanbanCsvWriter writer = new KanbanCsvWriter(writeTarget, type);
writer.write(workItems);
StringReader readSource = new StringReader(writeTarget.toString());
KanbanCsvReader reader = new KanbanCsvReader(readSource, type);
WorkItem retrievedWorkItem = reader.read().get(0);
assertThat(retrievedWorkItem.getId(), is(111));
assertThat(retrievedWorkItem.getParentId(), is(11));
assertThat(retrievedWorkItem.getType(), is(type));
assertThat(retrievedWorkItem.getName(), is("workItem 1"));
assertThat(retrievedWorkItem.getAverageCaseEstimate(), is(6));
assertThat(retrievedWorkItem.getImportance(), is(3));
assertThat(retrievedWorkItem.getNotes(), is("notes"));
assertThat(retrievedWorkItem.isExcluded(), is(true));
assertThat(retrievedWorkItem.getDate("phase 1"), is(DateUtils.parseIsoDate("2011-06-02")));
assertThat(retrievedWorkItem.hasDate("phase 2"), is(false));
}
}