package managers; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.mockito.Matchers.any; import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.junit.Test; import models.Factory; import models.Project; import models.WorkItem; import models.WorkItemStateType; public class ProjectManagerTest extends Setup { @Test public void testDelete() { projectManager.delete(project.id); assertFalse(workItem.isActive); assertFalse(project.isActive); } @SuppressWarnings("unchecked") @Test public void testList() { // initial project WorkItem initialWorkItem = new WorkItem(); initialWorkItem.state = WorkItemStateType.INITIAL; WorkItem unassignedWorkItem = new WorkItem(); unassignedWorkItem.state = WorkItemStateType.UNASSIGNED; WorkItem inProcessWorkItem = new WorkItem(); inProcessWorkItem.state = WorkItemStateType.IN_PROCESS; WorkItem processedWorkItem = new WorkItem(); processedWorkItem.state = WorkItemStateType.PROCESSED; WorkItem completedWorkItem = new WorkItem(); completedWorkItem.state = WorkItemStateType.COMPLETED; Project initialProject = new Project(); initialProject.workItems = new ArrayList<WorkItem>(); initialProject.workItems.add(initialWorkItem); initialProject.workItems.add(unassignedWorkItem); initialProject.workItems.add(inProcessWorkItem); initialProject.workItems.add(processedWorkItem); initialProject.workItems.add(completedWorkItem); Project inProcessProject = new Project(); inProcessProject.workItems = new ArrayList<WorkItem>(); inProcessProject.workItems.add(unassignedWorkItem); inProcessProject.workItems.add(inProcessWorkItem); inProcessProject.workItems.add(processedWorkItem); inProcessProject.workItems.add(completedWorkItem); Project completedProject = new Project(); completedProject.workItems = new ArrayList<WorkItem>(); completedProject.workItems.add(completedWorkItem); List<Project> projects = new ArrayList<Project>(); projects.add(initialProject); projects.add(inProcessProject); projects.add(completedProject); when(projectDaoMock.filter(any(Map.class))).thenReturn(projects); assertEquals(1, projectManager.list("INITIAL").size()); assertEquals(1, projectManager.list("IN_PROCESS").size()); assertEquals(1, projectManager.list("COMPLETED").size()); } @Test public void testAssign() { projectManager.assign(project.id, factory.id, null, null); assertEquals(WorkItemStateType.UNASSIGNED, workItem.state); assertEquals(workItem.assignee, null); assertEquals(workItem.station.id, station.id); assertEquals(workItem.history.get(workItem.history.size() - 1).toState, WorkItemStateType.UNASSIGNED); assertEquals(workItem.history.get(workItem.history.size() - 1).toAssignee, null); assertEquals(workItem.history.get(workItem.history.size() - 1).toStation.id, station.id); } @Test(expected = IllegalStateException.class) public void testAssignToFactoryWithoutFirstStation() { Factory badFactory = new Factory(); badFactory.id = new Long(2); when(factoryDaoMock.read(badFactory.id)).thenReturn(badFactory); projectManager.assign(project.id, badFactory.id, null, null); } }