From 9c0d89de833b31b076cad1b5228a06d19c281ced Mon Sep 17 00:00:00 2001 From: imperosol Date: Mon, 24 Feb 2025 07:13:19 +0100 Subject: [PATCH] Give the student role when creating a new user subscription --- subscription/forms.py | 7 +++++++ subscription/tests/test_new_susbcription.py | 22 +++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/subscription/forms.py b/subscription/forms.py index ab74adcb..b1d00223 100644 --- a/subscription/forms.py +++ b/subscription/forms.py @@ -100,6 +100,13 @@ class SubscriptionNewUserForm(SubscriptionForm): email=self.cleaned_data.get("email"), date_of_birth=self.cleaned_data.get("date_of_birth"), ) + if self.cleaned_data.get("subscription_type") in [ + "un-semestre", + "deux-semestres", + "cursus-tronc-commun", + "cursus-branche", + ]: + member.role = "STUDENT" member.generate_username() member.set_password(secrets.token_urlsafe(nbytes=10)) self.instance.member = member diff --git a/subscription/tests/test_new_susbcription.py b/subscription/tests/test_new_susbcription.py index 8fd5e7c4..fd23d9dd 100644 --- a/subscription/tests/test_new_susbcription.py +++ b/subscription/tests/test_new_susbcription.py @@ -89,6 +89,28 @@ def test_form_new_user(settings: SettingsWrapper): form.save() +@pytest.mark.django_db +@pytest.mark.parametrize( + "subscription_type", + ["un-semestre", "deux-semestres", "cursus-tronc-commun", "cursus-branche"], +) +def test_form_set_new_user_as_student(settings: SettingsWrapper, subscription_type): + """Test that new users have the student role by default.""" + data = { + "first_name": "John", + "last_name": "Doe", + "email": "jdoe@utbm.fr", + "date_of_birth": localdate() - relativedelta(years=18), + "subscription_type": subscription_type, + "location": settings.SITH_SUBSCRIPTION_LOCATIONS[0][0], + "payment_method": settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][0], + } + form = SubscriptionNewUserForm(data) + assert form.is_valid() + form.clean() + assert form.instance.member.role == "STUDENT" + + @pytest.mark.django_db @pytest.mark.parametrize( ("user_factory", "status_code"),