@Override protected List<FlatReportElement> getReportElements(List<User> users, List<Project> projects, List<Date> lockedDates, DateRange reportRange, boolean showZeroBookings) { List<Integer> userIds = DomainUtil.getIdsFromDomainObjects(users); List<Integer> projectIds = DomainUtil.getIdsFromDomainObjects(projects); List<FlatReportElement> elements = getElements(userIds, projectIds, reportRange); for (FlatReportElement element : elements) { Date date = element.getDayDate(); element.setLockableDate(new LockableDate(date, lockedDates.contains(date))); } if (showZeroBookings) { List<FlatReportElement> reportElementsForAssignmentsWithoutBookings = getReportElementsForAssignmentsWithoutBookings(reportRange, userIds, projectIds); reportElementsForAssignmentsWithoutBookings.addAll(elements); return reportElementsForAssignmentsWithoutBookings; } else { return elements; } }
@Test public void should_add_locked_days_to_detailed_report() { DateTime dateTime = new DateTime(reportCriteria.getReportRange().getDateStart()); Interval interval = new Interval(dateTime, dateTime); provideNoAssignmentsWithoutBookings(); when(timesheetLockService.findLockedDatesInRange(any(Date.class), any(Date.class))) .thenReturn(WrapAsScala$.MODULE$.asScalaBuffer(Lists.newArrayList(interval))); FlatReportElement reportElement = new FlatReportElement(); reportElement.setDayDate(dateTime.toDate()); when(detailedReportDao.getHoursPerDay(any(DateRange.class))) .thenReturn(Arrays.asList(reportElement)); noFilteringOnUserOrProject(); ReportData reportData = detailedReportService.getDetailedReportData(reportCriteria); FlatReportElement flat = (FlatReportElement) reportData.getReportElements().get(0); assertTrue(flat.getLockableDate().isLocked()); verify(detailedReportDao).getHoursPerDay(any(DateRange.class)); verify(timesheetLockService).findLockedDatesInRange(any(Date.class), any(Date.class)); }