More WEI tests, > 97 % coverage

This commit is contained in:
Yohann D'ANELLO 2020-08-11 13:30:44 +02:00
parent 106e97f5df
commit 71f6436d06
4 changed files with 270 additions and 63 deletions

View File

@ -25,9 +25,7 @@ class WEISurveyInformation:
If the algorithm ran, return the prefered bus according to the survey. If the algorithm ran, return the prefered bus according to the survey.
In the other case, return None. In the other case, return None.
""" """
if not self.valid: return Bus.objects.get(pk=self.selected_bus_pk) if self.valid else None
return None
return Bus.objects.get(pk=self.selected_bus_pk)
def save(self, registration) -> None: def save(self, registration) -> None:
""" """

View File

@ -85,21 +85,21 @@ class WEIRegistrationTable(tables.Table):
) )
def render_validate(self, record): def render_validate(self, record):
if PermissionBackend.check_perm(get_current_authenticated_user(), "wei.add_weimembership", WEIMembership( hasperm = PermissionBackend.check_perm(
get_current_authenticated_user(), "wei.add_weimembership", WEIMembership(
club=record.wei, club=record.wei,
user=record.user, user=record.user,
date_start=timezone.now().date(), date_start=timezone.now().date(),
date_end=timezone.now().date(), date_end=timezone.now().date(),
fee=0, fee=0,
registration=record, registration=record,
)): )
return _("Validate") )
return format_html("<span class='no-perm'></span>") return _("Validate") if hasperm else format_html("<span class='no-perm'></span>")
def render_delete(self, record): def render_delete(self, record):
if PermissionBackend.check_perm(get_current_authenticated_user(), "wei.delete_weimembership", record): hasperm = PermissionBackend.check_perm(get_current_authenticated_user(), "wei.delete_weimembership", record)
return _("Delete") return _("Delete") if hasperm else format_html("<span class='no-perm'></span>")
return format_html("<span class='no-perm'></span>")
class Meta: class Meta:
attrs = { attrs = {

View File

@ -2,7 +2,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import subprocess import subprocess
from datetime import timedelta from datetime import timedelta, date
from django.conf import settings from django.conf import settings
from django.contrib.auth.models import User from django.contrib.auth.models import User
@ -11,9 +11,10 @@ from django.test import TestCase
from django.urls import reverse from django.urls import reverse
from django.utils import timezone from django.utils import timezone
from member.models import Membership from member.models import Membership
from note.models import NoteClub from note.models import NoteClub, SpecialTransaction
from treasury.models import SogeCredit
from ..forms import CurrentSurvey from ..forms import CurrentSurvey, WEISurveyAlgorithm, WEISurvey
from ..models import WEIClub, Bus, BusTeam, WEIRole, WEIRegistration, WEIMembership from ..models import WEIClub, Bus, BusTeam, WEIRole, WEIRegistration, WEIMembership
@ -38,6 +39,7 @@ class TestWEIList(TestCase):
response = self.client.get(reverse("wei:current_wei_detail")) response = self.client.get(reverse("wei:current_wei_detail"))
self.assertRedirects(response, reverse("wei:wei_list"), 302, 200) self.assertRedirects(response, reverse("wei:wei_list"), 302, 200)
class TestWEIRegistration(TestCase): class TestWEIRegistration(TestCase):
""" """
Test the whole WEI app Test the whole WEI app
@ -54,6 +56,7 @@ class TestWEIRegistration(TestCase):
password="admin", password="admin",
email="admin@example.com", email="admin@example.com",
) )
self.user.save()
self.client.force_login(self.user) self.client.force_login(self.user)
sess = self.client.session sess = self.client.session
sess["permission_mask"] = 42 sess["permission_mask"] = 42
@ -66,11 +69,11 @@ class TestWEIRegistration(TestCase):
parent_club_id=2, parent_club_id=2,
membership_fee_paid=12500, membership_fee_paid=12500,
membership_fee_unpaid=5500, membership_fee_unpaid=5500,
membership_start=str(self.year) + "-01-01", membership_start=date(self.year, 1, 1),
membership_end=str(self.year) + "-12-31", membership_end=date(self.year, 12, 31),
year=self.year, year=self.year,
date_start=timezone.now().date() + timedelta(days=2), date_start=timezone.now().date() + timedelta(days=2),
date_end=str(self.year) + "-12-31", date_end=date(self.year, 12, 31),
) )
NoteClub.objects.create(club=self.wei) NoteClub.objects.create(club=self.wei)
self.bus = Bus.objects.create( self.bus = Bus.objects.create(
@ -89,7 +92,7 @@ class TestWEIRegistration(TestCase):
wei_id=self.wei.id, wei_id=self.wei.id,
soge_credit=True, soge_credit=True,
caution_check=True, caution_check=True,
birth_date="2000-01-01", birth_date=date(2000, 1, 1),
gender="nonbinary", gender="nonbinary",
clothing_cut="male", clothing_cut="male",
clothing_size="XL", clothing_size="XL",
@ -99,7 +102,7 @@ class TestWEIRegistration(TestCase):
ml_events_registration=True, ml_events_registration=True,
ml_sport_registration=True, ml_sport_registration=True,
ml_art_registration=True, ml_art_registration=True,
first_year=True, first_year=False,
) )
def test_create_wei(self): def test_create_wei(self):
@ -156,7 +159,7 @@ class TestWEIRegistration(TestCase):
self.assertTrue(qs.exists()) self.assertTrue(qs.exists())
# Check that if the WEI is started, we can't update a wei # Check that if the WEI is started, we can't update a wei
self.wei.date_start = '2000-01-01' self.wei.date_start = date(2000, 1, 1)
self.wei.save() self.wei.save()
response = self.client.get(reverse("wei:wei_update", kwargs=dict(pk=self.wei.pk))) response = self.client.get(reverse("wei:wei_update", kwargs=dict(pk=self.wei.pk)))
self.assertRedirects(response, reverse("wei:wei_closed", kwargs=dict(pk=self.wei.pk)), 302, 200) self.assertRedirects(response, reverse("wei:wei_closed", kwargs=dict(pk=self.wei.pk)), 302, 200)
@ -190,10 +193,11 @@ class TestWEIRegistration(TestCase):
qs = Bus.objects.filter(name="Create Bus Test") qs = Bus.objects.filter(name="Create Bus Test")
self.assertTrue(qs.exists()) self.assertTrue(qs.exists())
bus = qs.get() bus = qs.get()
CurrentSurvey.get_algorithm_class().get_bus_information(bus).save()
self.assertRedirects(response, reverse("wei:manage_bus", kwargs=dict(pk=bus.pk)), 302, 200) self.assertRedirects(response, reverse("wei:manage_bus", kwargs=dict(pk=bus.pk)), 302, 200)
# Check that if the WEI is started, we can't create a bus # Check that if the WEI is started, we can't create a bus
self.wei.date_start = '2000-01-01' self.wei.date_start = date(2000, 1, 1)
self.wei.save() self.wei.save()
response = self.client.get(reverse("wei:add_bus", kwargs=dict(pk=self.wei.pk))) response = self.client.get(reverse("wei:add_bus", kwargs=dict(pk=self.wei.pk)))
self.assertRedirects(response, reverse("wei:wei_closed", kwargs=dict(pk=self.wei.pk)), 302, 200) self.assertRedirects(response, reverse("wei:wei_closed", kwargs=dict(pk=self.wei.pk)), 302, 200)
@ -221,7 +225,7 @@ class TestWEIRegistration(TestCase):
self.assertTrue(qs.exists()) self.assertTrue(qs.exists())
# Check that if the WEI is started, we can't update a bus # Check that if the WEI is started, we can't update a bus
self.wei.date_start = '2000-01-01' self.wei.date_start = date(2000, 1, 1)
self.wei.save() self.wei.save()
response = self.client.get(reverse("wei:update_bus", kwargs=dict(pk=self.bus.pk))) response = self.client.get(reverse("wei:update_bus", kwargs=dict(pk=self.bus.pk)))
self.assertRedirects(response, reverse("wei:wei_closed", kwargs=dict(pk=self.wei.pk)), 302, 200) self.assertRedirects(response, reverse("wei:wei_closed", kwargs=dict(pk=self.wei.pk)), 302, 200)
@ -245,7 +249,7 @@ class TestWEIRegistration(TestCase):
self.assertRedirects(response, reverse("wei:manage_bus_team", kwargs=dict(pk=team.pk)), 302, 200) self.assertRedirects(response, reverse("wei:manage_bus_team", kwargs=dict(pk=team.pk)), 302, 200)
# Check that if the WEI is started, we can't create a team # Check that if the WEI is started, we can't create a team
self.wei.date_start = '2000-01-01' self.wei.date_start = date(2000, 1, 1)
self.wei.save() self.wei.save()
response = self.client.get(reverse("wei:add_team", kwargs=dict(pk=self.bus.pk))) response = self.client.get(reverse("wei:add_team", kwargs=dict(pk=self.bus.pk)))
self.assertRedirects(response, reverse("wei:wei_closed", kwargs=dict(pk=self.wei.pk)), 302, 200) self.assertRedirects(response, reverse("wei:wei_closed", kwargs=dict(pk=self.wei.pk)), 302, 200)
@ -274,7 +278,7 @@ class TestWEIRegistration(TestCase):
self.assertTrue(qs.exists()) self.assertTrue(qs.exists())
# Check that if the WEI is started, we can't update a team # Check that if the WEI is started, we can't update a team
self.wei.date_start = '2000-01-01' self.wei.date_start = date(2000, 1, 1)
self.wei.save() self.wei.save()
response = self.client.get(reverse("wei:update_bus_team", kwargs=dict(pk=self.team.pk))) response = self.client.get(reverse("wei:update_bus_team", kwargs=dict(pk=self.team.pk)))
self.assertRedirects(response, reverse("wei:wei_closed", kwargs=dict(pk=self.wei.pk)), 302, 200) self.assertRedirects(response, reverse("wei:wei_closed", kwargs=dict(pk=self.wei.pk)), 302, 200)
@ -286,16 +290,13 @@ class TestWEIRegistration(TestCase):
response = self.client.get(reverse("wei:wei_register_2A", kwargs=dict(wei_pk=self.wei.pk))) response = self.client.get(reverse("wei:wei_register_2A", kwargs=dict(wei_pk=self.wei.pk)))
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
response = self.client.get(reverse("wei:wei_register_2A_myself", kwargs=dict(wei_pk=self.wei.pk)))
self.assertEqual(response.status_code, 200)
user = User.objects.create(username="toto", email="toto@example.com") user = User.objects.create(username="toto", email="toto@example.com")
# Try with an invalid form # Try with an invalid form
response = self.client.post(reverse("wei:wei_register_2A", kwargs=dict(wei_pk=self.wei.pk)), dict( response = self.client.post(reverse("wei:wei_register_2A", kwargs=dict(wei_pk=self.wei.pk)), dict(
user=user.id, user=user.id,
soge_credit=True, soge_credit=True,
birth_date='2000-01-01', birth_date=date(2000, 1, 1),
gender='nonbinary', gender='nonbinary',
clothing_cut='female', clothing_cut='female',
clothing_size='XS', clothing_size='XS',
@ -312,7 +313,7 @@ class TestWEIRegistration(TestCase):
response = self.client.post(reverse("wei:wei_register_2A", kwargs=dict(wei_pk=self.wei.pk)), dict( response = self.client.post(reverse("wei:wei_register_2A", kwargs=dict(wei_pk=self.wei.pk)), dict(
user=user.id, user=user.id,
soge_credit=True, soge_credit=True,
birth_date='2000-01-01', birth_date=date(2000, 1, 1),
gender='nonbinary', gender='nonbinary',
clothing_cut='female', clothing_cut='female',
clothing_size='XS', clothing_size='XS',
@ -331,7 +332,7 @@ class TestWEIRegistration(TestCase):
response = self.client.post(reverse("wei:wei_register_2A", kwargs=dict(wei_pk=self.wei.pk)), dict( response = self.client.post(reverse("wei:wei_register_2A", kwargs=dict(wei_pk=self.wei.pk)), dict(
user=user.id, user=user.id,
soge_credit=True, soge_credit=True,
birth_date='2000-01-01', birth_date=date(2000, 1, 1),
gender='nonbinary', gender='nonbinary',
clothing_cut='female', clothing_cut='female',
clothing_size='XS', clothing_size='XS',
@ -345,8 +346,22 @@ class TestWEIRegistration(TestCase):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertTrue("This user is already registered to this WEI." in str(response.context["form"].errors)) self.assertTrue("This user is already registered to this WEI." in str(response.context["form"].errors))
# Test the render of the page to register ourself if we have already opened a Société générale account
SogeCredit.objects.create(user=self.user, credit_transaction=SpecialTransaction.objects.create(
source_id=4, # Bank transfer
destination=self.user.note,
quantity=1,
amount=0,
reason="Test",
first_name="toto",
last_name="toto",
bank="Société générale",
))
response = self.client.get(reverse("wei:wei_register_2A_myself", kwargs=dict(wei_pk=self.wei.pk)))
self.assertEqual(response.status_code, 200)
# Check that if the WEI is started, we can't register anyone # Check that if the WEI is started, we can't register anyone
self.wei.date_start = '2000-01-01' self.wei.date_start = date(2000, 1, 1)
self.wei.save() self.wei.save()
response = self.client.get(reverse("wei:wei_register_2A", kwargs=dict(wei_pk=self.wei.pk))) response = self.client.get(reverse("wei:wei_register_2A", kwargs=dict(wei_pk=self.wei.pk)))
self.assertRedirects(response, reverse("wei:wei_closed", kwargs=dict(pk=self.wei.pk)), 302, 200) self.assertRedirects(response, reverse("wei:wei_closed", kwargs=dict(pk=self.wei.pk)), 302, 200)
@ -365,7 +380,7 @@ class TestWEIRegistration(TestCase):
response = self.client.post(reverse("wei:wei_register_1A", kwargs=dict(wei_pk=self.wei.pk)), dict( response = self.client.post(reverse("wei:wei_register_1A", kwargs=dict(wei_pk=self.wei.pk)), dict(
user=user.id, user=user.id,
soge_credit=True, soge_credit=True,
birth_date='2000-01-01', birth_date=date(2000, 1, 1),
gender='nonbinary', gender='nonbinary',
clothing_cut='female', clothing_cut='female',
clothing_size='XS', clothing_size='XS',
@ -392,12 +407,15 @@ class TestWEIRegistration(TestCase):
self.assertIsNotNone(getattr(survey.information, "word" + str(i)), "Survey page #" + str(i) + " failed") self.assertIsNotNone(getattr(survey.information, "word" + str(i)), "Survey page #" + str(i) + " failed")
survey = CurrentSurvey(registration) survey = CurrentSurvey(registration)
self.assertTrue(survey.is_complete()) self.assertTrue(survey.is_complete())
survey.select_bus(self.bus)
survey.save()
self.assertIsNotNone(survey.information.get_selected_bus())
# Check that the user can't be registered twice # Check that the user can't be registered twice
response = self.client.post(reverse("wei:wei_register_1A", kwargs=dict(wei_pk=self.wei.pk)), dict( response = self.client.post(reverse("wei:wei_register_1A", kwargs=dict(wei_pk=self.wei.pk)), dict(
user=user.id, user=user.id,
soge_credit=True, soge_credit=True,
birth_date='2000-01-01', birth_date=date(2000, 1, 1),
gender='nonbinary', gender='nonbinary',
clothing_cut='female', clothing_cut='female',
clothing_size='XS', clothing_size='XS',
@ -423,7 +441,7 @@ class TestWEIRegistration(TestCase):
response = self.client.post(reverse("wei:wei_register_1A", kwargs=dict(wei_pk=second_wei.pk)), dict( response = self.client.post(reverse("wei:wei_register_1A", kwargs=dict(wei_pk=second_wei.pk)), dict(
user=user.id, user=user.id,
soge_credit=True, soge_credit=True,
birth_date='2000-01-01', birth_date=date(2000, 1, 1),
gender='nonbinary', gender='nonbinary',
clothing_cut='female', clothing_cut='female',
clothing_size='XS', clothing_size='XS',
@ -439,11 +457,14 @@ class TestWEIRegistration(TestCase):
in str(response.context["form"].errors)) in str(response.context["form"].errors))
# Check that if the WEI is started, we can't register anyone # Check that if the WEI is started, we can't register anyone
self.wei.date_start = '2000-01-01' self.wei.date_start = date(2000, 1, 1)
self.wei.save() self.wei.save()
response = self.client.get(reverse("wei:wei_register_1A", kwargs=dict(wei_pk=self.wei.pk))) response = self.client.get(reverse("wei:wei_register_1A", kwargs=dict(wei_pk=self.wei.pk)))
self.assertRedirects(response, reverse("wei:wei_closed", kwargs=dict(pk=self.wei.pk)), 302, 200) self.assertRedirects(response, reverse("wei:wei_closed", kwargs=dict(pk=self.wei.pk)), 302, 200)
response = self.client.get(reverse("wei:wei_survey", kwargs=dict(pk=registration.pk)))
self.assertRedirects(response, reverse("wei:wei_closed", kwargs=dict(pk=self.wei.pk)), 302, 200)
def test_wei_survey_ended(self): def test_wei_survey_ended(self):
""" """
Test display the end page of a survey. Test display the end page of a survey.
@ -455,9 +476,6 @@ class TestWEIRegistration(TestCase):
""" """
Test update a registration. Test update a registration.
""" """
response = self.client.get(reverse("wei:wei_update_registration", kwargs=dict(pk=self.registration.pk)))
self.assertEqual(response.status_code, 200)
self.registration.information = dict( self.registration.information = dict(
preferred_bus_pk=[], preferred_bus_pk=[],
preferred_team_pk=[], preferred_team_pk=[],
@ -465,6 +483,9 @@ class TestWEIRegistration(TestCase):
) )
self.registration.save() self.registration.save()
response = self.client.get(reverse("wei:wei_update_registration", kwargs=dict(pk=self.registration.pk)))
self.assertEqual(response.status_code, 200)
response = self.client.post( response = self.client.post(
reverse("wei:wei_update_registration", kwargs=dict(pk=self.registration.pk)), reverse("wei:wei_update_registration", kwargs=dict(pk=self.registration.pk)),
dict( dict(
@ -487,16 +508,95 @@ class TestWEIRegistration(TestCase):
self.assertTrue(qs.exists()) self.assertTrue(qs.exists())
self.assertRedirects(response, reverse("wei:validate_registration", kwargs=dict(pk=qs.get().pk)), 302, 200) self.assertRedirects(response, reverse("wei:validate_registration", kwargs=dict(pk=qs.get().pk)), 302, 200)
# Check the page when the registration is already validated
membership = WEIMembership(
user=self.user,
club=self.wei,
registration=self.registration,
bus=self.bus,
team=self.team,
)
membership._soge = True
membership._force_renew_parent = True
membership.save()
soge_credit = SogeCredit.objects.get(user=self.user)
soge_credit.credit_transaction = SpecialTransaction.objects.create(
source_id=4, # Bank transfer
destination=self.user.note,
quantity=1,
amount=0,
reason="Test",
first_name="toto",
last_name="toto",
bank="Société générale",
)
soge_credit.save()
sess = self.client.session
sess["permission_mask"] = 0
sess.save()
response = self.client.get(reverse("wei:wei_update_registration", kwargs=dict(pk=self.registration.pk)))
self.assertEqual(response.status_code, 200)
sess["permission_mask"] = 42
sess.save()
response = self.client.post(
reverse("wei:wei_update_registration", kwargs=dict(pk=self.registration.pk)),
dict(
user=self.user.id,
soge_credit=False,
birth_date='2015-01-01',
gender='male',
clothing_cut='female',
clothing_size='L',
health_issues='I am really a bot',
emergency_contact_name='Note Kfet 2020',
emergency_contact_phone='+33600000000',
bus=[self.bus.id],
team=[self.team.id],
roles=[role.id for role in WEIRole.objects.filter(name="Adhérent WEI").all()],
information_json=self.registration.information_json,
)
)
qs = WEIRegistration.objects.filter(user_id=self.user.id, clothing_size="L")
self.assertTrue(qs.exists())
self.assertRedirects(response, reverse("wei:validate_registration", kwargs=dict(pk=qs.get().pk)), 302, 200)
# Test invalid form
response = self.client.post(
reverse("wei:wei_update_registration", kwargs=dict(pk=self.registration.pk)),
dict(
user=self.user.id,
soge_credit=False,
birth_date='2015-01-01',
gender='male',
clothing_cut='female',
clothing_size='L',
health_issues='I am really a bot',
emergency_contact_name='Note Kfet 2020',
emergency_contact_phone='+33600000000',
bus=[],
team=[],
roles=[],
information_json=self.registration.information_json,
)
)
self.assertFalse(response.context["membership_form"].is_valid())
# Check that if the WEI is started, we can't update a registration # Check that if the WEI is started, we can't update a registration
self.wei.date_start = '2000-01-01' self.wei.date_start = date(2000, 1, 1)
self.wei.update_membership_dates()
self.wei.save() self.wei.save()
response = self.client.get(reverse("wei:validate_registration", kwargs=dict(pk=self.registration.pk))) response = self.client.get(reverse("wei:wei_update_registration", kwargs=dict(pk=self.registration.pk)))
self.assertRedirects(response, reverse("wei:wei_closed", kwargs=dict(pk=self.wei.pk)), 302, 200) self.assertRedirects(response, reverse("wei:wei_closed", kwargs=dict(pk=self.wei.pk)), 302, 200)
def test_delete_registration(self): def test_delete_registration(self):
""" """
Test delete a WEI registration. Test delete a WEI registration.
""" """
response = self.client.get(reverse("wei:wei_delete_registration", kwargs=dict(pk=self.registration.pk)))
self.assertEqual(response.status_code, 200)
response = self.client.delete(reverse("wei:wei_delete_registration", kwargs=dict(pk=self.registration.pk))) response = self.client.delete(reverse("wei:wei_delete_registration", kwargs=dict(pk=self.registration.pk)))
self.assertRedirects(response, reverse("wei:wei_detail", kwargs=dict(pk=self.wei.pk)), 302, 200) self.assertRedirects(response, reverse("wei:wei_detail", kwargs=dict(pk=self.wei.pk)), 302, 200)
@ -507,6 +607,32 @@ class TestWEIRegistration(TestCase):
response = self.client.get(reverse("wei:validate_registration", kwargs=dict(pk=self.registration.pk))) response = self.client.get(reverse("wei:validate_registration", kwargs=dict(pk=self.registration.pk)))
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.registration.first_year = True
self.registration.save()
response = self.client.get(reverse("wei:validate_registration", kwargs=dict(pk=self.registration.pk)))
self.assertEqual(response.status_code, 200)
self.registration.first_year = False
self.registration.save()
# Check that a team must belong to the bus
second_bus = Bus.objects.create(wei=self.wei, name="Second bus")
second_team = BusTeam.objects.create(bus=second_bus, name="Second team", color=42)
response = self.client.post(reverse("wei:validate_registration", kwargs=dict(pk=self.registration.pk)), dict(
roles=[WEIRole.objects.get(name="GC WEI").id],
bus=self.bus.pk,
team=second_team.pk,
credit_type=4, # Bank transfer
credit_amount=420,
last_name="admin",
first_name="admin",
bank="Société générale",
))
self.assertEqual(response.status_code, 200)
self.assertFalse(response.context["form"].is_valid())
self.assertTrue("This team doesn&#39;t belong to the given bus." in str(response.context["form"].errors))
response = self.client.post(reverse("wei:validate_registration", kwargs=dict(pk=self.registration.pk)), dict( response = self.client.post(reverse("wei:validate_registration", kwargs=dict(pk=self.registration.pk)), dict(
roles=[WEIRole.objects.get(name="GC WEI").id], roles=[WEIRole.objects.get(name="GC WEI").id],
bus=self.bus.pk, bus=self.bus.pk,
@ -543,6 +669,12 @@ class TestWEIRegistration(TestCase):
self.assertFalse(kfet_membership.transaction.valid) self.assertFalse(kfet_membership.transaction.valid)
self.assertFalse(bde_membership.transaction.valid) self.assertFalse(bde_membership.transaction.valid)
# Check that if the WEI is started, we can't update a wei
self.wei.date_start = date(2000, 1, 1)
self.wei.save()
response = self.client.get(reverse("wei:validate_registration", kwargs=dict(pk=self.registration.pk)))
self.assertRedirects(response, reverse("wei:wei_closed", kwargs=dict(pk=self.wei.pk)), 302, 200)
def test_registrations_list(self): def test_registrations_list(self):
""" """
Test display the registration list, with or without a research Test display the registration list, with or without a research
@ -579,9 +711,7 @@ class TestWEIRegistration(TestCase):
""" """
Test display the membership list as a PDF file Test display the membership list as a PDF file
""" """
if not self.is_latex_installed(): if self.is_latex_installed():
return
response = self.client.get(reverse("wei:wei_memberships_pdf", kwargs=dict(wei_pk=self.wei.pk))) response = self.client.get(reverse("wei:wei_memberships_pdf", kwargs=dict(wei_pk=self.wei.pk)))
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(response["content-type"], "application/pdf") self.assertEqual(response["content-type"], "application/pdf")
@ -590,9 +720,7 @@ class TestWEIRegistration(TestCase):
""" """
Test display the membership list of a bus as a PDF file Test display the membership list of a bus as a PDF file
""" """
if not self.is_latex_installed(): if self.is_latex_installed():
return
response = self.client.get(reverse("wei:wei_memberships_bus_pdf", kwargs=dict(wei_pk=self.wei.pk, response = self.client.get(reverse("wei:wei_memberships_bus_pdf", kwargs=dict(wei_pk=self.wei.pk,
bus_pk=self.bus.pk))) bus_pk=self.bus.pk)))
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
@ -602,11 +730,95 @@ class TestWEIRegistration(TestCase):
""" """
Test display the membership list of a bus team as a PDF file Test display the membership list of a bus team as a PDF file
""" """
if not self.is_latex_installed(): if self.is_latex_installed():
return
response = self.client.get(reverse("wei:wei_memberships_team_pdf", kwargs=dict(wei_pk=self.wei.pk, response = self.client.get(reverse("wei:wei_memberships_team_pdf", kwargs=dict(wei_pk=self.wei.pk,
bus_pk=self.bus.pk, bus_pk=self.bus.pk,
team_pk=self.team.pk))) team_pk=self.team.pk)))
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(response["content-type"], "application/pdf") self.assertEqual(response["content-type"], "application/pdf")
class TestDefaultWEISurvey(TestCase):
"""
Doesn't test anything, just cover the default Survey classes.
"""
def check_not_implemented(self, fun: callable, *args, **kwargs):
self.assertRaises(NotImplementedError, fun, *args, **kwargs)
def test_survey_classes(self):
WEISurveyAlgorithm.get_bus_information_class()
self.check_not_implemented(WEISurveyAlgorithm.get_survey_class)
self.check_not_implemented(WEISurveyAlgorithm.get_registrations)
self.check_not_implemented(WEISurveyAlgorithm.get_buses)
self.check_not_implemented(WEISurveyAlgorithm().run_algorithm)
self.check_not_implemented(WEISurvey, registration=None)
self.check_not_implemented(WEISurvey.get_wei)
self.check_not_implemented(WEISurvey.get_survey_information_class)
self.check_not_implemented(WEISurvey.get_algorithm_class)
self.check_not_implemented(WEISurvey.get_form_class, None)
self.check_not_implemented(WEISurvey.form_valid, None, None)
self.check_not_implemented(WEISurvey.is_complete, None)
# noinspection PyTypeChecker
WEISurvey.update_form(None, None)
self.assertEqual(CurrentSurvey.get_algorithm_class().get_survey_class(), CurrentSurvey)
self.assertEqual(CurrentSurvey.get_year(), 2020)
class TestWEISurveyAlgorithm(TestCase):
"""
Run the WEI Algorithm.
TODO: Improve this test with some test data once the algorithm will be implemented.
"""
fixtures = ("initial",)
def setUp(self) -> None:
self.year = timezone.now().year
self.wei = WEIClub.objects.create(
name="Test WEI",
email="gc.wei@example.com",
parent_club_id=2,
membership_fee_paid=12500,
membership_fee_unpaid=5500,
membership_start=date(self.year, 1, 1),
membership_end=date(self.year, 12, 31),
year=self.year,
date_start=timezone.now().date() + timedelta(days=2),
date_end=date(self.year, 12, 31),
)
NoteClub.objects.create(club=self.wei)
self.bus = Bus.objects.create(
name="Test Bus",
wei=self.wei,
description="Test Bus",
)
self.team = BusTeam.objects.create(
name="Test Team",
bus=self.bus,
color=0xFFFFFF,
description="Test Team",
)
self.user = User.objects.create(username="toto")
self.registration = WEIRegistration.objects.create(
user_id=self.user.id,
wei_id=self.wei.id,
soge_credit=True,
caution_check=True,
birth_date=date(2000, 1, 1),
gender="nonbinary",
clothing_cut="male",
clothing_size="XL",
health_issues="I am a bot",
emergency_contact_name="Pikachu",
emergency_contact_phone="+33123456789",
ml_events_registration=True,
ml_sport_registration=True,
ml_art_registration=True,
first_year=True,
)
CurrentSurvey(self.registration).save()
def test_survey_algorithm(self):
CurrentSurvey.get_algorithm_class()().run_algorithm()

View File

@ -824,10 +824,7 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Crea
# Force the membership of the clubs BDE and Kfet # Force the membership of the clubs BDE and Kfet
membership._force_renew_parent = True membership._force_renew_parent = True
if user.profile.paid: fee = club.membership_fee_paid if user.profile.paid else club.membership_fee_unpaid
fee = club.membership_fee_paid
else:
fee = club.membership_fee_unpaid
kfet = club.parent_club kfet = club.parent_club
bde = kfet.parent_club bde = kfet.parent_club