Skip to content

Commit 0e7f142

Browse files
committed
Make RespiratoryConditions use simpler view pattern
1 parent 4c31c2a commit 0e7f142

5 files changed

Lines changed: 16 additions & 48 deletions

File tree

features/respiratory_conditions.feature

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
@RespiratoryConditions
12
Feature: Respiratory conditions page
23
Scenario: The page is accessible
34
Given I am logged in
@@ -31,6 +32,8 @@ Feature: Respiratory conditions page
3132
And I see "/respiratory-conditions?change=True" as a link to change "Diagnosed respiratory conditions" under "Your health"
3233
When I click the link to change "Diagnosed respiratory conditions" under "Your health"
3334
Then I am on "/respiratory-conditions?change=True"
35+
And I see "Pneumonia" selected
36+
And I see "Emphysema" selected
3437
When I fill in and submit my respiratory conditions with "Bronchitis" and "Tuberculosis (TB)"
3538
Then I am on "/check-your-answers"
3639
And I see "Pneumonia, Emphysema, Bronchitis, and Tuberculosis (TB)" as a response to "Diagnosed respiratory conditions" under "Your health"

lung_cancer_screening/questions/tests/unit/forms/test_respiratory_conditions_form.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
from django.test import TestCase
1+
from django.test import TestCase, tag
22

33
from ...factories.response_set_factory import ResponseSetFactory
44
from ....models.respiratory_conditions_response import RespiratoryConditionsResponse
55
from ....forms.respiratory_conditions_form import RespiratoryConditionsForm
66

77

8+
@tag("RespiratoryConditions")
89
class TestRespiratoryConditionsForm(TestCase):
910
def setUp(self):
1011
self.response_set = ResponseSetFactory()

lung_cancer_screening/questions/tests/unit/models/test_respiratory_conditions_response.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
from django.test import TestCase
1+
from django.test import TestCase, tag
22

33
from ...factories.response_set_factory import ResponseSetFactory
44
from ...factories.respiratory_conditions_response_factory import RespiratoryConditionsResponseFactory
55

66
from ....models.respiratory_conditions_response import RespiratoryConditionsResponse, RespiratoryConditionValues
77

88

9+
@tag("RespiratoryConditions")
910
class TestRespiratoryConditionsResponse(TestCase):
1011
def setUp(self):
1112
self.response_set = ResponseSetFactory()

lung_cancer_screening/questions/tests/unit/views/test_respiratory_conditions.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from django.test import TestCase
1+
from django.test import TestCase, tag
22
from django.urls import reverse
33
from dateutil.relativedelta import relativedelta
44
from django.utils import timezone
@@ -7,6 +7,7 @@
77
from lung_cancer_screening.questions.models.respiratory_conditions_response import RespiratoryConditionsResponse
88

99

10+
@tag("RespiratoryConditions")
1011
class TestGetRespiratoryConditions(TestCase):
1112
def setUp(self):
1213
self.user = login_user(self.client)
@@ -65,6 +66,7 @@ def test_get_contains_the_correct_form_fields(self):
6566
)
6667

6768

69+
@tag("RespiratoryConditions")
6870
class TestPostRespiratoryConditions(TestCase):
6971
def setUp(self):
7072
self.user = login_user(self.client)
Lines changed: 6 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,13 @@
1-
from django.shortcuts import render
2-
from django.urls import reverse
1+
from django.urls import reverse_lazy
32

43
from .question_base_view import QuestionBaseView
54
from ..forms.respiratory_conditions_form import RespiratoryConditionsForm
65
from ..models.respiratory_conditions_response import RespiratoryConditionsResponse
76

87

98
class RespiratoryConditionsView(QuestionBaseView):
10-
def get(self, request):
11-
response, _ = RespiratoryConditionsResponse.objects.get_or_build(
12-
response_set=request.response_set
13-
)
14-
return render_template(
15-
request,
16-
RespiratoryConditionsForm(instance=response)
17-
)
18-
19-
def post(self, request):
20-
response, _ = RespiratoryConditionsResponse.objects.get_or_build(
21-
response_set=request.response_set
22-
)
23-
form = RespiratoryConditionsForm(
24-
instance=response,
25-
data=request.POST
26-
)
27-
28-
if form.is_valid():
29-
response.value = form.cleaned_data["value"]
30-
response.save()
31-
return self.redirect_to_response_or_next_question(
32-
request,
33-
"questions:asbestos_exposure"
34-
)
35-
else:
36-
return render_template(
37-
request,
38-
form,
39-
status=422
40-
)
41-
42-
43-
def render_template(request, form, status=200):
44-
return render(
45-
request,
46-
"question_form.jinja",
47-
{
48-
"form": form,
49-
"back_link_url": reverse("questions:education")
50-
},
51-
status=status
52-
)
9+
template_name = "question_form.jinja"
10+
form_class = RespiratoryConditionsForm
11+
model = RespiratoryConditionsResponse
12+
success_url = reverse_lazy("questions:asbestos_exposure")
13+
back_link_url = reverse_lazy("questions:education")

0 commit comments

Comments
 (0)