private FlatReportElement createFlatReportElement() { ProjectAssignment assignment = ProjectAssignmentObjectMother.createProjectAssignment(1); return FlatReportElementBuilder.buildFlatReportElement(assignment); }
@Test public void should_find_project_assignment() throws ObjectNotFoundException { ProjectAssignment pa = ProjectAssignmentObjectMother.createProjectAssignment(1); when(projectAssignmentDAO.findById(1)).thenReturn(pa); List<Integer> ids = Lists.newArrayList(); ids.add(1); when(reportAggregatedDAO.getCumulatedHoursPerAssignmentForAssignments(ids)).thenReturn(new ArrayList<AssignmentAggregateReportElement>()); ProjectAssignment assignment = projectAssignmentService.getProjectAssignment(1); assertEquals(pa, assignment); }
@Test public void testCompareName() { int x = new ProjectAssignmentComparator(ProjectAssignmentComparator.ASSIGNMENT_COMPARE_NAME) .compare(ProjectAssignmentObjectMother.createProjectAssignment(2), ProjectAssignmentObjectMother.createProjectAssignment(1)); assertTrue(x > 0); }
@Test public void testCompareCustDatePrj() { int x = new ProjectAssignmentComparator(ProjectAssignmentComparator.ASSIGNMENT_COMPARE_CUSTDATEPRJ) .compare(ProjectAssignmentObjectMother.createProjectAssignment(2), ProjectAssignmentObjectMother.createProjectAssignment(1)); assertTrue(x > 0); }
@Test public void testCompareStart() { int x = new ProjectAssignmentComparator(ProjectAssignmentComparator.ASSIGNMENT_COMPARE_START) .compare(ProjectAssignmentObjectMother.createProjectAssignment(1), ProjectAssignmentObjectMother.createProjectAssignment(1)); assertTrue(x == 0); }
@Test public void should_assign_user_to_project() throws ProjectAlreadyAssignedException { ProjectAssignment projectAssignment = ProjectAssignmentObjectMother.createProjectAssignment(1); service.persistNewProjectAssignment(projectAssignment); verify(projectAssignmentDao).persist(projectAssignment); }
@Before public void setUp() { a1 = new AssignmentAggregateReportElement(); a2 = new AssignmentAggregateReportElement(); a1.setProjectAssignment(ProjectAssignmentObjectMother.createProjectAssignment(1)); a2.setProjectAssignment(ProjectAssignmentObjectMother.createProjectAssignment(2)); }
@Test public void should_find_project_assignments_for_project_and_check_deletability() throws ObjectNotFoundException { Project project = ProjectObjectMother.createProject(1); ProjectAssignment deleteableAssignment = ProjectAssignmentObjectMother.createProjectAssignment(1); ProjectAssignment nondeleteableAssignment = ProjectAssignmentObjectMother.createProjectAssignment(2); when(projectAssignmentDAO.findAllProjectAssignmentsForProject(project)).thenReturn(Arrays.asList(deleteableAssignment, nondeleteableAssignment)); when(reportAggregatedDAO.getCumulatedHoursPerAssignmentForAssignments(Lists.newArrayList(deleteableAssignment.getPK(), nondeleteableAssignment.getPK()))) .thenReturn(Lists.newArrayList(new AssignmentAggregateReportElement(nondeleteableAssignment, 5))); List<ProjectAssignment> assignments = projectAssignmentService.getProjectAssignmentsAndCheckDeletability(project); assertTrue(assignments.get(0).isDeletable()); assertFalse(assignments.get(1).isDeletable()); } }
@Test public void should_not_update_assignment_when_there_is_data_before_the_start() { ProjectAssignment assignment = ProjectAssignmentObjectMother.createProjectAssignment(1); Date dateStart = new Date(); assignment.setDateStart(dateStart); when(timesheetDao.getTimesheetEntriesBefore(assignment, dateStart)).thenReturn(Lists.newArrayList(TimesheetEntryObjectMother.createTimesheetEntry(1, new Date(), 5f))); try { service.persistUpdatedProjectAssignment(assignment); fail(); } catch (ProjectAssignmentValidationException e) { List<ProjectAssignmentValidationException.Issue> issues = e.getIssues(); assertThat(issues, contains(ProjectAssignmentValidationException.Issue.EXISTING_DATA_BEFORE_START)); } }
public static AssignmentAggregateReportElement createProjectAssignmentAggregate(int baseId, int customerId, int userId) { AssignmentAggregateReportElement pag = new AssignmentAggregateReportElement(); pag.setHours(baseId); pag.setProjectAssignment(ProjectAssignmentObjectMother.createProjectAssignment(baseId, customerId, userId)); return pag; } }
@Test public void when_finding_should_set_proper_id_for_embeddable_id() { TimesheetEntryId timesheetEntryId = new TimesheetEntryId(new Date(), ProjectAssignmentObjectMother.createProjectAssignment(1)); TimesheetEntry entry = subject.find(timesheetEntryId, TimesheetEntry.class); assertEquals(timesheetEntryId, entry.getEntryId()); }
@Test public void should_not_update_assignment_when_there_is_data_after_the_end() { ProjectAssignment assignment = ProjectAssignmentObjectMother.createProjectAssignment(1); Date date = new Date(); assignment.setDateEnd(date); when(timesheetDao.getTimesheetEntriesAfter(assignment, date)).thenReturn(Lists.newArrayList(TimesheetEntryObjectMother.createTimesheetEntry(1, new Date(), 5f))); try { service.persistUpdatedProjectAssignment(assignment); fail(); } catch (ProjectAssignmentValidationException e) { List<ProjectAssignmentValidationException.Issue> issues = e.getIssues(); assertThat(issues, contains(ProjectAssignmentValidationException.Issue.EXISTING_DATA_AFTER_END)); } }
@Test public void should_create_pm_detailed_report() { Project project = new Project(1); project.setProjectCode("PRJ"); DateRange dr = new DateRange(new Date(), new Date()); when(reportAggregatedDao.getMinMaxDateTimesheetEntry(project)).thenReturn(dr); List<AssignmentAggregateReportElement> elms = new ArrayList<>(); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { elms.add(AssignmentAggregateReportElementMother.createProjectAssignmentAggregate(j, i, i)); } } when(reportAggregatedDao.getCumulatedHoursPerAssignmentForProjects(any(List.class), any(DateRange.class))) .thenReturn(elms); List<ProjectAssignment> assignments = new ArrayList<>(); assignments.add(ProjectAssignmentObjectMother.createProjectAssignment(2)); when(assignmentService.getProjectAssignments(project, dr)).thenReturn(assignments); ProjectManagerReport report = aggregateReportService.getProjectManagerDetailedReport(project); assertEquals(new Integer(1), report.getProject().getPK()); assertEquals(16, report.getAggregates().size()); }
@Test public void should_process_column_with_embeddable() throws InstantiationException, IllegalAccessException { FieldMap fieldDefinitionMap = FieldMapFactory.buildFieldMapForEntity(TimesheetEntry.class); FieldDefinition fieldDef = fieldDefinitionMap.get("assignment_id"); TimesheetEntry timesheetEntry = TimesheetEntryObjectMother.createTimesheetEntry(1, new Date(), 5f); timesheetEntry.setEntryId(null); Map<Class<?>, Object> embeddables = Maps.newHashMap(); ProjectAssignment projectAssignment = ProjectAssignmentObjectMother.createProjectAssignment(1); fieldDef.process(timesheetEntry, embeddables, projectAssignment); assertEquals(projectAssignment, ((TimesheetEntryId) embeddables.get(TimesheetEntryId.class)).getProjectAssignment()); } }
@Test public void shouldPersist() { Calendar cal = new GregorianCalendar(); cal.add(Calendar.MONTH, 1); ProjectAssignment assignment = ProjectAssignmentObjectMother.createProjectAssignment(new User(5), new Project(1)); assignment.setDateStart(new Date()); assignment.setDateEnd(cal.getTime()); assignment.setAssignmentType(new ProjectAssignmentType(EhourConstants.ASSIGNMENT_DATE)); assignment.setAssignmentId(25); projectAssignmentDAO.persist(assignment); assertNotNull(assignment.getAssignmentId()); }
@Test public void should_assign_users_to_project_using_template_assignment() { ProjectAssignment templateAssignment = ProjectAssignmentObjectMother.createProjectAssignment(1); templateAssignment.setAllottedHours(5f); User userA = UserObjectMother.createUser(); userA.setLastName("A"); User userB = UserObjectMother.createUser(); userB.setLastName("B"); userB.setUserId(2); List<User> users = Arrays.asList(userA, userB); service.assignUsersToProjects(users, templateAssignment); ArgumentCaptor<ProjectAssignment> captor = ArgumentCaptor.forClass(ProjectAssignment.class); verify(projectAssignmentDao, times(2)).persist(captor.capture()); List<ProjectAssignment> assignments = captor.getAllValues(); ProjectAssignment assignment = assignments.get(0); assertEquals(userA, assignment.getUser()); assertEquals(5f, assignment.getAllottedHours(), 0); }
@Test public void should_provide_assignments_without_bookings() { provideNoLocks(); noFilteringOnUserOrProject(); when(reportAggregatedDao.getAssignmentsWithoutBookings(reportCriteria.getReportRange())).thenReturn(Arrays.asList(ProjectAssignmentObjectMother.createProjectAssignment(1))); userSelectedCriteria.setShowZeroBookings(true); Project billableProject = ProjectObjectMother.createProject(1); billableProject.setBillable(true); Project notBillableProject = ProjectObjectMother.createProject(2); notBillableProject.setBillable(false); when(projectDao.findAllActive()).thenReturn(Arrays.asList(billableProject)); when(detailedReportDao.getHoursPerDay(reportCriteria.getReportRange())).thenReturn(Arrays.asList(createFlatReportElement())); ReportData reportData = detailedReportService.getDetailedReportData(reportCriteria); FlatReportElement element = (FlatReportElement) reportData.getReportElements().get(0); assertTrue(element.isEmptyEntry()); verify(detailedReportDao).getHoursPerDay(reportCriteria.getReportRange()); verify(reportAggregatedDao).getAssignmentsWithoutBookings(reportCriteria.getReportRange()); } }
public static TimesheetEntry createTimesheetEntry(int prjId, Date date, float hours) { TimesheetEntryId id = new TimesheetEntryId(); id.setEntryDate(date); id.setProjectAssignment(ProjectAssignmentObjectMother.createProjectAssignment(prjId, prjId, 1)); TimesheetEntry entry = new TimesheetEntry(); entry.setEntryId(id); entry.setHours(hours); return entry; }
@Test public void shouldParseTwoTimesheetEntries() throws XMLStreamException, InstantiationException, IllegalAccessException, ImportException { EntityParser parser = createParser("<TIMESHEET_ENTRIES CLASS=\"net.rrm.ehour.domain.TimesheetEntry\">\n<TIMESHEET_ENTRY>\n<ASSIGNMENT_ID>1</ASSIGNMENT_ID>\n<ENTRY_DATE>2007-03-26</ENTRY_DATE>\n<HOURS>8.0</HOURS>\n <COMMENT>jaja</COMMENT>\n </TIMESHEET_ENTRY>\n <TIMESHEET_ENTRY>\n <ASSIGNMENT_ID>2</ASSIGNMENT_ID>\n <ENTRY_DATE>2007-03-26</ENTRY_DATE>\n <HOURS>0.0</HOURS>\n </TIMESHEET_ENTRY>\n </TIMESHEET_ENTRIES>\n", ProjectAssignmentObjectMother.createProjectAssignment(1), 1); keyCache.putKey(ProjectAssignment.class, 1, 1); keyCache.putKey(ProjectAssignment.class, 2, 2); List<TimesheetEntry> result = parser.parse(TimesheetEntry.class, new JoinTables(), status); assertEquals(2, result.size()); assertNotNull(result.get(0).getEntryId().getEntryDate()); assertNotNull(result.get(0).getEntryId().getProjectAssignment()); assertEquals(8.0, result.get(0).getHours(), 0); assertEquals("jaja", result.get(0).getComment()); assertEquals(2, daoValidator.getTotalPersistCount()); }
public static TimesheetEntry createTimesheetEntry(User user, Date date, float hours) { TimesheetEntryId id = new TimesheetEntryId(); id.setEntryDate(date); ProjectAssignment projectAssignment = ProjectAssignmentObjectMother.createProjectAssignment(1, 1, 1); projectAssignment.setUser(user); id.setProjectAssignment(projectAssignment); TimesheetEntry entry = new TimesheetEntry(); entry.setEntryId(id); entry.setHours(hours); return entry; }