11from django .test import TestCase , tag
22from django .urls import reverse
3- from django .utils import timezone
4- from dateutil .relativedelta import relativedelta
5-
6-
7-
8- from lung_cancer_screening .questions .tests .factories .date_of_birth_response_factory import DateOfBirthResponseFactory
9-
10- from ...factories .response_set_factory import ResponseSetFactory
11-
123
134from .helpers .authentication import login_user
5+ from ...factories .response_set_factory import ResponseSetFactory
146
157@tag ("AgeWhenStartedSmoking" )
168class TestGetAgeWhenStartedSmoking (TestCase ):
179 def setUp (self ):
1810 self .user = login_user (self .client )
1911
20- def test_get_redirects_if_the_user_is_not_logged_in (self ):
12+ def test_redirects_if_the_user_is_not_logged_in (self ):
2113 self .client .logout ()
2214
2315 response = self .client .get (
@@ -30,9 +22,7 @@ def test_get_redirects_if_the_user_is_not_logged_in(self):
3022 fetch_redirect_response = False
3123 )
3224
33- def test_get_redirects_when_submitted_response_set_exists_within_last_year (
34- self
35- ):
25+ def test_redirects_when_an_submitted_response_set_exists_within_the_last_year (self ):
3626 ResponseSetFactory .create (
3727 user = self .user ,
3828 recently_submitted = True
@@ -44,7 +34,18 @@ def test_get_redirects_when_submitted_response_set_exists_within_last_year(
4434
4535 self .assertRedirects (response , reverse ("questions:confirmation" ))
4636
47- def test_get_responds_successfully (self ):
37+ def test_redirects_when_the_user_is_not_eligible (self ):
38+ ResponseSetFactory .create (user = self .user , eligible = False )
39+
40+ response = self .client .get (
41+ reverse ("questions:age_when_started_smoking" )
42+ )
43+
44+ self .assertRedirects (response , reverse ("questions:have_you_ever_smoked" ))
45+
46+ def test_responds_successfully (self ):
47+ ResponseSetFactory .create (user = self .user , eligible = True )
48+
4849 response = self .client .get (
4950 reverse ("questions:age_when_started_smoking" )
5051 )
@@ -57,7 +58,7 @@ def setUp(self):
5758
5859 self .valid_params = {"value" : 18 }
5960
60- def test_post_redirects_if_the_user_is_not_logged_in (self ):
61+ def test_redirects_if_the_user_is_not_logged_in (self ):
6162 self .client .logout ()
6263
6364 response = self .client .post (
@@ -71,73 +72,41 @@ def test_post_redirects_if_the_user_is_not_logged_in(self):
7172 fetch_redirect_response = False
7273 )
7374
74- def test_post_creates_unsubmitted_response_set_when_no_response_set_exists (
75- self
76- ):
77- self .client .post (
78- reverse ("questions:age_when_started_smoking" )
79- )
80-
81- response_set = self .user .responseset_set .first ()
82- self .assertEqual (self .user .responseset_set .count (), 1 )
83- self .assertEqual (response_set .submitted_at , None )
84- self .assertEqual (response_set .user , self .user )
85-
86- def test_post_updates_unsubmitted_response_set_when_one_exists (self ):
87- response_set = self .user .responseset_set .create ()
88- DateOfBirthResponseFactory (
89- response_set = response_set
90- )
91-
92- self .client .post (
93- reverse ("questions:age_when_started_smoking" )
94- )
95-
96- response_set .refresh_from_db ()
97- self .assertEqual (self .user .responseset_set .count (), 1 )
98- self .assertEqual (response_set .submitted_at , None )
99- self .assertEqual (response_set .user , self .user )
100-
101- def test_post_creates_new_unsubmitted_response_set_when_submitted_exists_over_year_ago (
102- self
103- ):
75+ def test_redirects_when_an_submitted_response_set_exists_within_the_last_year (self ):
10476 ResponseSetFactory .create (
10577 user = self .user ,
106- not_recently_submitted = True
78+ recently_submitted = True
10779 )
10880
109- self .client .post (
110- reverse ("questions:age_when_started_smoking" )
81+ response = self .client .post (
82+ reverse ("questions:age_when_started_smoking" ),
83+ self .valid_params
11184 )
11285
113- self .assertEqual (self .user .responseset_set .count (), 2 )
114- self .assertEqual (self .user .responseset_set .unsubmitted ().count (), 1 )
86+ self .assertRedirects (response , reverse ("questions:confirmation" ))
11587
116- response_set = self .user .responseset_set .last ()
117- self .assertEqual (response_set .submitted_at , None )
118- self .assertEqual (response_set .user , self .user )
119-
120- def test_post_redirects_when_submitted_response_set_exists_within_last_year (
121- self
122- ):
123- ResponseSetFactory .create (
124- user = self .user ,
125- recently_submitted = True
126- )
88+ def test_redirects_when_the_user_is_not_eligible (self ):
89+ ResponseSetFactory .create (user = self .user )
12790
12891 response = self .client .post (
129- reverse ("questions:age_when_started_smoking" )
92+ reverse ("questions:age_when_started_smoking" ),
93+ self .valid_params
13094 )
13195
132- self .assertRedirects (response , reverse ("questions:confirmation" ))
96+ self .assertRedirects (response , reverse ("questions:have_you_ever_smoked" ))
97+
98+ def test_creates_an_age_when_started_smoking_response (self ):
99+ response_set = ResponseSetFactory .create (user = self .user , eligible = True )
100+
101+ self .client .post (reverse ("questions:age_when_started_smoking" ), self .valid_params )
133102
134- def test_post_redirects_to_responses (self ):
135- self .response_set = ResponseSetFactory ()
136- DateOfBirthResponseFactory (
137- response_set = self .response_set ,
138- value = timezone .now () - relativedelta (years = int (60 ))
103+ response_set .refresh_from_db ()
104+ self .assertEqual (
105+ response_set .age_when_started_smoking_response .value , self .valid_params ["value" ]
139106 )
140- self .user .responseset_set .set ({self .response_set })
107+
108+ def test_redirects_to_responses (self ):
109+ ResponseSetFactory .create (user = self .user , eligible = True )
141110
142111 response = self .client .post (
143112 reverse ("questions:age_when_started_smoking" ),
@@ -146,13 +115,8 @@ def test_post_redirects_to_responses(self):
146115
147116 self .assertRedirects (response , reverse ("questions:responses" ))
148117
149- def test_post_redirects_to_responses_if_change_query_param_is_true (self ):
150- self .response_set = ResponseSetFactory ()
151- DateOfBirthResponseFactory (
152- response_set = self .response_set ,
153- value = timezone .now () - relativedelta (years = int (60 ))
154- )
155- self .user .responseset_set .set ({self .response_set })
118+ def test_redirects_to_responses_if_change_query_param_is_true (self ):
119+ ResponseSetFactory .create (user = self .user , eligible = True )
156120
157121 response = self .client .post (
158122 reverse ("questions:age_when_started_smoking" ),
@@ -163,3 +127,13 @@ def test_post_redirects_to_responses_if_change_query_param_is_true(self):
163127 )
164128
165129 self .assertRedirects (response , reverse ("questions:responses" ))
130+
131+ def test_responds_with_422_if_the_response_fails_to_create (self ):
132+ ResponseSetFactory .create (user = self .user , eligible = True )
133+
134+ response = self .client .post (
135+ reverse ("questions:age_when_started_smoking" ),
136+ {"value" : "not a valid age" }
137+ )
138+
139+ self .assertEqual (response .status_code , 422 )
0 commit comments