Skip to content

Commit abb7a42

Browse files
authored
Merge pull request #766 from NHSDigital/dtos-114466-add-breast-cancer-history-3
Use new YearField for diagnosis_year
2 parents 70b19dc + 245bafa commit abb7a42

File tree

2 files changed

+37
-6
lines changed

2 files changed

+37
-6
lines changed

manage_breast_screening/mammograms/forms/breast_cancer_history_form.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
ChoiceField,
88
MultipleChoiceField,
99
)
10-
from manage_breast_screening.nhsuk_forms.fields.integer_field import IntegerField
10+
from manage_breast_screening.nhsuk_forms.fields.integer_field import (
11+
YearField,
12+
)
1113
from manage_breast_screening.nhsuk_forms.forms import FormWithConditionalFields
1214
from manage_breast_screening.participants.models.breast_cancer_history_item import (
1315
BreastCancerHistoryItem,
@@ -26,13 +28,12 @@ class DiagnosisLocationChoices(TextChoices):
2628
error_messages={"required": "Select which breasts cancer was diagnosed in"},
2729
exclusive_choices={DiagnosisLocationChoices.DONT_KNOW},
2830
)
29-
# todo: constrain min/max
30-
diagnosis_year = IntegerField(
31+
diagnosis_year = YearField(
32+
hint="Leave blank if unknown",
33+
required=False,
3134
label="Year of diagnosis (optional)",
3235
label_classes="nhsuk-label--m",
3336
classes="nhsuk-input--width-4",
34-
hint="Leave blank if unknown",
35-
required=False,
3637
)
3738

3839
right_breast_procedure = ChoiceField(

manage_breast_screening/mammograms/tests/forms/test_breast_cancer_history_form.py

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from datetime import date
12
from urllib.parse import urlencode
23

34
import pytest
@@ -51,12 +52,15 @@ def test_no_data_not_valid(self):
5152
"systemic_treatments": ["Select what systemic treatments they have had"],
5253
}
5354

54-
def test_valid_form(self):
55+
def test_valid_form(self, time_machine):
56+
time_machine.move_to(date(2025, 1, 1))
57+
5558
form = BreastCancerHistoryForm(
5659
data=QueryDict(
5760
urlencode(
5861
{
5962
"diagnosis_location": "RIGHT_BREAST",
63+
"diagnosis_year": "2013",
6064
"intervention_location": "NHS_HOSPITAL",
6165
"intervention_location_details_nhs_hospital": "abc",
6266
"left_breast_other_surgery": "NO_SURGERY",
@@ -73,6 +77,32 @@ def test_valid_form(self):
7377

7478
assert form.is_valid(), form.errors
7579

80+
def test_invalid_date(self, time_machine):
81+
time_machine.move_to(date(2025, 1, 1))
82+
83+
form = BreastCancerHistoryForm(
84+
data=QueryDict(
85+
urlencode(
86+
{
87+
"diagnosis_location": "RIGHT_BREAST",
88+
"diagnosis_year": "1900",
89+
"intervention_location": "NHS_HOSPITAL",
90+
"intervention_location_details_nhs_hospital": "abc",
91+
"left_breast_other_surgery": "NO_SURGERY",
92+
"left_breast_procedure": "NO_PROCEDURE",
93+
"left_breast_treatment": "NO_RADIOTHERAPY",
94+
"right_breast_other_surgery": "LYMPH_NODE_SURGERY",
95+
"right_breast_procedure": "LUMPECTOMY",
96+
"right_breast_treatment": "BREAST_RADIOTHERAPY",
97+
"systemic_treatments": "NO_SYSTEMIC_TREATMENTS",
98+
}
99+
)
100+
)
101+
)
102+
103+
assert not form.is_valid()
104+
assert form.errors == {"diagnosis_year": ["Year must be 1945 or later"]}
105+
76106
def test_missing_intervention_location_details(self):
77107
form = BreastCancerHistoryForm(
78108
data=QueryDict(

0 commit comments

Comments
 (0)