|
29 | 29 | check_for_duplicate_discount_redemptions, |
30 | 30 | create_verified_program_course_run_enrollment, |
31 | 31 | create_verified_program_discount, |
| 32 | + establish_basket, |
32 | 33 | get_auto_apply_discounts_for_basket, |
33 | 34 | process_cybersource_payment_response, |
34 | 35 | refund_order, |
|
69 | 70 | from flexiblepricing.constants import FlexiblePriceStatus |
70 | 71 | from flexiblepricing.factories import FlexiblePriceFactory, FlexiblePriceTierFactory |
71 | 72 | from openedx.constants import EDX_ENROLLMENT_VERIFIED_MODE |
| 73 | +from openedx.factories import OpenEdxUserFactory |
72 | 74 | from users.factories import UserFactory |
73 | 75 |
|
74 | 76 | pytestmark = [pytest.mark.django_db] |
@@ -1139,3 +1141,46 @@ def test_get_auto_apply_discounts_respects_dates(user): |
1139 | 1141 |
|
1140 | 1142 | discounts = get_auto_apply_discounts_for_basket(basket.id) |
1141 | 1143 | assert discounts.count() == 0 |
| 1144 | + |
| 1145 | + |
| 1146 | +@pytest.mark.parametrize( |
| 1147 | + "no_delay", |
| 1148 | + [ |
| 1149 | + True, |
| 1150 | + False, |
| 1151 | + ], |
| 1152 | +) |
| 1153 | +def test_establish_basket_calls_create_user(mocker, no_delay): |
| 1154 | + """Test that establish_basket calls create_user if there's no edX username.""" |
| 1155 | + |
| 1156 | + if no_delay: |
| 1157 | + expected_run_mock = mocker.patch("ecommerce.api.create_user") |
| 1158 | + expected_skip_mock = mocker.patch("openedx.tasks.create_user_from_id.delay") |
| 1159 | + else: |
| 1160 | + expected_run_mock = mocker.patch("openedx.tasks.create_user_from_id.delay") |
| 1161 | + expected_skip_mock = mocker.patch("ecommerce.api.create_user") |
| 1162 | + |
| 1163 | + user = UserFactory.create(no_openedx_api_auth=True, no_openedx_user=True) |
| 1164 | + request = RequestFactory().get("/") |
| 1165 | + request.user = user |
| 1166 | + |
| 1167 | + basket = establish_basket(request, no_delay=no_delay) |
| 1168 | + |
| 1169 | + expected_run_mock.assert_called_once() |
| 1170 | + expected_run_mock.reset_mock() |
| 1171 | + expected_skip_mock.assert_not_called() |
| 1172 | + |
| 1173 | + OpenEdxUserFactory.create(user=user) |
| 1174 | + if not no_delay: |
| 1175 | + del user.openedx_user |
| 1176 | + |
| 1177 | + basket.delete() |
| 1178 | + |
| 1179 | + user.refresh_from_db() |
| 1180 | + request.user = user |
| 1181 | + |
| 1182 | + assert user.edx_username |
| 1183 | + |
| 1184 | + establish_basket(request) |
| 1185 | + |
| 1186 | + assert not expected_run_mock.called |
0 commit comments