|
9 | 9 |
|
10 | 10 | import ddt |
11 | 11 | from django.conf import settings |
| 12 | +from django.test import TestCase |
| 13 | +from edx_ace.recipient import Recipient |
12 | 14 |
|
| 15 | +from common.djangoapps.student.tests.factories import UserFactory |
| 16 | +from openedx.core.djangoapps.schedules.message_types import InstructorLedCourseUpdate |
13 | 17 | from openedx.core.djangoapps.schedules.resolvers import DEFAULT_NUM_BINS |
14 | | -from openedx.core.djangoapps.schedules.tasks import BinnedScheduleMessageBaseTask |
| 18 | +from openedx.core.djangoapps.schedules.tasks import BinnedScheduleMessageBaseTask, _schedule_send |
15 | 19 | from openedx.core.djangoapps.schedules.tests.factories import ScheduleConfigFactory |
16 | 20 | from openedx.core.djangoapps.site_configuration.tests.factories import SiteFactory |
17 | 21 | from openedx.core.djangolib.testing.utils import CacheIsolationTestCase, skip_unless_lms |
@@ -73,3 +77,44 @@ def test_is_enqueue_enabled(self, enabled): |
73 | 77 | self.schedule_config.enqueue_recurring_nudge = enabled |
74 | 78 | self.schedule_config.save() |
75 | 79 | assert self.basetask.is_enqueue_enabled(self.site) == enabled |
| 80 | + |
| 81 | + |
| 82 | +@ddt.ddt |
| 83 | +@skip_unless_lms |
| 84 | +class TestScheduleSendForDisabledUser(TestCase): |
| 85 | + """ |
| 86 | + Tests email send for disabled users |
| 87 | + """ |
| 88 | + |
| 89 | + def setUp(self): |
| 90 | + super().setUp() |
| 91 | + self.user = UserFactory() |
| 92 | + self.site = SiteFactory.create() |
| 93 | + ScheduleConfigFactory.create( |
| 94 | + site=self.site, |
| 95 | + enqueue_recurring_nudge=True, deliver_recurring_nudge=True, |
| 96 | + enqueue_upgrade_reminder=True, deliver_upgrade_reminder=True, |
| 97 | + enqueue_course_update=True, deliver_course_update=True, |
| 98 | + ) |
| 99 | + |
| 100 | + @ddt.data(True, False) |
| 101 | + @patch('openedx.core.djangoapps.schedules.tasks.ace.send') |
| 102 | + def test_email_not_sent_to_disable_users(self, user_enabled, mock_send): |
| 103 | + """ |
| 104 | + Tests email not send for disabled users |
| 105 | + """ |
| 106 | + if user_enabled: |
| 107 | + self.user.set_password("12345678") |
| 108 | + else: |
| 109 | + self.user.set_unusable_password() |
| 110 | + self.user.save() |
| 111 | + msg = InstructorLedCourseUpdate().personalize( |
| 112 | + Recipient( |
| 113 | + self.user.id, |
| 114 | + self.user.email, |
| 115 | + ), |
| 116 | + "en", |
| 117 | + {}, |
| 118 | + ) |
| 119 | + _schedule_send(str(msg), self.site.id, "deliver_course_update", "Course Update") |
| 120 | + assert mock_send.called is user_enabled |
0 commit comments