Commit 185f35b1 by Nimisha Asthagiri

Optimize remaining tests in schedule management command TestUpgradeReminder class

parent 74307e45
...@@ -51,58 +51,46 @@ class TestUpgradeReminder(ScheduleBaseEmailTestBase): ...@@ -51,58 +51,46 @@ class TestUpgradeReminder(ScheduleBaseEmailTestBase):
expiration_datetime=datetime.datetime.now(pytz.UTC) + datetime.timedelta(days=30), expiration_datetime=datetime.datetime.now(pytz.UTC) + datetime.timedelta(days=30),
) )
@patch.object(tasks, '_upgrade_reminder_schedule_send') @ddt.data(True, False)
def test_dont_send_to_verified_learner(self, mock_schedule_send): @patch.object(tasks, 'ace')
upgrade_deadline = datetime.datetime.now(pytz.UTC) + datetime.timedelta(days=2) def test_verified_learner(self, is_verified, mock_ace):
user = UserFactory.create(id=self.tested_task.num_bins)
current_day, offset, target_day = self._get_dates()
ScheduleFactory.create( ScheduleFactory.create(
upgrade_deadline=upgrade_deadline, upgrade_deadline=target_day,
enrollment__user=UserFactory.create(id=resolvers.UPGRADE_REMINDER_NUM_BINS), enrollment__course__self_paced=True,
enrollment__course=self.course_overview, enrollment__user=user,
enrollment__mode=CourseMode.VERIFIED, enrollment__mode=CourseMode.VERIFIED if is_verified else CourseMode.AUDIT,
) )
test_datetime_str = serialize(datetime.datetime.now(pytz.UTC))
self.tested_task.delay( self.tested_task.apply(kwargs=dict(
self.site_config.site.id, target_day_str=test_datetime_str, day_offset=2, bin_num=0, site_id=self.site_config.site.id, target_day_str=serialize(target_day), day_offset=offset,
org_list=[self.course.org], bin_num=self._calculate_bin_for_user(user),
) ))
self.assertFalse(mock_schedule_send.called) self.assertEqual(mock_ace.send.called, not is_verified)
self.assertFalse(mock_schedule_send.apply_async.called)
def test_filter_out_verified_schedules(self): def test_filter_out_verified_schedules(self):
now = datetime.datetime.now(pytz.UTC) current_day, offset, target_day = self._get_dates()
future_datetime = now + datetime.timedelta(days=21)
user = UserFactory.create() user = UserFactory.create()
schedules = [ schedules = [
ScheduleFactory.create( ScheduleFactory.create(
upgrade_deadline=future_datetime, upgrade_deadline=target_day,
enrollment__user=user, enrollment__user=user,
enrollment__course__self_paced=True, enrollment__course__self_paced=True,
enrollment__course__end=future_datetime + datetime.timedelta(days=30),
enrollment__course__id=CourseLocator('edX', 'toy', 'Course{}'.format(i)), enrollment__course__id=CourseLocator('edX', 'toy', 'Course{}'.format(i)),
enrollment__mode=CourseMode.VERIFIED if i in (0, 3) else CourseMode.AUDIT, enrollment__mode=CourseMode.VERIFIED if i in (0, 3) else CourseMode.AUDIT,
) )
for i in range(5) for i in range(5)
] ]
for schedule in schedules:
CourseModeFactory(
course_id=schedule.enrollment.course.id,
mode_slug=CourseMode.VERIFIED,
expiration_datetime=future_datetime
)
test_datetime = future_datetime
test_datetime_str = serialize(test_datetime)
sent_messages = [] sent_messages = []
with patch.object(self.tested_task, 'async_send_task') as mock_schedule_send: with patch.object(self.tested_task, 'async_send_task') as mock_schedule_send:
mock_schedule_send.apply_async = lambda args, *_a, **_kw: sent_messages.append(args[1]) mock_schedule_send.apply_async = lambda args, *_a, **_kw: sent_messages.append(args[1])
self.tested_task.apply(kwargs=dict( self.tested_task.apply(kwargs=dict(
site_id=self.site_config.site.id, target_day_str=test_datetime_str, day_offset=2, site_id=self.site_config.site.id, target_day_str=serialize(target_day), day_offset=offset,
bin_num=self._calculate_bin_for_user(user), bin_num=self._calculate_bin_for_user(user),
)) ))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment