@Test public void shouldScheduleDayOfWeekJob() throws SchedulerException { try { fakeNow(newDateTime(2020, 7, 15, 10, 0, 0)); Map<String, Object> params = new HashMap<>(); params.put(MotechSchedulerService.JOB_ID_KEY, "job_id"); schedulerService.scheduleDayOfWeekJob( new DayOfWeekSchedulableJob( new MotechEvent("test_event", params), newDateTime(2020, 7, 10), // friday newDateTime(2020, 7, 22), asList(DayOfWeek.Monday, DayOfWeek.Thursday), new Time(10, 10), false)); List<DateTime> fireTimes = getFireTimes("test_event-job_id"); assertEquals( asList( newDateTime(2020, 7, 13, 10, 10, 0), newDateTime(2020, 7, 16, 10, 10, 0), newDateTime(2020, 7, 20, 10, 10, 0)), fireTimes); } finally { stopFakingTime(); } }
@Override public void scheduleDayOfWeekJob( String subject, Map<Object, Object> parameters, DateTime start, DateTime end, List<Object> days, DateTime time, Boolean ignorePastFiresAtStart) { MotechEvent motechEvent = new MotechEvent(subject, createMotechEventParameters(parameters)); Time jobTime = new Time(time.getHourOfDay(), time.getMinuteOfHour()); List<DayOfWeek> jobDayOfWeeks = createDayOfWeeks(days); DayOfWeekSchedulableJob job = new DayOfWeekSchedulableJob( motechEvent, start.toLocalDate(), end.toLocalDate(), jobDayOfWeeks, jobTime, ignorePastFiresAtStart); scheduler.scheduleDayOfWeekJob(job); }