package com.metservice.kanban.csv;
import static com.metservice.kanban.tests.util.TestUtils.emptyWorkItemList;
import static org.apache.commons.io.FileUtils.copyFile;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import com.metservice.kanban.model.WorkItem;
import com.metservice.kanban.model.WorkItemType;
public class KanbanCsvFileTest {
@Rule
public TemporaryFolder projectHome = new TemporaryFolder();
@Test
public void readsZeroWorkItemsWhenCsvFileDoesNotExist() throws IOException {
File path = new File(projectHome.getRoot(), "does-not-exist.csv");
KanbanCsvFile file = new KanbanCsvFile(path, new WorkItemType());
assertThat(file.read(), emptyWorkItemList());
}
@Test
public void writesWorkItems() throws IOException {
WorkItemType featureType = new WorkItemType();
WorkItem feature = new WorkItem(1, featureType);
List<WorkItem> workItemsToWrite = new ArrayList<WorkItem>();
workItemsToWrite.add(feature);
// Create file paths
File fileToWriteTo = new File(projectHome.getRoot(), "write-me.csv");
File fileToReadFrom = new File(projectHome.getRoot(), "read-me.csv");
// Write file
KanbanCsvFile writer = new KanbanCsvFile(fileToWriteTo, featureType);
writer.write(workItemsToWrite);
// Duplicate the file in another location and read it back in
copyFile(fileToWriteTo, fileToReadFrom);
KanbanCsvFile reader = new KanbanCsvFile(fileToReadFrom, featureType);
List<WorkItem> duplicateWorkItems = reader.read();
// Verify that the written data is there
assertThat(duplicateWorkItems.get(0), is(feature));
}
}