class DateFinderBase::Daily < DateFinderBase def dates_to_test(start_date) [start_date] end def next_start_date(start_date, interval) start_date + interval end end class DateFinderBase::Weekly < DateFinderBase def dates_to_test(start_date) start_date.rest_of_days_in_week end def next_start_date(start_date, interval) start_date.start_of_next_week(interval) end end class DateFinderBase::Monthly < DateFinderBase def dates_to_test(start_date) start_date.rest_of_days_in_month end def next_start_date(start_date, interval) start_date.start_of_next_month(interval) end end class DateFinderBase::Yearly < DateFinderBase def dates_to_test(start_date) start_date.rest_of_days_in_year end def next_start_date(start_date, interval) start_date.start_of_next_year(interval) end end