diff --git a/openedx/core/djangoapps/schedules/management/commands/tests/test_send_recurring_nudge.py b/openedx/core/djangoapps/schedules/management/commands/tests/test_send_recurring_nudge.py index b63273fec7..e1c033ad48 100644 --- a/openedx/core/djangoapps/schedules/management/commands/tests/test_send_recurring_nudge.py +++ b/openedx/core/djangoapps/schedules/management/commands/tests/test_send_recurring_nudge.py @@ -57,30 +57,6 @@ class TestSendRecurringNudge(ScheduleBaseEmailTestBase): enqueue_config = 'enqueue_recurring_nudge' expected_offsets = (-3, -10) - @patch.object(tested_task, 'async_send_task') - def test_send_after_course_end(self, mock_schedule_send): - user1 = UserFactory.create(id=resolvers.RECURRING_NUDGE_NUM_BINS) - - schedule_start = datetime.datetime(2017, 8, 3, 20, 34, 30, tzinfo=pytz.UTC) - day_command_is_run = schedule_start + datetime.timedelta(days=3) - schedule = ScheduleFactory.create( - start=schedule_start, - enrollment__user=user1, - ) - - schedule.enrollment.course.start = schedule_start - datetime.timedelta(days=30) - schedule.enrollment.course.end = day_command_is_run - datetime.timedelta(days=1) - schedule.enrollment.course.save() - - test_datetime = datetime.datetime(2017, 8, 3, 20, tzinfo=pytz.UTC) - test_datetime_str = serialize(test_datetime) - - self.tested_task.apply(kwargs=dict( - site_id=self.site_config.site.id, target_day_str=test_datetime_str, day_offset=-3, bin_num=0, - )) - - self.assertFalse(mock_schedule_send.apply_async.called) - @patch.object(tasks, 'ace') @patch.object(tested_task, 'async_send_task') def test_multiple_enrollments(self, mock_schedule_send, mock_ace): diff --git a/openedx/core/djangoapps/schedules/management/commands/tests/tools.py b/openedx/core/djangoapps/schedules/management/commands/tests/tools.py index 111baaf94d..a8b1d31879 100644 --- a/openedx/core/djangoapps/schedules/management/commands/tests/tools.py +++ b/openedx/core/djangoapps/schedules/management/commands/tests/tools.py @@ -264,3 +264,30 @@ class ScheduleBaseEmailTestBase(SharedModuleStoreTestCase): self.assertEqual(mock_schedule_send.apply_async.call_count, expected_message_count) self.assertFalse(mock_ace.send.called) + + @ddt.data(True, False) + def test_course_end(self, has_course_ended): + user1 = UserFactory.create(id=self.tested_task.num_bins) + current_day, offset, target_day = self._get_dates() + + schedule = ScheduleFactory.create( + start=target_day, + upgrade_deadline=target_day, + enrollment__course__self_paced=True, + enrollment__user=user1, + ) + + schedule.enrollment.course.start = current_day - datetime.timedelta(days=30) + end_date_offset = -2 if has_course_ended else 2 + schedule.enrollment.course.end = current_day + datetime.timedelta(days=end_date_offset) + schedule.enrollment.course.save() + + with patch.object(self.tested_task, 'async_send_task') as mock_schedule_send: + self.tested_task.apply(kwargs=dict( + site_id=self.site_config.site.id, target_day_str=serialize(target_day), day_offset=offset, bin_num=0, + )) + + if has_course_ended: + self.assertFalse(mock_schedule_send.apply_async.called) + else: + self.assertTrue(mock_schedule_send.apply_async.called)