示例#1
0
    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)
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    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)