chore(members/views): add missing tests, remove dead code

pull/174/head
Christian Merten 4 months ago
parent 5efdbcb63c
commit 65790d3b4d
Signed by: christian.merten
GPG Key ID: D953D69721B948B3

@ -33,6 +33,7 @@ from members.admin import MemberWaitingListAdmin, MemberAdmin, FreizeitAdmin, Me
InvitationToGroupAdmin, AgeFilter, InvitedToGroupFilter InvitationToGroupAdmin, AgeFilter, InvitedToGroupFilter
from members.pdf import fill_pdf_form, render_tex, media_path, serve_pdf, find_template, merge_pdfs, render_docx, pdf_add_attachments, scale_pdf_page_to_a4, scale_pdf_to_a4 from members.pdf import fill_pdf_form, render_tex, media_path, serve_pdf, find_template, merge_pdfs, render_docx, pdf_add_attachments, scale_pdf_page_to_a4, scale_pdf_to_a4
from members.excel import generate_ljp_vbk from members.excel import generate_ljp_vbk
from members.views import render_register_success, render_register_failed
from mailer.models import EmailAddress, Message from mailer.models import EmailAddress, Message
from finance.models import Statement, Bill from finance.models import Statement, Bill
@ -1596,6 +1597,7 @@ class RegisterViewTestCase(BasicMemberTestCase):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.factory = RequestFactory()
RegistrationPassword.objects.create(group=self.alp, RegistrationPassword.objects.create(group=self.alp,
password=RegisterViewTestCase.REGISTRATION_PASSWORD) password=RegisterViewTestCase.REGISTRATION_PASSWORD)
@ -1648,6 +1650,27 @@ class RegisterViewTestCase(BasicMemberTestCase):
self.assertEqual(response.status_code, HTTPStatus.OK) self.assertEqual(response.status_code, HTTPStatus.OK)
self.assertContains(response, _("The entered password is wrong.")) self.assertContains(response, _("The entered password is wrong."))
def test_register_no_group(self):
# Test when group is None, render_register_failed is called with reason
url = reverse('members:register')
response = self.client.post(url, data={
'password': '',
'waiter_key': '',
'save': '',
})
self.assertEqual(response.status_code, HTTPStatus.OK)
self.assertContains(response, _('Registration failed'))
def test_render_register_success(self):
# Test render_register_success return statement
response = render_register_success(self.factory.get('/'), "Test Group", "Test Member", False)
self.assertEqual(response.status_code, HTTPStatus.OK)
def test_render_register_failed_with_reason(self):
# Test render_register_failed with reason to cover context assignment
response = render_register_failed(self.factory.get('/'), "Test reason")
self.assertEqual(response.status_code, HTTPStatus.OK)
class UploadRegistrationFormViewTestCase(BasicMemberTestCase): class UploadRegistrationFormViewTestCase(BasicMemberTestCase):
def setUp(self): def setUp(self):
@ -1702,6 +1725,21 @@ class UploadRegistrationFormViewTestCase(BasicMemberTestCase):
self.assertContains(response, self.assertContains(response,
_("Our team will process your registration shortly.")) _("Our team will process your registration shortly."))
def test_upload_registration_form_validation_error(self):
# Test ValueError exception handling during form validation
url = reverse('members:upload_registration_form')
file = SimpleUploadedFile("form.pdf", b"file_content", content_type="application/pdf")
with mock.patch.object(Member, 'validate_registration_form') as mock_validate:
mock_validate.side_effect = ValueError("Test validation error")
response = self.client.post(url, data={
'key': self.reg.upload_registration_form_key,
'registration_form': file,
})
self.assertEqual(response.status_code, HTTPStatus.OK)
# Should stay on upload form page due to error
self.assertContains(response,
_('If you are not an adult yet, please let someone responsible for you sign the agreement.'))
class DownloadRegistrationFormViewTestCase(BasicMemberTestCase): class DownloadRegistrationFormViewTestCase(BasicMemberTestCase):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
@ -1965,6 +2003,15 @@ class ConfirmWaitingViewTestCase(BasicMemberTestCase):
response = self.client.post(url, data={'key': self.waiter.leave_key}) response = self.client.post(url, data={'key': self.waiter.leave_key})
self.assertEqual(response.status_code, HTTPStatus.NOT_FOUND) self.assertEqual(response.status_code, HTTPStatus.NOT_FOUND)
def test_confirm_waiting_invalid_status(self):
# Test invalid status handling in confirm_waiting
url = reverse('members:confirm_waiting')
with mock.patch.object(MemberWaitingList, 'confirm_waiting') as mock_confirm:
mock_confirm.return_value = 999 # Invalid status
response = self.client.get(url, data={'key': self.key})
self.assertEqual(response.status_code, HTTPStatus.OK)
self.assertContains(response, _('The supplied link is invalid.'))
class MailConfirmationViewTestCase(BasicMemberTestCase): class MailConfirmationViewTestCase(BasicMemberTestCase):
def setUp(self): def setUp(self):
@ -2063,6 +2110,22 @@ class EchoViewTestCase(BasicMemberTestCase):
self.assertEqual(response.status_code, HTTPStatus.OK) self.assertEqual(response.status_code, HTTPStatus.OK)
self.assertContains(response, _('Your data was successfully updated.')) self.assertContains(response, _('Your data was successfully updated.'))
def test_post_save_without_registration_form(self):
# Clear registration form to test member without registration_form case
self.fritz.registration_form = None
self.fritz.save()
url = reverse('members:echo')
response = self.client.post(url, data=dict(
REGISTRATION_DATA,
**EMERGENCY_CONTACT_DATA,
key=self.key,
password=self.fritz.echo_password,
save='',
))
# Should redirect to upload registration form
self.assertEqual(response.status_code, HTTPStatus.FOUND)
self.assertIn('upload', response.url)
class TestRegistrationFilterTestCase(AdminTestCase): class TestRegistrationFilterTestCase(AdminTestCase):
def setUp(self): def setUp(self):

@ -77,7 +77,7 @@ class MemberRegistrationWaitingListForm(ModelForm):
'prename': _('Prename of the member.'), 'prename': _('Prename of the member.'),
'lastname': _('Lastname of the member.'), 'lastname': _('Lastname of the member.'),
} }
required = [] required = ['birth_date']
class EmergencyContactForm(ModelForm): class EmergencyContactForm(ModelForm):
@ -319,7 +319,6 @@ def download_registration_form(request):
return render_download_registration_form(request, member) return render_download_registration_form(request, member)
except Member.DoesNotExist: except Member.DoesNotExist:
return render_upload_registration_form_invalid(request) return render_upload_registration_form_invalid(request)
return render_upload_registration_form_invalid(request)
def render_upload_registration_form_invalid(request): def render_upload_registration_form_invalid(request):
@ -364,7 +363,6 @@ def upload_registration_form(request):
return render_upload_registration_form_success(request, member) return render_upload_registration_form_success(request, member)
except ValueError as e: except ValueError as e:
return render_upload_registration_form(request, member, form, key) return render_upload_registration_form(request, member, form, key)
return render_upload_registration_form_invalid(request)
def confirm_mail(request): def confirm_mail(request):

Loading…
Cancel
Save