package com.metservice.kanban.charts.burnup;
import static com.metservice.kanban.charts.burnup.BurnUpChartSeriesNames.BACKLOG;
import static com.metservice.kanban.charts.burnup.BurnUpChartSeriesNames.COMPLETE;
import static com.metservice.kanban.charts.burnup.BurnUpChartSeriesNames.IN_PROGRESS;
import static com.metservice.kanban.utils.DateUtils.parseIsoDate;
import static java.util.Arrays.asList;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import org.jfree.data.category.DefaultCategoryDataset;
import org.joda.time.LocalDate;
import org.junit.Before;
import org.junit.Test;
import com.metservice.kanban.model.WorkItem;
import com.metservice.kanban.model.WorkItemType;
public class HistoricDatasetPopulatorTest {
private DefaultCategoryDataset dataset;
@Before
public void before() {
this.dataset = new DefaultCategoryDataset();
}
@Test
public void dataHasCorrectThreeRows() {
WorkItemType type = new WorkItemType("phase");
WorkItem workItem = new WorkItem(1, type);
workItem.advance(parseIsoDate("2011-06-10"));
BurnUpDataModel model = new BurnUpDataModel(type, asList(workItem), parseIsoDate("2011-06-13"));
HistoricDatasetPopulator populator = new HistoricDatasetPopulator(model);
populator.populateDataset(dataset);
assertThat(dataset.getRowCount(), is(3));
assertThat((String) dataset.getRowKey(0), is(COMPLETE));
assertThat((String) dataset.getRowKey(1), is(IN_PROGRESS));
assertThat((String) dataset.getRowKey(2), is(BACKLOG));
}
@Test
public void dataHasOneColumnPerDay() {
WorkItemType type = new WorkItemType("phase");
WorkItem workItem = new WorkItem(1, type);
workItem.advance(parseIsoDate("2011-06-10"));
BurnUpDataModel model = new BurnUpDataModel(type, asList(workItem), parseIsoDate("2011-06-13"));
HistoricDatasetPopulator populator = new HistoricDatasetPopulator(model);
populator.populateDataset(dataset);
//expected to skip the weekend (11 and 12)
assertThat(dataset.getColumnCount(), is(2));
assertThat((LocalDate) dataset.getColumnKey(0), is(parseIsoDate("2011-06-10")));
assertThat((LocalDate) dataset.getColumnKey(1), is(parseIsoDate("2011-06-13")));
}
@Test
public void dataHasCorrectValues() {
WorkItemType type = new WorkItemType("backlog", "in progress", "complete");
LocalDate yesterday = parseIsoDate("2011-06-01");
LocalDate today = parseIsoDate("2011-06-02");
WorkItem backlog1 = new WorkItem(1, type);
backlog1.setAverageCaseEstimate(1);
backlog1.advance(yesterday);
WorkItem backlog2 = new WorkItem(2, type);
backlog2.setAverageCaseEstimate(2);
backlog2.advance(yesterday);
WorkItem inProgress4 = new WorkItem(3, type);
inProgress4.setAverageCaseEstimate(4);
inProgress4.advance(yesterday);
inProgress4.advance(today);
BurnUpDataModel model = new BurnUpDataModel(type, asList(backlog1, backlog2, inProgress4), today);
HistoricDatasetPopulator populator = new HistoricDatasetPopulator(model);
populator.populateDataset(dataset);
assertThat((Double) dataset.getValue(COMPLETE, yesterday), is(0.0));
assertThat((Double) dataset.getValue(IN_PROGRESS, yesterday), is(0.0));
assertThat((Double) dataset.getValue(BACKLOG, yesterday), is(7.0));
assertThat((Double) dataset.getValue(COMPLETE, today), is(0.0));
assertThat((Double) dataset.getValue(IN_PROGRESS, today), is(4.0));
assertThat((Double) dataset.getValue(BACKLOG, today), is(3.0));
}
}