From 707bf512fb2cbe60be1a7b8dc97c45e682ca52d8 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Wed, 25 Aug 2021 10:24:55 +0200 Subject: [PATCH] id changed to subject_id --- smash/web/tests/view/test_appointments.py | 54 +++++++++++++++++++---- smash/web/tests/view/test_subjects.py | 4 +- smash/web/tests/view/test_visit.py | 17 +++++++ smash/web/urls.py | 2 +- smash/web/views/appointment.py | 6 +-- smash/web/views/subject.py | 6 +-- smash/web/views/visit.py | 4 +- 7 files changed, 74 insertions(+), 19 deletions(-) diff --git a/smash/web/tests/view/test_appointments.py b/smash/web/tests/view/test_appointments.py index 1e83a434..cacc8bf3 100644 --- a/smash/web/tests/view/test_appointments.py +++ b/smash/web/tests/view/test_appointments.py @@ -35,31 +35,56 @@ class AppointmentsViewTests(LoggedInTestCase): self.assertEqual(response.status_code, 200) def test_post_add_general_appointment(self): + form_data = self.create_add_appointment_form_data() + response = self.client.post(reverse('web.views.appointment_add_general'), data=form_data) + self.assertEqual(response.status_code, 302) + + def create_add_appointment_form_data(self): location = get_test_location() form_data = {} form_data['datetime_when'] = datetime.datetime.today() form_data['location'] = location.id form_data['length'] = 10 form_data['comment'] = 'A comment with weird letters such as á è ü ñ ô' - response = self.client.post(reverse('web.views.appointment_add_general'), data=form_data) - self.assertEqual(response.status_code, 302) + return form_data def test_add_appointment(self): count = Appointment.objects.count() subject = create_study_subject() visit = create_visit(subject) - location = get_test_location() - form_data = {} - form_data['datetime_when'] = datetime.datetime.today() - form_data['location'] = location.id - form_data['comment'] = 'A comment with weird letters such as á è ü ñ ô' - form_data['length'] = 10 + form_data = self.create_add_appointment_form_data() response = self.client.post(reverse('web.views.appointment_add', kwargs={'visit_id': visit.id}), data=form_data, follow=True) self.assertEqual(response.status_code, 200) self.assertEqual(count + 1, Appointment.objects.count()) + def test_add_appointment_to_finished_visit(self): + count = Appointment.objects.count() + subject = create_study_subject() + visit = create_visit(subject) + visit.is_finished = True + visit.save() + form_data = self.create_add_appointment_form_data() + response = self.client.post(reverse('web.views.appointment_add', kwargs={'visit_id': visit.id}), + data=form_data, + follow=True) + self.assertEqual(response.status_code, 200) + self.assertEqual(count, Appointment.objects.count()) + + def test_add_appointment_to_deceased_subject(self): + count = Appointment.objects.count() + subject = create_study_subject() + subject.subject.dead = True + subject.subject.save() + visit = create_visit(subject) + form_data = self.create_add_appointment_form_data() + response = self.client.post(reverse('web.views.appointment_add', kwargs={'visit_id': visit.id}), + data=form_data, + follow=True) + self.assertEqual(response.status_code, 200) + self.assertEqual(count, Appointment.objects.count()) + def test_appointments_list_request(self): response = self.client.get(reverse('web.views.appointments')) self.assertEqual(response.status_code, 200) @@ -84,6 +109,19 @@ class AppointmentsViewTests(LoggedInTestCase): self.assertEqual(new_status, updated_appointment.status) self.assertEqual(new_last_name, updated_subject.subject.last_name) + def test_edit_appointments_for_deceased_subject(self): + subject = create_study_subject() + subject.subject.dead = True + subject.subject.save() + visit = create_visit(subject) + appointment = create_appointment(visit, when=timezone.now()) + form_data = self.prepare_form(appointment, subject) + response = self.client.get( + reverse('web.views.appointment_edit', kwargs={'appointment_id': appointment.id}), data=form_data, + follow=True) + self.assertEqual(response.status_code, 200) + self.assertContains(response, "Appointment cannot be edited") + def test_appointments_edit_from_visit(self): visit = create_visit() appointment = create_appointment(visit, when=timezone.now()) diff --git a/smash/web/tests/view/test_subjects.py b/smash/web/tests/view/test_subjects.py index 71712186..5683ed6a 100644 --- a/smash/web/tests/view/test_subjects.py +++ b/smash/web/tests/view/test_subjects.py @@ -55,12 +55,12 @@ class SubjectsViewTests(LoggedInWithWorkerTestCase): visit = create_visit(self.study_subject) create_appointment(visit) - response = self.client.get(reverse('web.views.subject_visit_details', kwargs={'id': self.study_subject.id})) + response = self.client.get(reverse('web.views.subject_visit_details', kwargs={'subject_id': self.study_subject.id})) self.assertEqual(response.status_code, 200) self.assertFalse("Add visit".encode('utf8') in response.content) def test_render_subject_visit_details_without_visit(self): - response = self.client.get(reverse('web.views.subject_visit_details', kwargs={'id': self.study_subject.id})) + response = self.client.get(reverse('web.views.subject_visit_details', kwargs={'subject_id': self.study_subject.id})) self.assertEqual(response.status_code, 200) self.assertTrue("Add visit".encode('utf8') in response.content) diff --git a/smash/web/tests/view/test_visit.py b/smash/web/tests/view/test_visit.py index 0ca9690f..133681b9 100644 --- a/smash/web/tests/view/test_visit.py +++ b/smash/web/tests/view/test_visit.py @@ -75,6 +75,23 @@ class VisitViewTests(LoggedInTestCase): response = self.client.get(reverse('web.views.visit_add', kwargs={'subject_id': study_subject.id})) self.assertEqual(response.status_code, 200) + def test_render_add_visit_for_deceased(self): + study_subject = create_study_subject() + study_subject.subject.dead=True + study_subject.subject.save() + + response = self.client.get(reverse('web.views.visit_add', kwargs={'subject_id': study_subject.id}), follow=True) + self.assertEqual(response.status_code, 200) + self.assertContains(response, "Visit cannot be added") + + def test_render_add_visit_for_subject_with_unfinished_visit(self): + study_subject = create_study_subject() + create_visit(study_subject) + + response = self.client.get(reverse('web.views.visit_add', kwargs={'subject_id': study_subject.id}), follow=True) + self.assertEqual(response.status_code, 200) + self.assertContains(response, "subject has unfinished visits") + def test_save_add_visit(self): visit_count = Visit.objects.all().count() subject = create_study_subject() diff --git a/smash/web/urls.py b/smash/web/urls.py index 13c9886b..752fabf8 100644 --- a/smash/web/urls.py +++ b/smash/web/urls.py @@ -87,7 +87,7 @@ urlpatterns = [ url(r'^subjects/voucher_expiry', views.subject.subject_voucher_expiry, name='web.views.subject_voucher_expiry'), url(r'^study/(?P<study_id>\d+)/subjects/add$', views.subject.subject_add, name='web.views.subject_add'), - url(r'^subjects/subject_visit_details/(?P<id>\d+)$', views.subject.subject_visit_details, + url(r'^subjects/subject_visit_details/(?P<subject_id>\d+)$', views.subject.subject_visit_details, name='web.views.subject_visit_details'), url(r'^subjects/edit/(?P<subject_id>\d+)$', views.subject.subject_edit, name='web.views.subject_edit'), url(r'^subjects/(?P<pk>\d+)/delete$', views.subject.SubjectDeleteView.as_view(), diff --git a/smash/web/views/appointment.py b/smash/web/views/appointment.py index a30cd045..cd09df61 100644 --- a/smash/web/views/appointment.py +++ b/smash/web/views/appointment.py @@ -45,11 +45,11 @@ def appointment_add(request, visit_id=None): visit_end = visit.datetime_end.strftime("%Y-%m-%d") if visit.is_finished: messages.error(request, "Appointment cannot be added because the visit is finished") - return redirect('web.views.subject_visit_details', id=visit.subject.id) + return redirect('web.views.subject_visit_details', subject_id=visit.subject.id) if not visit.subject.can_schedule(): messages.error(request, "Appointment cannot be added because the subject status is: {}".format(visit.subject.status)) - return redirect('web.views.subject_visit_details', id=visit.subject.id) + return redirect('web.views.subject_visit_details', subject_id=visit.subject.id) else: visit_start = datetime.datetime.today().strftime("%Y-%m-%d") visit_end = datetime.datetime.today().strftime("%Y-%m-%d") @@ -84,7 +84,7 @@ def appointment_edit(request, appointment_id): if not the_appointment.visit.subject.can_schedule(): messages.error(request, "Appointment cannot be edited because the subject status is: {}".format( the_appointment.visit.subject.status)) - return redirect('web.views.subject_visit_details', id=the_appointment.visit.subject.id) + return redirect('web.views.subject_visit_details', subject_id=the_appointment.visit.subject.id) if request.method == 'POST': appointment_form = AppointmentEditForm(request.POST, diff --git a/smash/web/views/subject.py b/smash/web/views/subject.py index dd83c212..ec61136a 100644 --- a/smash/web/views/subject.py +++ b/smash/web/views/subject.py @@ -231,8 +231,8 @@ def persist_custom_file_fields(request, study_subject): study_subject.set_custom_data_value(CustomStudySubjectField.objects.get(pk=field_id), file) -def subject_visit_details(request, id): # pylint: disable=redefined-builtin - study_subject_to_be_viewed = get_object_or_404(StudySubject, id=id) +def subject_visit_details(request, subject_id): + study_subject_to_be_viewed = get_object_or_404(StudySubject, id=subject_id) visits = study_subject_to_be_viewed.visit_set.order_by("-visit_number").all() visits_data = [] allow_add_visit = True @@ -251,4 +251,4 @@ def subject_visit_details(request, id): # pylint: disable=redefined-builtin allow_add_visit = False return wrap_response(request, 'subjects/visit_details.html', - {'display': visits_data, "id": id, "allow_add_visit": allow_add_visit}) + {'display': visits_data, "id": subject_id, "allow_add_visit": allow_add_visit}) diff --git a/smash/web/views/visit.py b/smash/web/views/visit.py index a52d4787..c0555af0 100644 --- a/smash/web/views/visit.py +++ b/smash/web/views/visit.py @@ -139,11 +139,11 @@ def visit_add(request, subject_id=-1): if Visit.objects.filter(subject=subject, is_finished=False).count() > 0: messages.add_message(request, messages.WARNING, 'The subject has unfinished visits, please, finish them before adding new visits.') - return redirect('web.views.subject_visit_details', id=subject_id) + return redirect('web.views.subject_visit_details', subject_id=subject_id) if not subject.can_schedule(): messages.error(request, "Visit cannot be added because the subject status is: {}".format(subject.status)) - return redirect('web.views.subject_visit_details', id=subject_id) + return redirect('web.views.subject_visit_details', subject_id=subject_id) if request.method == 'POST': form = VisitAddForm(request.POST, request.FILES) -- GitLab