diff --git a/spec/fixtures/forms/test_form.json b/spec/fixtures/forms/test_form.json
new file mode 100644
index 000000000..28feb44b9
--- /dev/null
+++ b/spec/fixtures/forms/test_form.json
@@ -0,0 +1,548 @@
+{
+ "form_type": "lettings",
+ "sections": {
+ "household": {
+ "label": "About the household",
+ "subsections": {
+ "household_characteristics": {
+ "label": "Household characteristics",
+ "pages": {
+ "tenant_code": {
+ "questions": {
+ "tenant_code": {
+ "check_answer_label": "Tenant code",
+ "header": "What is the tenant code?",
+ "type": "text"
+ }
+ }
+ },
+ "person_1_age": {
+ "questions": {
+ "age1": {
+ "check_answer_label": "Tenant's age",
+ "header": "What is the tenant's age?",
+ "type": "numeric",
+ "min": 0,
+ "max": 150,
+ "step": 1
+ }
+ }
+ },
+ "person_1_gender": {
+ "questions": {
+ "sex1": {
+ "check_answer_label": "Tenant's gender",
+ "header": "Which of these best describes the tenant's gender identity?",
+ "type": "radio",
+ "answer_options": {
+ "0": "Female",
+ "1": "Male",
+ "2": "Non-binary",
+ "3": "Prefer not to say"
+ }
+ }
+ }
+ },
+ "household_number_of_other_members": {
+ "questions": {
+ "other_hhmemb": {
+ "check_answer_label": "Number of Other Household Members",
+ "header": "How many other people are there in the household?",
+ "hint_text": "The maximum number of others is 1",
+ "type": "numeric",
+ "min": 0,
+ "max": 1,
+ "step": 1,
+ "conditional_for": {
+ "relat2": ">0",
+ "age2": ">0",
+ "sex2": ">0",
+ "ecstat2": ">0"
+ }
+ },
+ "relat2": {
+ "check_answer_label": "Person 2's relationship to lead tenant",
+ "header": "What's person 2's relationship to lead tenant",
+ "type": "radio",
+ "answer_options": {
+ "0": "Other",
+ "1": "Prefer not to say"
+ }
+ },
+ "age2": {
+ "check_answer_label": "Person 2's age",
+ "header": "What's person 2's age",
+ "type": "numeric",
+ "min": 0,
+ "max": 150,
+ "step": 1
+ },
+ "sex2": {
+ "check_answer_label": "Person 2's gender",
+ "header": "Which of these best describes person 2's gender identity?",
+ "type": "radio",
+ "answer_options": {
+ "0": "Female",
+ "1": "Male",
+ "2": "Non-binary",
+ "3": "Prefer not to say"
+ }
+ },
+ "ecstat2": {
+ "check_answer_label": "Person 2's Work",
+ "header": "Which of these best describes person 2's working situation?",
+ "type": "radio",
+ "answer_options": {
+ "0": "Other",
+ "1": "Prefer not to say"
+ }
+ }
+ }
+ }
+ }
+ },
+ "household_needs": {
+ "label": "Household needs",
+ "pages": {
+ "armed_forces": {
+ "header": "Experience of the UK Armed Forces",
+ "questions": {
+ "armed_forces": {
+ "header": "Has the tenant ever served in the UK armed forces?",
+ "type": "radio",
+ "check_answer_label": "Armed Forces",
+ "answer_options": {
+ "0": "Yes - a regular",
+ "1": "Yes - a reserve",
+ "2": "No",
+ "3": "Prefer not to say"
+ },
+ "conditional_for": {
+ "leftreg": ["Yes - a regular", "Yes - a reserve"],
+ "reservist": ["Yes - a regular", "Yes - a reserve"]
+ }
+ },
+ "leftreg": {
+ "header": "Are they still serving?",
+ "type": "radio",
+ "check_answer_label": "When did they leave the Armed Forces?",
+ "answer_options": {
+ "0": "Yes",
+ "1": "No - they left up to 5 years ago",
+ "2": "No - they left more than 5 years ago",
+ "3": "Prefer not to say"
+ }
+ },
+ "reservist": {
+ "header": "Were they seriously injured or ill as a result of their service?",
+ "type": "radio",
+ "check_answer_label": "Has anyone in the household been seriously injured or ill as a result of their service in the armed forces?",
+ "answer_options": {
+ "0": "Yes",
+ "1": "No",
+ "2": "Prefer not to say"
+ }
+ }
+ }
+ },
+ "medical_conditions": {
+ "questions": {
+ "illness": {
+ "header": "Does anyone in the household have any of the following that they expect to last for 12 months or more:
- Physical Condition
- Mental Health Condition
- Other Illness
",
+ "type": "radio",
+ "check_answer_label": "Physical, mental health or illness in the household",
+ "answer_options": {
+ "0": "Yes",
+ "1": "No",
+ "2": "Do not know",
+ "3": "Prefer not to say"
+ }
+ }
+ }
+ },
+ "accessibility_requirements": {
+ "questions": {
+ "accessibility_requirements": {
+ "header": "Are any of these affected by their condition or illness?",
+ "hint_text": "Select all that apply",
+ "type": "checkbox",
+ "check_answer_label": "Disability requirements",
+ "answer_options": {
+ "housingneeds_a": "Fully wheelchair accessible housing",
+ "housingneeds_b": "Wheelchair access to essential rooms",
+ "housingneeds_c": "Level access housing",
+ "divider_a": true,
+ "housingneeds_h": "Do not know"
+ }
+ }
+ }
+ },
+ "condition_effects": {
+ "questions": {
+ "condition_effects": {
+ "header": "Are any of these affected by their condition or illness?",
+ "hint_text": "Select all that apply",
+ "type": "checkbox",
+ "check_answer_label": "Conditions or illnesses",
+ "answer_options": {
+ "illness_type_1": "Vision - such as blindness or partial sight",
+ "illness_type_2": "Hearing - such as deafness or partial hearing"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tenancy_and_property": {
+ "label": "Tenancy and property information",
+ "subsections": {
+ "tenancy_information": {
+ "label": "Tenancy information",
+ "pages": {
+ "tenancy_code": {
+ "questions": {
+ "tenancy_code": {
+ "check_answer_label": "What is the tenancy code?",
+ "header": "What is the tenancy code?",
+ "type": "text"
+ }
+ }
+ }
+ }
+ },
+ "property_information": {
+ "label": "Property information",
+ "pages": {
+ "property_wheelchair_accessible": {
+ "questions": {
+ "wchair": {
+ "check_answer_label": "Is property built or adapted to wheelchair user standards?",
+ "header": "Is property built or adapted to wheelchair user standards?",
+ "type": "radio",
+ "answer_options": {
+ "0": "Yes",
+ "1": "No"
+ }
+ }
+ }
+ }
+ }
+ },
+ "conditional_question": {
+ "label": "Conditional question",
+ "pages": {
+ "conditional_question": {
+ "questions": {
+ "preg_occ": {
+ "check_answer_label": "Has the condition been met?",
+ "header": "Has the condition been met?",
+ "type": "radio",
+ "answer_options": {
+ "0": "Yes",
+ "1": "No"
+ }
+ }
+ },
+ "conditional_route_to": {
+ "rent": { "preg_occ": "Yes", "sex1": "Female" },
+ "conditional_question_yes_page": { "preg_occ": "Yes" },
+ "conditional_question_no_page": { "preg_occ": "No" }
+ },
+ "default_next_page": "check_answers"
+ },
+ "conditional_question_yes_page": {
+ "questions": {
+ "cbl": {
+ "check_answer_label": "Has the next condition been met?",
+ "header": "Has the next condition been met?",
+ "type": "radio",
+ "answer_options": {
+ "0": "Yes",
+ "1": "No"
+ }
+ }
+ },
+ "default_next_page": "check_answers"
+ },
+ "conditional_question_no_page": {
+ "questions": {
+ "conditional_question_no_question": {
+ "check_answer_label": "Has the condition not been met?",
+ "header": "Has the next condition not been met?",
+ "type": "radio",
+ "answer_options": {
+ "0": "Yes",
+ "1": "No"
+ }
+ }
+ },
+ "default_next_page": "conditional_question_no_second_page"
+ },
+ "conditional_question_no_second_page": {
+ "questions": {
+ "conditional_question_no_second_question": {
+ "check_answer_label": "Has the condition not been met again?",
+ "header": "Has the next condition not been met again?",
+ "type": "radio",
+ "answer_options": {
+ "0": "Yes",
+ "1": "No"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "rent_and_charges": {
+ "label": "Rent and charges",
+ "subsections": {
+ "income_and_benefits": {
+ "label": "Income and benefits",
+ "pages": {
+ "net_income": {
+ "questions": {
+ "earnings": {
+ "check_answer_label": "Income",
+ "header": "What is the tenant’s /and partner’s combined income after tax?",
+ "type": "numeric",
+ "min": 0,
+ "step": "1"
+ },
+ "incfreq": {
+ "check_answer_label": "Income Frequency",
+ "header": "How often do they receive this income?",
+ "type": "radio",
+ "answer_options": {
+ "0": "Weekly",
+ "1": "Monthly",
+ "2": "Yearly"
+ }
+ }
+ },
+ "soft_validations": {
+ "override_net_income_validation": {
+ "check_answer_label": "Net income confirmed?",
+ "type": "validation_override",
+ "answer_options": {
+ "override_net_income_validation": "Yes"
+ }
+ }
+ }
+ },
+ "net_income_uc_proportion": {
+ "questions": {
+ "benefits": {
+ "check_answer_label": "Benefits as a proportion of income",
+ "header": "How much of the tenant’s income is from Universal Credit, state pensions or benefits?",
+ "type": "radio",
+ "answer_options": {
+ "0": "All",
+ "1": "Some"
+ }
+ }
+ }
+ },
+ "housing_benefit": {
+ "questions": {
+ "hb": {
+ "check_answer_label": "Universal Credit & Housing Benefit",
+ "header": "Is the tenant likely to be in receipt of any of these housing-related benefits?",
+ "type": "radio",
+ "answer_options": {
+ "0": "Housing Benefit, but not Universal Credit",
+ "1": "Prefer not to say"
+ }
+ }
+ }
+ }
+ }
+ },
+ "rent": {
+ "label": "Rent",
+ "pages": {
+ "rent": {
+ "questions": {
+ "rent_frequency": {
+ "check_answer_label": "Rent Period",
+ "header": "Which period are rent and other charges due?",
+ "type": "radio",
+ "answer_options": {
+ "0": "Weekly for 52 weeks",
+ "1": "Fortnightly"
+ }
+ },
+ "brent": {
+ "check_answer_label": "Basic Rent",
+ "header": "What is the basic rent?",
+ "hint_text": "Eligible for housing benefit or Universal Credit",
+ "type": "numeric",
+ "min": 0,
+ "step": 1,
+ "fields-to-add": [
+ "brent",
+ "scharge",
+ "pscharge",
+ "supcharg"
+ ],
+ "result-field": "tcharge"
+ },
+ "scharge": {
+ "check_answer_label": "Service Charge",
+ "header": "What is the service charge?",
+ "hint_text": "Eligible for housing benefit or Universal Credit",
+ "type": "numeric",
+ "min": 0,
+ "step": 1,
+ "fields-to-add": [
+ "brent",
+ "scharge",
+ "pscharge",
+ "supcharg"
+ ],
+ "result-field": "tcharge"
+ },
+ "pscharge": {
+ "check_answer_label": "Personal Service Charge",
+ "header": "What is the personal service charge?",
+ "hint_text": "Not eligible for housing benefit or Universal Credit. For example, hot water excluding water rates.",
+ "type": "numeric",
+ "min": 0,
+ "step": 1,
+ "fields-to-add": [
+ "brent",
+ "scharge",
+ "pscharge",
+ "supcharg"
+ ],
+ "result-field": "tcharge"
+ },
+ "supcharg": {
+ "check_answer_label": "Support Charge",
+ "header": "What is the support charge?",
+ "hint_text": "This is to fund housing-related support services included in the tenancy agreement",
+ "type": "numeric",
+ "min": 0,
+ "step": 1,
+ "fields-to-add": [
+ "brent",
+ "scharge",
+ "pscharge",
+ "supcharg"
+ ],
+ "result-field": "tcharge"
+ },
+ "tcharge": {
+ "check_answer_label": "Total Charge",
+ "header": "Total charge?",
+ "hint_text": "This is the total of rent and all charges",
+ "type": "numeric",
+ "min": 0,
+ "step": 1,
+ "readonly": true
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "local_authority": {
+ "label": "Local authority",
+ "subsections": {
+ "local_authority": {
+ "label": "Local authority",
+ "pages": {
+ "time_lived_in_la": {
+ "questions": {
+ "layear": {
+ "check_answer_label": "How long has the household continuously lived in the local authority area where the new letting is located?",
+ "header": "How long has the household continuously lived in the local authority area where the new letting is located?",
+ "type": "radio",
+ "answer_options": {
+ "0": "Just moved to local authority area",
+ "1": "Less than 1 year",
+ "2": "1 to 2 years",
+ "3": "2 to 3 years",
+ "4": "3 to 4 years",
+ "5": "4 to 5 years",
+ "6": "5 years or more",
+ "7": "Do not know"
+ }
+ }
+ }
+ },
+ "time_on_la_waiting_list": {
+ "questions": {
+ "lawaitlist": {
+ "check_answer_label": "How long has the household been on the local authority waiting list where the new letting is located?",
+ "header": "How long has the household been on the local authority waiting list where the new letting is located?",
+ "type": "radio",
+ "answer_options": {
+ "0": "Just moved to local authority area",
+ "1": "Less than 1 year",
+ "2": "1 to 2 years",
+ "3": "2 to 3 years",
+ "4": "3 to 4 years",
+ "5": "4 to 5 years",
+ "6": "5 years or more",
+ "7": "Do not know"
+ }
+ }
+ }
+ },
+ "property_postcode": {
+ "questions": {
+ "property_postcode": {
+ "check_answer_label": "Postcode of previous accomodation if the household has moved from settled accommodation",
+ "header": "Postcode for the previous accommodation",
+ "hint_text": "If the household has moved from settled accommodation immediately prior to being re-housed",
+ "type": "text",
+ "conditional_for": { "faake_key": "fake_condition" }
+ },
+ "previous_postcode": {
+ "check_answer_label": "Postcode of previous accomodation if the household has moved from settled accommodation",
+ "header": "Postcode for the previous accommodation",
+ "hint_text": "If the household has moved from settled accommodation immediately prior to being re-housed",
+ "type": "text"
+ }
+ }
+ },
+ "major_repairs_date": {
+ "questions": {
+ "mrcdate": {
+ "check_answer_label": "What was the major repairs completion date?",
+ "header": "What was the major repairs completion date?",
+ "hint_text": "For example, 27 3 2007",
+ "type": "date"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "submission": {
+ "label": "Submission",
+ "subsections": {
+ "declaration": {
+ "label": "Declaration",
+ "pages": {
+ "declaration": {
+ "questions": {
+ "declaration": {
+ "check_answer_label": "",
+ "header": "What is the tenant code?",
+ "type": "text"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
\ No newline at end of file