@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);
  }