Merged in fix/less-fragile-checkout (pull request #309)
fix: do not just take the first course session on checkout Approved-by: Christian Cueni
This commit is contained in:
commit
6a7caa4430
|
|
@ -1,3 +1,4 @@
|
|||
# Course IDs
|
||||
COURSE_TEST_ID = -1
|
||||
COURSE_UK = -3
|
||||
COURSE_VERSICHERUNGSVERMITTLERIN_ID = -4
|
||||
|
|
|
|||
|
|
@ -88,9 +88,10 @@ def create_user(username: str) -> User:
|
|||
|
||||
|
||||
def create_course_session(
|
||||
course: Course, title: str, generation: str = "2023"
|
||||
course: Course, title: str, generation: str = "2023", _id=None
|
||||
) -> CourseSession:
|
||||
return CourseSession.objects.create(
|
||||
id=_id,
|
||||
course=course,
|
||||
title=title,
|
||||
import_id=title,
|
||||
|
|
|
|||
|
|
@ -35,7 +35,13 @@ class DatatransWebhookTestCase(APITestCase):
|
|||
_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
||||
)
|
||||
|
||||
create_course_session(course=course, title="Versicherungsvermittler/-in DE")
|
||||
create_course_session(
|
||||
course=course,
|
||||
title="Versicherungsvermittler/-in DE",
|
||||
# MUST be 1 -> this is the correct
|
||||
# VV DE course session ID in production
|
||||
_id=1,
|
||||
)
|
||||
|
||||
self.user = User.objects.create_user(
|
||||
username="testuser",
|
||||
|
|
@ -145,14 +151,21 @@ class DatatransWebhookTestCase(APITestCase):
|
|||
CourseSessionUser.objects.count(),
|
||||
)
|
||||
|
||||
csu = CourseSessionUser.objects.first()
|
||||
|
||||
self.assertEqual(
|
||||
self.user,
|
||||
CourseSessionUser.objects.first().user,
|
||||
csu.user,
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
1,
|
||||
csu.course_session.id,
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
||||
CourseSessionUser.objects.first().course_session.course.id,
|
||||
csu.course_session.course.id,
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
|
|
|
|||
|
|
@ -8,11 +8,6 @@ from rest_framework.response import Response
|
|||
from sentry_sdk import capture_exception
|
||||
|
||||
from vbv_lernwelt.core.models import Country, User
|
||||
from vbv_lernwelt.course.consts import (
|
||||
COURSE_VERSICHERUNGSVERMITTLERIN_FR_ID,
|
||||
COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
||||
COURSE_VERSICHERUNGSVERMITTLERIN_IT_ID,
|
||||
)
|
||||
from vbv_lernwelt.course.models import CourseSession, CourseSessionUser
|
||||
from vbv_lernwelt.notify.email.email_services import EmailTemplate, send_email
|
||||
from vbv_lernwelt.shop.const import (
|
||||
|
|
@ -37,10 +32,11 @@ from vbv_lernwelt.shop.services import (
|
|||
|
||||
logger = structlog.get_logger(__name__)
|
||||
|
||||
PRODUCT_SKU_TO_COURSE = {
|
||||
VV_DE_PRODUCT_SKU: COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
||||
VV_FR_PRODUCT_SKU: COURSE_VERSICHERUNGSVERMITTLERIN_FR_ID,
|
||||
VV_IT_PRODUCT_SKU: COURSE_VERSICHERUNGSVERMITTLERIN_IT_ID,
|
||||
PRODUCT_SKU_TO_COURSE_SESSION_ID = {
|
||||
# CourseSession IDs PROD/STAGING
|
||||
VV_DE_PRODUCT_SKU: 1, # vv-de
|
||||
VV_FR_PRODUCT_SKU: 2, # vv-fr
|
||||
VV_IT_PRODUCT_SKU: 3, # vv-it
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -229,9 +225,9 @@ def create_vv_course_session_user(checkout_info: CheckoutInformation):
|
|||
_, created = CourseSessionUser.objects.get_or_create(
|
||||
user=checkout_info.user,
|
||||
role=CourseSessionUser.Role.MEMBER,
|
||||
course_session=CourseSession.objects.filter(
|
||||
course_id=PRODUCT_SKU_TO_COURSE[checkout_info.product_sku]
|
||||
).first(),
|
||||
course_session=CourseSession.objects.get(
|
||||
id=PRODUCT_SKU_TO_COURSE_SESSION_ID[checkout_info.product_sku]
|
||||
),
|
||||
)
|
||||
|
||||
if created:
|
||||
|
|
|
|||
Loading…
Reference in New Issue