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.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.CategoryDataset; 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 BurnUpDatasetGeneratorTest { private static final LocalDate DATE = parseIsoDate("2011-06-13"); private static final WorkItemType WORK_ITEM_TYPE = new WorkItemType("backlog", "in progress", "completed"); private BurnUpDatasetGenerator datasetFactory; @Before public void before() { datasetFactory = new BurnUpDatasetGenerator(); } @Test public void datasetContainsHistoricValues() { WorkItem workItem = newBacklogItemWithSize(7); BurnUpDataModel model = new BurnUpDataModel(WORK_ITEM_TYPE, asList(workItem), DATE); CategoryDataset data = datasetFactory.createDataset(model); assertThat(data.getValue(BACKLOG, DATE).intValue(), is(7)); } @Test public void datasetContainsProjectedValues() { WorkItem workItem1 = newBacklogItemWithSize(1); workItem1.advance(DATE); workItem1.advance(DATE); WorkItem workItem2 = newBacklogItemWithSize(1); BurnUpDataModel model = new BurnUpDataModel(WORK_ITEM_TYPE, asList(workItem1, workItem2), null, DATE.plusDays(1)); CategoryDataset data = datasetFactory.createDataset(model); assertThat(data.getValue(COMPLETE, DATE.plusDays(2)).intValue(), is(2)); } @Test public void chartDataDoesNotUseExcludedWorkItems() { WorkItem excludedWorkItem = newBacklogItemWithSize(6); excludedWorkItem.setExcluded(true); BurnUpDataModel model = new BurnUpDataModel(WORK_ITEM_TYPE, asList(excludedWorkItem), null, DATE); CategoryDataset data = datasetFactory.createDataset(model); assertThat(data.getValue(BACKLOG, DATE).doubleValue(), is(0.0)); } private final WorkItem newBacklogItemWithSize(int size) { WorkItem workItem = new WorkItem(1, WORK_ITEM_TYPE); workItem.setAverageCaseEstimate(size); workItem.advance(DATE); return workItem; } }