diff --git a/app/models/teaching_period.rb b/app/models/teaching_period.rb index eaf5d6b2c..e8c0195ac 100644 --- a/app/models/teaching_period.rb +++ b/app/models/teaching_period.rb @@ -115,7 +115,10 @@ def date_for_week_and_day(week, day) start_day_num = start_date.wday - result = week_start + (day_num - start_day_num).days + day_offset = day_num - start_day_num + day_offset += 7 if day_offset.negative? + + result = week_start + day_offset.days for a_break in breaks do if result >= a_break.start_date && result < a_break.end_date diff --git a/test/models/teaching_period_test.rb b/test/models/teaching_period_test.rb index 863507e2e..e630bb35f 100644 --- a/test/models/teaching_period_test.rb +++ b/test/models/teaching_period_test.rb @@ -119,7 +119,7 @@ def test_create_teaching_period_with_invalid_dates assert_equal tp.start_date + 3.day + 2.week, tp.date_for_week_and_day(3, 'Thu') assert_equal tp.start_date + 4.day + 2.week, tp.date_for_week_and_day(3, 'Fri') assert_equal tp.start_date + 5.day, tp.date_for_week_and_day(1, 'Sat') - assert_equal tp.start_date - 1.day, tp.date_for_week_and_day(1, 'Sun') + assert_equal tp.start_date + 6.days, tp.date_for_week_and_day(1, 'Sun') end test 'can map week and day to date after break' do