Browse Source

save

pull/76/head
magicmilo 3 years ago
parent
commit
e1f758ba07
  1. 3
      app/helpers/json_schema_validation.rb
  2. 4
      config/forms/schema/generic.json
  3. 80
      config/forms/schema/test.json
  4. 515
      spec/fixtures/forms/test_form.json

3
app/helpers/json_schema_validation.rb

@ -13,7 +13,8 @@ end
begin
path = "config/forms/schema/generic.json"
# path = "config/forms/schema/generic.json"
path = "config/forms/schema/test.json"
# path = "config/forms/schema/2021_2022.json"
file = File.open(path)

4
config/forms/schema/generic.json

@ -4,6 +4,7 @@
"title": "Form",
"description": "A form",
"type": "object",
"required": ["form_type", "start_year", "end_year", "sections"],
"properties": {
"form_type": {
"description": "",
@ -11,8 +12,7 @@
},
"start_year": {
"description": "",
"type": "integer",
"optional": "true"
"type": "integer"
},
"end_year": {
"description": "",

80
config/forms/schema/test.json

@ -0,0 +1,80 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"$id": "https://example.com/product.schema.json",
"title": "Form",
"description": "A form",
"type": "object",
"required": ["form_type", "start_year", "end_year", "sections"],
"properties": {
"form_type": {
"description": "",
"type": "string"
},
"start_year": {
"description": "",
"type": "integer"
},
"end_year": {
"description": "",
"type": "integer"
},
"sections": {
"type": "object",
"patternProperties": {
"^[0-9]+$": {
"description": "",
"type": "string"
},
"properties": {
"label": {
"description": "",
"type": "string"
},
"subsections": {
"description": "",
"type": "object",
"patternProperties": {
"^[0-9]+$": {
"description": "",
"type": "object",
"required": ["label"],
"properties": {
"label": {
"description": "",
"type": "string"
},
"pages": {
"type": "object",
"patternProperties": {
"^[0-9]+$": {
"properties": {
"header": {
"description": "",
"type": "string"
},
"description": {
"description": "",
"type": "string"
},
"questions": {
"type": "object",
"properties": {
}
}
}
}
}
}
}
},
"additionalProperties": false,
"maxProperties": 1,
"minProperties": 1
}
}
}
}
}
}
}

515
spec/fixtures/forms/test_form.json vendored

@ -17,520 +17,6 @@
"type": "text"
}
}
},
"person_1_age": {
"questions": {
"person_1_age": {
"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": {
"person_1_gender": {
"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": {
"household_number_of_other_members": {
"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": {
"person_2_relationship": ">0",
"person_2_age": ">0",
"person_2_gender": ">0",
"person_2_economic_status": ">0"
}
},
"person_2_relationship": {
"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"
}
},
"person_2_age": {
"check_answer_label": "Person 2's age",
"header": "What's person 2's age",
"type": "numeric",
"min": 0,
"max": 150,
"step": 1
},
"person_2_gender": {
"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"
}
},
"person_2_economic_status": {
"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": {
"armed_forces_active": [
"Yes - a regular",
"Yes - a reserve"
],
"armed_forces_injured": [
"Yes - a regular",
"Yes - a reserve"
]
}
},
"armed_forces_active": {
"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"
}
},
"armed_forces_injured": {
"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": {
"medical_conditions": {
"header": "Does anyone in the household have any of the following that they expect to last for 12 months or more:<ul><li>Physical Condition</li><li>Mental Health Condition</li><li>Other Illness</li></ul>",
"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": {
"accessibility_requirements_fully_wheelchair_accessible_housing": "Fully wheelchair accessible housing",
"accessibility_requirements_wheelchair_access_to_essential_rooms": "Wheelchair access to essential rooms",
"accessibility_requirements_level_access_housing": "Level access housing",
"divider_a": true,
"accessibility_requirements_do_not_know": "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": {
"condition_effects_vision": "Vision - such as blindness or partial sight",
"condition_effects_hearing": "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": {
"property_wheelchair_accessible": {
"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": {
"pregnancy": {
"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": { "pregnancy": "Yes", "person_1_gender": "Female" },
"conditional_question_yes_page": { "pregnancy": "Yes" },
"conditional_question_no_page": { "pregnancy": "No" }
},
"default_next_page": "check_answers"
},
"conditional_question_yes_page": {
"questions": {
"cbl_letting": {
"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": {
"net_income": {
"check_answer_label": "Income",
"header": "What is the tenant’s /and partner’s combined income after tax?",
"type": "numeric",
"min": 0,
"step": "1"
},
"net_income_frequency": {
"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": {
"net_income_uc_proportion": {
"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": {
"housing_benefit": {
"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"
}
},
"basic_rent": {
"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": [
"basic_rent",
"service_charge",
"personal_service_charge",
"support_charge"
],
"result-field": "total_charge"
},
"service_charge": {
"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": [
"basic_rent",
"service_charge",
"personal_service_charge",
"support_charge"
],
"result-field": "total_charge"
},
"personal_service_charge": {
"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": [
"basic_rent",
"service_charge",
"personal_service_charge",
"support_charge"
],
"result-field": "total_charge"
},
"support_charge": {
"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": [
"basic_rent",
"service_charge",
"personal_service_charge",
"support_charge"
],
"result-field": "total_charge"
},
"total_charge": {
"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": {
"time_lived_in_la": {
"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": {
"time_on_la_waiting_list": {
"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"
}
}
}
},
"previous_postcode": {
"questions": {
"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",
"conditional_for": { "faake_key": "fake_condition" }
}
}
}
}
}
}
},
"submission": {
"label": "Submission",
"subsections": {
"declaration": {
"label": "Declaration",
"pages": {
"declaration": {
"questions": {
"declaration": {
"check_answer_label": "",
"header": "What is the tenant code?",
"type": "text"
}
}
}
}
}
@ -538,3 +24,4 @@
}
}
}
Loading…
Cancel
Save