package com.metservice.kanban.model; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.NoSuchElementException; import org.joda.time.LocalDate; import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import com.metservice.kanban.model.EstimatesBudgetEntry; import com.metservice.kanban.model.EstimatesProject; import com.metservice.kanban.model.KanbanProject; import com.metservice.kanban.model.WorkItem; import com.metservice.kanban.model.WorkItemTree; import com.metservice.kanban.model.WorkItemType; public class EstimatesProjectTest { EstimatesProject project; KanbanProject kanbanProject; List<WorkItem> workItems; WorkItemTree tree; WorkItem workItem0, workItem5, workItem10; @Before public void setUp() { kanbanProject = mock(KanbanProject.class); tree = mock(WorkItemTree.class); workItems = new ArrayList<WorkItem>(); when(kanbanProject.getWorkItemTree()).thenReturn(tree); when(tree.getWorkItemList()).thenReturn(workItems); WorkItemType type = new WorkItemType("Backkog", "Complete"); workItem0 = new WorkItem(0, type); workItem0.setAverageCaseEstimate(5); workItem0.setWorstCaseEstimate(10); workItem5 = new WorkItem(5, type); workItem5.setAverageCaseEstimate(6); workItem5.setWorstCaseEstimate(12); workItem10 = new WorkItem(10, type); workItem10.setAverageCaseEstimate(7); workItem10.setWorstCaseEstimate(14); workItem0.advance(LocalDate.fromCalendarFields(Calendar.getInstance())); workItem0.advance(LocalDate.fromCalendarFields(Calendar.getInstance())); workItems.add(workItem0); workItems.add(workItem5); workItems.add(workItem10); project = new EstimatesProject(); project.setEstimatedCostPerPoint(10); project.setKanbanProject(kanbanProject); } @After public void tearDown() { } @Test public void getFeatureTest() { assertEquals(workItem5, project.getFeature(5)); } @Test(expected = NoSuchElementException.class) public void getFeatureUnknownIdShouldThrowException() { project.getFeature(3); } @Test(expected = NoSuchElementException.class) public void getFinishedFeatureShouldThrowException() { project.getFeature(0); } @Test public void getBudgetEntries() { List<EstimatesBudgetEntry> budgetEntries = project.getBudgetEntries(); assertEquals(2, budgetEntries.size()); assertEquals(workItem5, budgetEntries.get(0).getFeature()); assertEquals(workItem10, budgetEntries.get(1).getFeature()); assertEquals(120, budgetEntries.get(0).getWorstCaseCumulativeCost()); assertEquals(60, budgetEntries.get(0).getAverageCaseCumulativeCost()); assertEquals(222, budgetEntries.get(1).getWorstCaseCumulativeCost()); assertEquals(130, budgetEntries.get(1).getAverageCaseCumulativeCost()); } @Test @Ignore("not working now") public void getCostPerPointSoFar() { // project.setCostSoFar(100); assertEquals(20, project.getCostPerPointSoFar()); } @Test public void setNullKanbanProject() { project.setKanbanProject(null); assertEquals(0, project.getCostPerPointSoFar()); assertEquals(0, project.getBudgetEntries().size()); } }