def test_just_return_tasks(self, mock_sailthru, mock_log_error): """ Ensure that disabling Sailthru just returns """ update_email_marketing_config(enabled=False) update_user.delay(self.user.username) self.assertFalse(mock_log_error.called) self.assertFalse(mock_sailthru.called) update_user_email.delay(self.user.username, "*****@*****.**") self.assertFalse(mock_log_error.called) self.assertFalse(mock_sailthru.called) update_course_enrollment.delay(self.user.username, TEST_EMAIL, 'http://course', EnrollStatusChange.enroll, 'audit') self.assertFalse(mock_log_error.called) self.assertFalse(mock_sailthru.called) update_email_marketing_config(enabled=True)
def test_update_course_enrollment(self, mock_get_course, mock_sailthru_api_post, mock_sailthru_api_get, mock_sailthru_purchase, mock_log_error): """ test async method in task posts enrolls and purchases """ CourseMode.objects.create(course_id=self.course_id, mode_slug=CourseMode.AUDIT, mode_display_name=CourseMode.AUDIT) CourseMode.objects.create(course_id=self.course_id, mode_slug=CourseMode.VERIFIED, mode_display_name=CourseMode.VERIFIED, min_price=49, expiration_datetime=datetime.date( 2020, 3, 12)) mock_get_course.return_value = {'display_name': "Test Title"} mock_sailthru_api_post.return_value = SailthruResponse( JsonResponse({'ok': True})) mock_sailthru_api_get.return_value = SailthruResponse( JsonResponse({'vars': { 'unenrolled': ['course_u1'] }})) mock_sailthru_purchase.return_value = SailthruResponse( JsonResponse({'ok': True})) # test enroll mock_get_course.side_effect = Http404 update_course_enrollment.delay(TEST_EMAIL, self.course_url, EnrollStatusChange.enroll, 'audit', course_id=self.course_id, currency='USD', message_id='cookie_bid', unit_cost=0) mock_sailthru_purchase.assert_called_with( TEST_EMAIL, [{ 'vars': { 'course_run_id': self.course_id_string, 'mode': 'audit', 'upgrade_deadline_verified': '2020-03-12' }, 'title': 'Course ' + self.course_id_string + ' mode: audit', 'url': self.course_url, 'price': 100, 'qty': 1, 'id': self.course_id_string + '-audit' }], options={'send_template': 'enroll_template'}, incomplete=None, message_id='cookie_bid') # test unenroll update_course_enrollment.delay(TEST_EMAIL, self.course_url, EnrollStatusChange.unenroll, 'audit', course_id=self.course_id, currency='USD', message_id='cookie_bid', unit_cost=0) mock_sailthru_purchase.assert_called_with( TEST_EMAIL, [{ 'vars': { 'course_run_id': self.course_id_string, 'mode': 'audit', 'upgrade_deadline_verified': '2020-03-12' }, 'title': 'Course ' + self.course_id_string + ' mode: audit', 'url': self.course_url, 'price': 100, 'qty': 1, 'id': self.course_id_string + '-audit' }], options={'send_template': 'enroll_template'}, incomplete=None, message_id='cookie_bid') # test add upgrade to cart update_course_enrollment.delay(TEST_EMAIL, self.course_url, EnrollStatusChange.upgrade_start, 'verified', course_id=self.course_id, currency='USD', message_id='cookie_bid', unit_cost=49) mock_sailthru_purchase.assert_called_with( TEST_EMAIL, [{ 'vars': { 'course_run_id': self.course_id_string, 'mode': 'verified', 'upgrade_deadline_verified': '2020-03-12' }, 'title': 'Course ' + self.course_id_string + ' mode: verified', 'url': self.course_url, 'price': 4900, 'qty': 1, 'id': self.course_id_string + '-verified' }], options={ 'reminder_template': 'abandoned_template', 'reminder_time': '+60 minutes' }, incomplete=1, message_id='cookie_bid') # test add purchase to cart update_course_enrollment.delay(TEST_EMAIL, self.course_url, EnrollStatusChange.paid_start, 'honor', course_id=self.course_id, currency='USD', message_id='cookie_bid', unit_cost=49) mock_sailthru_purchase.assert_called_with( TEST_EMAIL, [{ 'vars': { 'course_run_id': self.course_id_string, 'mode': 'honor', 'upgrade_deadline_verified': '2020-03-12' }, 'title': 'Course ' + self.course_id_string + ' mode: honor', 'url': self.course_url, 'price': 4900, 'qty': 1, 'id': self.course_id_string + '-honor' }], options={ 'reminder_template': 'abandoned_template', 'reminder_time': '+60 minutes' }, incomplete=1, message_id='cookie_bid') # test purchase complete update_course_enrollment.delay(TEST_EMAIL, self.course_url, EnrollStatusChange.paid_complete, 'honor', course_id=self.course_id, currency='USD', message_id='cookie_bid', unit_cost=99) mock_sailthru_purchase.assert_called_with( TEST_EMAIL, [{ 'vars': { 'course_run_id': self.course_id_string, 'mode': 'honor', 'upgrade_deadline_verified': '2020-03-12' }, 'title': 'Course ' + self.course_id_string + ' mode: honor', 'url': self.course_url, 'price': 9900, 'qty': 1, 'id': self.course_id_string + '-honor' }], options={'send_template': 'purchase_template'}, incomplete=None, message_id='cookie_bid') # test upgrade complete update_course_enrollment.delay(TEST_EMAIL, self.course_url, EnrollStatusChange.upgrade_complete, 'verified', course_id=self.course_id, currency='USD', message_id='cookie_bid', unit_cost=99) mock_sailthru_purchase.assert_called_with( TEST_EMAIL, [{ 'vars': { 'course_run_id': self.course_id_string, 'mode': 'verified', 'upgrade_deadline_verified': '2020-03-12' }, 'title': 'Course ' + self.course_id_string + ' mode: verified', 'url': self.course_url, 'price': 9900, 'qty': 1, 'id': self.course_id_string + '-verified' }], options={'send_template': 'upgrade_template'}, incomplete=None, message_id='cookie_bid') # test purchase API error mock_sailthru_purchase.return_value = SailthruResponse( JsonResponse({ 'error': 100, 'errormsg': 'Got an error' })) update_course_enrollment.delay(TEST_EMAIL, self.course_url, EnrollStatusChange.upgrade_complete, 'verified', course_id=self.course_id, currency='USD', message_id='cookie_bid', unit_cost=99) self.assertTrue(mock_log_error.called) # test purchase API exception mock_sailthru_purchase.side_effect = SailthruClientError update_course_enrollment.delay(TEST_EMAIL, self.course_url, EnrollStatusChange.upgrade_complete, 'verified', course_id=self.course_id, currency='USD', message_id='cookie_bid', unit_cost=99) self.assertTrue(mock_log_error.called)
def test_update_course_enrollment( self, mock_get_course, mock_sailthru_api_post, mock_sailthru_api_get, mock_sailthru_purchase, mock_log_error ): """ test async method in task posts enrolls and purchases """ CourseMode.objects.create( course_id=self.course_id, mode_slug=CourseMode.AUDIT, mode_display_name=CourseMode.AUDIT ) CourseMode.objects.create( course_id=self.course_id, mode_slug=CourseMode.VERIFIED, mode_display_name=CourseMode.VERIFIED, min_price=49, expiration_datetime=datetime.date(2020, 3, 12), ) mock_get_course.return_value = {"display_name": "Test Title"} mock_sailthru_api_post.return_value = SailthruResponse(JsonResponse({"ok": True})) mock_sailthru_api_get.return_value = SailthruResponse(JsonResponse({"vars": {"unenrolled": ["course_u1"]}})) mock_sailthru_purchase.return_value = SailthruResponse(JsonResponse({"ok": True})) # test enroll mock_get_course.side_effect = Http404 update_course_enrollment.delay( TEST_EMAIL, self.course_url, EnrollStatusChange.enroll, "audit", course_id=self.course_id, currency="USD", message_id="cookie_bid", unit_cost=0, ) mock_sailthru_purchase.assert_called_with( TEST_EMAIL, [ { "vars": { "course_run_id": self.course_id_string, "mode": "audit", "upgrade_deadline_verified": "2020-03-12", }, "title": "Course " + self.course_id_string + " mode: audit", "url": self.course_url, "price": 100, "qty": 1, "id": self.course_id_string + "-audit", } ], options={"send_template": "enroll_template"}, incomplete=None, message_id="cookie_bid", ) # test unenroll update_course_enrollment.delay( TEST_EMAIL, self.course_url, EnrollStatusChange.unenroll, "audit", course_id=self.course_id, currency="USD", message_id="cookie_bid", unit_cost=0, ) mock_sailthru_purchase.assert_called_with( TEST_EMAIL, [ { "vars": { "course_run_id": self.course_id_string, "mode": "audit", "upgrade_deadline_verified": "2020-03-12", }, "title": "Course " + self.course_id_string + " mode: audit", "url": self.course_url, "price": 100, "qty": 1, "id": self.course_id_string + "-audit", } ], options={"send_template": "enroll_template"}, incomplete=None, message_id="cookie_bid", ) # test add upgrade to cart update_course_enrollment.delay( TEST_EMAIL, self.course_url, EnrollStatusChange.upgrade_start, "verified", course_id=self.course_id, currency="USD", message_id="cookie_bid", unit_cost=49, ) mock_sailthru_purchase.assert_called_with( TEST_EMAIL, [ { "vars": { "course_run_id": self.course_id_string, "mode": "verified", "upgrade_deadline_verified": "2020-03-12", }, "title": "Course " + self.course_id_string + " mode: verified", "url": self.course_url, "price": 4900, "qty": 1, "id": self.course_id_string + "-verified", } ], options={"reminder_template": "abandoned_template", "reminder_time": "+60 minutes"}, incomplete=1, message_id="cookie_bid", ) # test add purchase to cart update_course_enrollment.delay( TEST_EMAIL, self.course_url, EnrollStatusChange.paid_start, "honor", course_id=self.course_id, currency="USD", message_id="cookie_bid", unit_cost=49, ) mock_sailthru_purchase.assert_called_with( TEST_EMAIL, [ { "vars": { "course_run_id": self.course_id_string, "mode": "honor", "upgrade_deadline_verified": "2020-03-12", }, "title": "Course " + self.course_id_string + " mode: honor", "url": self.course_url, "price": 4900, "qty": 1, "id": self.course_id_string + "-honor", } ], options={"reminder_template": "abandoned_template", "reminder_time": "+60 minutes"}, incomplete=1, message_id="cookie_bid", ) # test purchase complete update_course_enrollment.delay( TEST_EMAIL, self.course_url, EnrollStatusChange.paid_complete, "honor", course_id=self.course_id, currency="USD", message_id="cookie_bid", unit_cost=99, ) mock_sailthru_purchase.assert_called_with( TEST_EMAIL, [ { "vars": { "course_run_id": self.course_id_string, "mode": "honor", "upgrade_deadline_verified": "2020-03-12", }, "title": "Course " + self.course_id_string + " mode: honor", "url": self.course_url, "price": 9900, "qty": 1, "id": self.course_id_string + "-honor", } ], options={"send_template": "purchase_template"}, incomplete=None, message_id="cookie_bid", ) # test upgrade complete update_course_enrollment.delay( TEST_EMAIL, self.course_url, EnrollStatusChange.upgrade_complete, "verified", course_id=self.course_id, currency="USD", message_id="cookie_bid", unit_cost=99, ) mock_sailthru_purchase.assert_called_with( TEST_EMAIL, [ { "vars": { "course_run_id": self.course_id_string, "mode": "verified", "upgrade_deadline_verified": "2020-03-12", }, "title": "Course " + self.course_id_string + " mode: verified", "url": self.course_url, "price": 9900, "qty": 1, "id": self.course_id_string + "-verified", } ], options={"send_template": "upgrade_template"}, incomplete=None, message_id="cookie_bid", ) # test purchase API error mock_sailthru_purchase.return_value = SailthruResponse(JsonResponse({"error": 100, "errormsg": "Got an error"})) update_course_enrollment.delay( TEST_EMAIL, self.course_url, EnrollStatusChange.upgrade_complete, "verified", course_id=self.course_id, currency="USD", message_id="cookie_bid", unit_cost=99, ) self.assertTrue(mock_log_error.called) # test purchase API exception mock_sailthru_purchase.side_effect = SailthruClientError update_course_enrollment.delay( TEST_EMAIL, self.course_url, EnrollStatusChange.upgrade_complete, "verified", course_id=self.course_id, currency="USD", message_id="cookie_bid", unit_cost=99, ) self.assertTrue(mock_log_error.called)
def test_update_course_enrollment( self, mock_sailthru_api_post, mock_sailthru_api_get, mock_sailthru_purchase, mock_log_error ): """ test async method in task posts enrolls and purchases """ mock_sailthru_api_post.return_value = SailthruResponse(JsonResponse({"ok": True})) mock_sailthru_api_get.return_value = SailthruResponse(JsonResponse({"vars": {"unenrolled": ["course_u1"]}})) mock_sailthru_purchase.return_value = SailthruResponse(JsonResponse({"ok": True})) # test enroll update_course_enrollment.delay( TEST_EMAIL, self.course_url, EnrollStatusChange.enroll, "audit", course_id=self.course_id_string, message_id="cookie_bid", ) mock_sailthru_purchase.assert_called_with( TEST_EMAIL, [ { "vars": {"course_run_id": self.course_id_string, "mode": "audit"}, "title": "Course " + self.course_id_string + " mode: audit", "url": self.course_url, "price": 100, "qty": 1, "id": self.course_id_string + "-audit", } ], options={"send_template": "enroll_template"}, message_id="cookie_bid", ) # test unenroll update_course_enrollment.delay( TEST_EMAIL, self.course_url, EnrollStatusChange.unenroll, "audit", course_id=self.course_id_string, message_id="cookie_bid", ) mock_sailthru_purchase.assert_called_with( TEST_EMAIL, [ { "vars": {"course_run_id": self.course_id_string, "mode": "audit"}, "title": "Course " + self.course_id_string + " mode: audit", "url": self.course_url, "price": 100, "qty": 1, "id": self.course_id_string + "-audit", } ], options={"send_template": "enroll_template"}, message_id="cookie_bid", ) # test purchase API error mock_sailthru_purchase.return_value = SailthruResponse(JsonResponse({"error": 100, "errormsg": "Got an error"})) update_course_enrollment.delay( TEST_EMAIL, self.course_url, EnrollStatusChange.enroll, "verified", course_id=self.course_id_string, message_id="cookie_bid", ) self.assertTrue(mock_log_error.called) # test purchase API exception mock_sailthru_purchase.side_effect = SailthruClientError update_course_enrollment.delay( TEST_EMAIL, self.course_url, EnrollStatusChange.enroll, "verified", course_id=self.course_id_string, message_id="cookie_bid", ) self.assertTrue(mock_log_error.called) # test unsupported event mock_sailthru_purchase.side_effect = SailthruClientError mock_log_error.reset_mock() update_course_enrollment.delay( TEST_EMAIL, self.course_url, EnrollStatusChange.upgrade_start, "verified", course_id=self.course_id_string, message_id="cookie_bid", ) self.assertFalse(mock_log_error.called) # test error updating user mock_sailthru_api_get.return_value = SailthruResponse(JsonResponse({"error": 100, "errormsg": "Got an error"})) update_course_enrollment.delay( TEST_EMAIL, self.course_url, EnrollStatusChange.enroll, "verified", course_id=self.course_id_string, message_id="cookie_bid", ) self.assertTrue(mock_log_error.called)
def test_update_course_enrollment(self, mock_sailthru_api_post, mock_sailthru_api_get, mock_sailthru_purchase, mock_log_info, mock_log_error): """ test async method in task posts enrolls and purchases """ mock_sailthru_api_post.return_value = SailthruResponse(JsonResponse({'ok': True})) mock_sailthru_api_get.return_value = SailthruResponse(JsonResponse({'vars': {'unenrolled': ['course_u1']}})) mock_sailthru_purchase.return_value = SailthruResponse(JsonResponse({'ok': True})) # test enroll update_course_enrollment.delay(TEST_EMAIL, self.course_url, EnrollStatusChange.enroll, 'audit', course_id=self.course_id_string, message_id='cookie_bid') mock_sailthru_purchase.assert_called_with(TEST_EMAIL, [{'vars': {'course_run_id': self.course_id_string, 'mode': 'audit'}, 'title': 'Course ' + self.course_id_string + ' mode: audit', 'url': self.course_url, 'price': 100, 'qty': 1, 'id': self.course_id_string + '-audit'}], options={'send_template': 'enroll_template'}, message_id='cookie_bid') # test unenroll update_course_enrollment.delay(TEST_EMAIL, self.course_url, EnrollStatusChange.unenroll, 'audit', course_id=self.course_id_string, message_id='cookie_bid') mock_sailthru_purchase.assert_called_with(TEST_EMAIL, [{'vars': {'course_run_id': self.course_id_string, 'mode': 'audit'}, 'title': 'Course ' + self.course_id_string + ' mode: audit', 'url': self.course_url, 'price': 100, 'qty': 1, 'id': self.course_id_string + '-audit'}], options={'send_template': 'enroll_template'}, message_id='cookie_bid') # test purchase API error mock_sailthru_purchase.return_value = SailthruResponse(JsonResponse({'error': 100, 'errormsg': 'Got an error'})) update_course_enrollment.delay(TEST_EMAIL, self.course_url, EnrollStatusChange.enroll, 'verified', course_id=self.course_id_string, message_id='cookie_bid') self.assertTrue(mock_log_error.called) # test purchase API exception mock_sailthru_purchase.side_effect = SailthruClientError update_course_enrollment.delay(TEST_EMAIL, self.course_url, EnrollStatusChange.enroll, 'verified', course_id=self.course_id_string, message_id='cookie_bid') self.assertTrue(mock_log_error.called) # test unsupported event mock_sailthru_purchase.side_effect = SailthruClientError mock_log_info.reset_mock() update_course_enrollment.delay(TEST_EMAIL, self.course_url, EnrollStatusChange.upgrade_start, 'verified', course_id=self.course_id_string, message_id='cookie_bid') self.assertFalse(mock_log_info.called) # test error updating user mock_sailthru_api_get.return_value = SailthruResponse(JsonResponse({'error': 100, 'errormsg': 'Got an error'})) update_course_enrollment.delay(TEST_EMAIL, self.course_url, EnrollStatusChange.enroll, 'verified', course_id=self.course_id_string, message_id='cookie_bid') self.assertTrue(mock_log_info.called)