diff --git a/manage_breast_screening/mammograms/forms/breast_cancer_history_form.py b/manage_breast_screening/mammograms/forms/breast_cancer_history_form.py index bb2ee0ea1..ef8cf8d0a 100644 --- a/manage_breast_screening/mammograms/forms/breast_cancer_history_form.py +++ b/manage_breast_screening/mammograms/forms/breast_cancer_history_form.py @@ -7,7 +7,9 @@ ChoiceField, MultipleChoiceField, ) -from manage_breast_screening.nhsuk_forms.fields.integer_field import IntegerField +from manage_breast_screening.nhsuk_forms.fields.integer_field import ( + YearField, +) from manage_breast_screening.nhsuk_forms.forms import FormWithConditionalFields from manage_breast_screening.participants.models.breast_cancer_history_item import ( BreastCancerHistoryItem, @@ -26,13 +28,12 @@ class DiagnosisLocationChoices(TextChoices): error_messages={"required": "Select which breasts cancer was diagnosed in"}, exclusive_choices={DiagnosisLocationChoices.DONT_KNOW}, ) - # todo: constrain min/max - diagnosis_year = IntegerField( + diagnosis_year = YearField( + hint="Leave blank if unknown", + required=False, label="Year of diagnosis (optional)", label_classes="nhsuk-label--m", classes="nhsuk-input--width-4", - hint="Leave blank if unknown", - required=False, ) right_breast_procedure = ChoiceField( diff --git a/manage_breast_screening/mammograms/tests/forms/test_breast_cancer_history_form.py b/manage_breast_screening/mammograms/tests/forms/test_breast_cancer_history_form.py index d6e467fde..b19389d06 100644 --- a/manage_breast_screening/mammograms/tests/forms/test_breast_cancer_history_form.py +++ b/manage_breast_screening/mammograms/tests/forms/test_breast_cancer_history_form.py @@ -1,3 +1,4 @@ +from datetime import date from urllib.parse import urlencode import pytest @@ -51,12 +52,15 @@ def test_no_data_not_valid(self): "systemic_treatments": ["Select what systemic treatments they have had"], } - def test_valid_form(self): + def test_valid_form(self, time_machine): + time_machine.move_to(date(2025, 1, 1)) + form = BreastCancerHistoryForm( data=QueryDict( urlencode( { "diagnosis_location": "RIGHT_BREAST", + "diagnosis_year": "2013", "intervention_location": "NHS_HOSPITAL", "intervention_location_details_nhs_hospital": "abc", "left_breast_other_surgery": "NO_SURGERY", @@ -73,6 +77,32 @@ def test_valid_form(self): assert form.is_valid(), form.errors + def test_invalid_date(self, time_machine): + time_machine.move_to(date(2025, 1, 1)) + + form = BreastCancerHistoryForm( + data=QueryDict( + urlencode( + { + "diagnosis_location": "RIGHT_BREAST", + "diagnosis_year": "1900", + "intervention_location": "NHS_HOSPITAL", + "intervention_location_details_nhs_hospital": "abc", + "left_breast_other_surgery": "NO_SURGERY", + "left_breast_procedure": "NO_PROCEDURE", + "left_breast_treatment": "NO_RADIOTHERAPY", + "right_breast_other_surgery": "LYMPH_NODE_SURGERY", + "right_breast_procedure": "LUMPECTOMY", + "right_breast_treatment": "BREAST_RADIOTHERAPY", + "systemic_treatments": "NO_SYSTEMIC_TREATMENTS", + } + ) + ) + ) + + assert not form.is_valid() + assert form.errors == {"diagnosis_year": ["Year must be 1945 or later"]} + def test_missing_intervention_location_details(self): form = BreastCancerHistoryForm( data=QueryDict(