Browse Source

Merge pull request #95 from communitiesuk/CLDC-687ImplementPropertyInformation

CLDC-687 implement property information
pull/108/head
Milo 3 years ago committed by GitHub
parent
commit
0448a584cf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      Gemfile.lock
  2. 2
      app/admin/case_logs.rb
  3. 38
      app/constants/db_enums.rb
  4. 5
      app/models/case_log.rb
  5. 281
      config/forms/2021_2022.json
  6. 10
      db/migrate/20211119104835_add_property_info_fields.rb
  7. 19
      db/migrate/20211124152204_change_recently_let_as_to_enum.rb
  8. 8
      db/schema.rb
  9. 2
      docs/api/DLUHC-CORE-Data.v1.json
  10. 2
      spec/factories/case_log.rb
  11. 17
      spec/fixtures/complete_case_log.json
  12. 179
      spec/fixtures/forms/test_aboutthislog.json
  13. 2
      spec/lib/tasks/form_definition_validator_spec.rb

2
Gemfile.lock

@ -232,6 +232,8 @@ GEM
minitest (5.14.4) minitest (5.14.4)
msgpack (1.4.2) msgpack (1.4.2)
nio4r (2.5.8) nio4r (2.5.8)
nokogiri (1.12.5-x86_64-darwin)
racc (~> 1.4)
nokogiri (1.12.5-x86_64-linux) nokogiri (1.12.5-x86_64-linux)
racc (~> 1.4) racc (~> 1.4)
orm_adapter (0.5.0) orm_adapter (0.5.0)

2
app/admin/case_logs.rb

@ -2,7 +2,7 @@ ActiveAdmin.register CaseLog do
# See permitted parameters documentation: # See permitted parameters documentation:
# https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters # https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters
permit_params do permit_params do
permitted = %i[status tenant_code age1 sex1 tenant_ethnic_group tenant_nationality previous_housing_situation armedforces ecstat1 other_hhmemb relat2 age2 sex2 ecstat2 relat3 age3 sex3 ecstat3 relat4 age4 sex4 ecstat4 relat5 age5 sex5 ecstat5 relat6 age6 sex6 ecstat6 relat7 age7 person_7_gender ecstat7 relat8 age8 sex8 ecstat8 homelessness reason benefit_cap_spare_room_subsidy armed_forces_active armed_forces_injured medical_conditions pregnancy accessibility_requirements condition_effects tenancy_code tenancy_start_date starter_tenancy fixed_term_tenancy tenancy_type letting_type letting_provider la previous_postcode property_relet property_vacancy_reason property_reference property_unit_type property_building_type property_number_of_bedrooms property_void_date majorrepairs mrcdate property_number_of_times_relet property_wheelchair_accessible net_income net_income_frequency net_income_uc_proportion hb rent_frequency basic_rent service_charge personal_service_charge support_charge total_charge tshortfall time_lived_in_la time_on_la_waiting_list prevloc property_postcode reasonable_preference reasonable_preference_reason cbl_letting chr_letting cap_letting hbrentshortfall other_reason accessibility_requirements_fully_wheelchair_accessible_housing accessibility_requirements_wheelchair_access_to_essential_rooms accessibility_requirements_level_access_housing accessibility_requirements_other_disability_requirements accessibility_requirements_no_disability_requirements accessibility_requirements_do_not_know accessibility_requirements_prefer_not_to_say condition_effects_vision condition_effects_hearing condition_effects_mobility condition_effects_dexterity condition_effects_stamina condition_effects_learning condition_effects_memory condition_effects_mental_health condition_effects_social_or_behavioral condition_effects_other condition_effects_prefer_not_to_say reasonable_preference_reason_homeless reasonable_preference_reason_unsatisfactory_housing reasonable_preference_reason_medical_grounds reasonable_preference_reason_avoid_hardship reasonable_preference_reason_do_not_know other_tenancy_type override_net_income_validation net_income_known] permitted = %i[status tenant_code age1 sex1 tenant_ethnic_group tenant_nationality previous_housing_situation armedforces ecstat1 other_hhmemb relat2 age2 sex2 ecstat2 relat3 age3 sex3 ecstat3 relat4 age4 sex4 ecstat4 relat5 age5 sex5 ecstat5 relat6 age6 sex6 ecstat6 relat7 age7 person_7_gender ecstat7 relat8 age8 sex8 ecstat8 homelessness reason benefit_cap_spare_room_subsidy armed_forces_active armed_forces_injured medical_conditions pregnancy accessibility_requirements condition_effects tenancy_code tenancy_start_date starter_tenancy fixed_term_tenancy tenancy_type letting_type letting_provider la previous_postcode property_relet property_vacancy_reason property_reference property_unit_type property_building_type property_number_of_bedrooms property_void_date majorrepairs mrcdate property_wheelchair_accessible net_income net_income_frequency net_income_uc_proportion hb rent_frequency basic_rent service_charge personal_service_charge support_charge total_charge tshortfall time_lived_in_la time_on_la_waiting_list prevloc property_postcode reasonable_preference reasonable_preference_reason cbl_letting chr_letting cap_letting hbrentshortfall other_reason accessibility_requirements_fully_wheelchair_accessible_housing accessibility_requirements_wheelchair_access_to_essential_rooms accessibility_requirements_level_access_housing accessibility_requirements_other_disability_requirements accessibility_requirements_no_disability_requirements accessibility_requirements_do_not_know accessibility_requirements_prefer_not_to_say condition_effects_vision condition_effects_hearing condition_effects_mobility condition_effects_dexterity condition_effects_stamina condition_effects_learning condition_effects_memory condition_effects_mental_health condition_effects_social_or_behavioral condition_effects_other condition_effects_prefer_not_to_say reasonable_preference_reason_homeless reasonable_preference_reason_unsatisfactory_housing reasonable_preference_reason_medical_grounds reasonable_preference_reason_avoid_hardship reasonable_preference_reason_do_not_know other_tenancy_type override_net_income_validation net_income_known]
permitted permitted
end end

38
app/constants/db_enums.rb

@ -10,6 +10,22 @@ module DbEnums
} }
end end
def self.unitletas
{
"Social rent basis" => 1,
"Affordable rent basis" => 2,
"Intermediate rent basis" => 4,
"Do not know" => 3,
}
end
def self.builtype
{
"Purpose built" => 1,
"Conversion" => 2
}
end
def self.ecstat def self.ecstat
{ {
"Part-time - Less than 30 hours" => 2, "Part-time - Less than 30 hours" => 2,
@ -186,17 +202,17 @@ module DbEnums
"First let of newbuild property" => 15, "First let of newbuild property" => 15,
"First let of conversion/rehabilitation/acquired property" => 16, "First let of conversion/rehabilitation/acquired property" => 16,
"First let of leased property" => 17, "First let of leased property" => 17,
"Relet - tenant evicted due to arrears" => 10, "Tenant evicted due to arrears" => 10,
"Relet - tenant evicted due to ASB or other reason" => 11, "Tenant evicted due to ASB or other reason" => 11,
"Relet - tenant died (no succession)" => 5, "Tenant died (no succession)" => 5,
"Relet - tenant moved to other social housing provider" => 12, "Tenant moved to other social housing provider" => 12,
"Relet - tenant abandoned property" => 6, "Tenant abandoned property" => 6,
"Relet - tenant moved to private sector or other accommodation" => 8, "Tenant moved to private sector or other accommodation" => 8,
"Relet - to tenant who occupied same property as temporary accommodation" => 9, "Relet to tenant who occupied same property as temporary accommodation" => 9,
"Relet – internal transfer (excluding renewals of a fixed-term tenancy)" => 13, "Internal transfer (excluding renewals of a fixed-term tenancy)" => 13,
"Relet – renewal of fixed-term tenancy" => 14, "Renewal of fixed-term tenancy" => 14,
"Relet – tenant moved to care home" => 18, "Tenant moved to care home" => 18,
"Relet – tenant involved in a succession downsize" => 19, "Tenant involved in a succession downsize" => 19,
} }
end end

5
app/models/case_log.rb

@ -110,8 +110,11 @@ class CaseLog < ApplicationRecord
enum hbrentshortfall: DbEnums.polar_with_unknown, _suffix: true enum hbrentshortfall: DbEnums.polar_with_unknown, _suffix: true
enum property_relet: DbEnums.polar, _suffix: true enum property_relet: DbEnums.polar, _suffix: true
enum armedforces: DbEnums.armed_forces, _suffix: true enum armedforces: DbEnums.armed_forces, _suffix: true
enum first_time_property_let_as_social_housing: DbEnums.polar, _suffix: true
enum unitletas: DbEnums.unitletas, _suffix: true
AUTOGENERATED_FIELDS = %w[id status created_at updated_at discarded_at].freeze AUTOGENERATED_FIELDS = %w[id status created_at updated_at discarded_at].freeze
OPTIONAL_FIELDS = %w[do_you_know_the_postcode do_you_know_the_local_authority].freeze
def self.editable_fields def self.editable_fields
attribute_names - AUTOGENERATED_FIELDS attribute_names - AUTOGENERATED_FIELDS
@ -221,7 +224,7 @@ private
end end
def mandatory_fields def mandatory_fields
required = attributes.except(*AUTOGENERATED_FIELDS) required = attributes.except(*(AUTOGENERATED_FIELDS + OPTIONAL_FIELDS))
dynamically_not_required = [] dynamically_not_required = []

281
config/forms/2021_2022.json

@ -87,8 +87,8 @@
"hint_text": "", "hint_text": "",
"type": "radio", "type": "radio",
"answer_options": { "answer_options": {
"0": "Yes", "0": "No",
"1": "No" "1": "Yes"
} }
} }
}, },
@ -1107,13 +1107,66 @@
"label": "Property information", "label": "Property information",
"depends_on": { "about_this_log": "completed" }, "depends_on": { "about_this_log": "completed" },
"pages": { "pages": {
"property_location": { "property_reference": {
"header": "",
"description": "",
"questions": {
"propcode": {
"check_answer_label": "What’s the property reference?",
"header": "What's the property reference?",
"hint_text": "",
"type": "text"
}
}
},
"property_postcode": {
"header": "",
"description": "",
"questions": {
"do_you_know_the_postcode": {
"check_answer_label": "Do you know the property postcode?",
"header": "Do you know the postcode?",
"hint_text": "",
"type": "radio",
"answer_options": {
"0": "No",
"1": "Yes"
},
"conditional_for": {
"postcode": ["Yes"]
}
},
"postcode": {
"check_answer_label": "",
"header": "",
"hint_text": "",
"type": "text"
}
}
},
"do_you_know_the_local_authority": {
"header": "",
"description": "",
"questions": {
"do_you_know_the_local_authority": {
"check_answer_label": "Do you know what local authority the property is located in?",
"header": "Do you know what local authority the property is located in?",
"hint_text": "",
"type": "radio",
"answer_options": {
"0": "No",
"1": "Yes"
}
}
}
},
"select_local_authority": {
"header": "", "header": "",
"description": "", "description": "",
"questions": { "questions": {
"la": { "la": {
"check_answer_label": "Property Location", "check_answer_label": "Local Authority",
"header": "Property location", "header": "Select a local authority",
"hint_text": "", "hint_text": "",
"type": "radio", "type": "radio",
"answer_options": { "answer_options": {
@ -1432,37 +1485,59 @@
"312": "York" "312": "York"
} }
} }
} },
"depends_on": { "do_you_know_the_local_authority": "Yes" }
}, },
"property_postcode": { "why_dont_you_know_la": {
"header": "", "header": "",
"description": "", "description": "",
"questions": { "questions": {
"property_postcode": { "why_dont_you_know_la": {
"check_answer_label": "What was the previous postcode?", "check_answer_label": "Reason for not knowing local authority",
"header": "What is the property's postcode?", "header": "Give a reason why you don't know the postcode or local authority",
"hint_text": "", "hint_text": "",
"type": "text" "type": "text"
} }
} },
"depends_on": { "do_you_know_the_local_authority": "No" }
}, },
"property_relet": { "first_time_property_let_as_social_housing": {
"header": "", "header": "",
"description": "", "description": "",
"questions": { "questions": {
"property_relet": { "first_time_property_let_as_social_housing": {
"check_answer_label": "Which type was the property most recently let as?", "check_answer_label": "Which type was the property most recently let as?",
"header": "Is this property a relet?", "header": "Is this property a relet?",
"hint_text": "", "hint_text": "",
"type": "radio", "type": "radio",
"answer_options": { "answer_options": {
"0": "Yes", "0": "No",
"1": "No" "1": "Yes"
} }
} }
} },
"depends_on": { "tenant_same_property_renewal": "No"}
}, },
"property_vacancy_reason": { "unitletas": {
"header": "",
"description": "",
"questions": {
"unitletas": {
"check_answer_label": "Type property most recently let as",
"header": "Which type was the property most recently let as?",
"hint_text": "",
"type": "radio",
"answer_options": {
"0": "Social rent basis",
"1": "Affordable rent basis",
"2": "Intermediate rent basis",
"3": "Do not know"
}
}
},
"depends_on": { "first_time_property_let_as_social_housing": "No", "tenant_same_property_renewal": "No" }
},
"property_vacancy_reason_not_first_let": {
"header": "", "header": "",
"description": "", "description": "",
"questions": { "questions": {
@ -1471,36 +1546,72 @@
"header": "What is the reason for the property vacancy?", "header": "What is the reason for the property vacancy?",
"hint_text": "", "hint_text": "",
"type": "radio", "type": "radio",
"answer_options": { "answer_options": {
"0": "First let of newbuild property", "0": "Renewal of fixed-term tenancy",
"1": "First let of conversion/rehabilitation/acquired property", "1": "Internal transfer (excluding renewals of a fixed-term tenancy)",
"2": "First let of leased property", "2": "Relet to tenant who occupied same property as temporary accommodation",
"3": "Relet - tenant evicted due to arrears", "3": "Tenant involved in a succession downsize",
"4": "Relet - tenant evicted due to ASB or other reason", "4": "Tenant moved to private sector or other accommodation",
"5": "Relet - tenant died (no succession)", "5": "Tenant moved to other social housing provider",
"6": "Relet - tenant moved to other social housing provider", "6": "Tenant moved to care home",
"7": "Relet - tenant abandoned property", "7": "Tenant abandoned property",
"8": "Relet - tenant moved to private sector or other accommodation", "8": "Tenant evicted due to arrears",
"9": "Relet - to tenant who occupied same property as temporary accommodation", "9": "Tenant evicted due to ASB or other reason",
"10": "Relet – internal transfer (excluding renewals of a fixed-term tenancy)", "10": "Previous tenant passed away (no succession)"
"11": "Relet – renewal of fixed-term tenancy",
"12": "Relet – tenant moved to care home",
"13": "Relet – tenant involved in a succession downsize"
} }
} }
} },
"depends_on": { "first_time_property_let_as_social_housing": "No", "tenant_same_property_renewal": "No" }
}, },
"property_reference": { "property_vacancy_reason_first_let": {
"header": "", "header": "",
"description": "", "description": "",
"questions": { "questions": {
"propcode": { "rsnvac": {
"check_answer_label": "What’s the property reference?", "check_answer_label": "What is the reason for the property vacancy?",
"header": "What's the property reference?", "header": "What is the reason for the property vacancy?",
"hint_text": "", "hint_text": "",
"type": "text" "type": "radio",
"answer_options": {
"11": "First let of newbuild property",
"12": "First let of conversion/rehabilitation/acquired property",
"13": "First let of leased property"
}
} }
} },
"depends_on": { "first_time_property_let_as_social_housing": "Yes", "tenant_same_property_renewal": "No" }
},
"property_number_of_times_relet_not_social_let": {
"header": "",
"description": "",
"questions": {
"offered": {
"check_answer_label": "How many times has this unit been previously offered since becoming available for relet since becoming available for relet (after the last tenancy ended)?",
"header": "How many times has this unit been previously offered since becoming available for relet since becoming available for relet (after the last tenancy ended)?",
"hint_text": "If the property is being let for the first time, enter 0",
"type": "numeric",
"min": 0,
"max": 150,
"step": 1
}
},
"depends_on": { "first_time_property_let_as_social_housing": "No", "tenant_same_property_renewal": "No" }
},
"property_number_of_times_relet_social_let": {
"header": "",
"description": "",
"questions": {
"offered": {
"check_answer_label": "How many times has the property been previously offered since becoming available?",
"header": "How many times has the property been previously offered since becoming available?",
"hint_text": "If the property is being let for the first time, enter 0",
"type": "numeric",
"min": 0,
"max": 150,
"step": 1
}
},
"depends_on": { "first_time_property_let_as_social_housing": "Yes", "tenant_same_property_renewal": "No" }
}, },
"property_unit_type": { "property_unit_type": {
"header": "", "header": "",
@ -1524,6 +1635,38 @@
} }
} }
}, },
"property_building_type": {
"header": "",
"description": "",
"questions": {
"builtype": {
"check_answer_label": "Building type",
"header": "Which type of building is the property?",
"hint_text": "",
"type": "radio",
"answer_options": {
"0": "Purpose built",
"1": "Converted from previous residential or non-residential property"
}
}
}
},
"property_wheelchair_accessible": {
"header": "",
"description": "",
"questions": {
"wchair": {
"check_answer_label": "Is property built or adapted to wheelchair user standards?",
"header": "Is property built or adapted to wheelchair user standards?",
"hint_text": "",
"type": "radio",
"answer_options": {
"0": "Yes",
"1": "No"
}
}
}
},
"property_number_of_bedrooms": { "property_number_of_bedrooms": {
"header": "", "header": "",
"description": "", "description": "",
@ -1537,7 +1680,21 @@
"max": 150, "max": 150,
"step": 1 "step": 1
} }
} },
"depends_on": { "needstype": "General Needs" }
},
"void_or_renewal_date": {
"header": "",
"description": "",
"questions": {
"beds": {
"check_answer_label": "void/renewal date",
"header": "What is the void or renewal date?",
"hint_text": "",
"type": "date"
}
},
"depends_on": { "rsnvac": "First let of newbuild property", "tenant_same_property_renewal": "No" }
}, },
"property_major_repairs": { "property_major_repairs": {
"header": "", "header": "",
@ -1549,12 +1706,13 @@
"hint_text": "", "hint_text": "",
"type": "radio", "type": "radio",
"answer_options": { "answer_options": {
"0": "Yes", "0": "No",
"1": "No" "1": "Yes"
}, },
"conditional_for": { "conditional_for": {
"mrcdate": ["Yes"] "mrcdate": ["Yes"]
} },
"depends_on": { "tenant_same_property_renewal": "No" }
}, },
"mrcdate": { "mrcdate": {
"check_answer_label": "What was the major repairs completion date?", "check_answer_label": "What was the major repairs completion date?",
@ -1562,35 +1720,28 @@
"hint_text": "For example, 27 3 2007", "hint_text": "For example, 27 3 2007",
"type": "date" "type": "date"
} }
} },
}, "depends_on": { "rsnvac": "First let of newbuild property" }
"property_number_of_times_relet": {
"header": "",
"description": "",
"questions": {
"offered": {
"check_answer_label": "How many times has this unit been previously offered since becoming available for relet since the last tenancy ended or as a first let?",
"header": "How many times has this unit been previously offered since becoming available for relet since the last tenancy ended or as a first let? ",
"hint_text": "For an Affordable Rent or Intermediate Rent Letting, only include number of offers as that type. For a property let at the first attempt enter '0' ",
"type": "numeric",
"min": 0,
"max": 150,
"step": 1
}
}
}, },
"property_wheelchair_accessible": { "new_build_handover_date": {
"header": "", "header": "",
"description": "", "description": "",
"questions": { "questions": {
"wchair": { "majorrepairs": {
"check_answer_label": "Is property built or adapted to wheelchair user standards?", "check_answer_label": "Were major repairs carried out during the void period?",
"header": "Is property built or adapted to wheelchair user standards?", "header": "Were any major repairs completed during the void period?",
"hint_text": "", "hint_text": "",
"type": "radio", "type": "radio",
"answer_options": { "answer_options": {
"0": "Yes", "0": "No",
"1": "No" "1": "Yesx"
},
"conditional_for": {
"mrcdate": ["Yes"]
},
"depends_on": {
"tenant_same_property_renewal": "No",
"rsnvac": ["First let of conversion, rehabilitation or acquired property?", "First let of leased property"]
} }
} }
} }

10
db/migrate/20211119104835_add_property_info_fields.rb

@ -0,0 +1,10 @@
class AddPropertyInfoFields < ActiveRecord::Migration[6.1]
def change
change_table :case_logs, bulk: true do |t|
t.column :first_time_property_let_as_social_housing, :int
t.column :why_dont_you_know_la, :string
t.column :type_property_most_recently_let_as, :string
t.column :builtype, :string
end
end
end

19
db/migrate/20211124152204_change_recently_let_as_to_enum.rb

@ -0,0 +1,19 @@
class ChangeRecentlyLetAsToEnum < ActiveRecord::Migration[6.1]
def up
change_table :case_logs, bulk: true do |t|
t.remove :type_property_most_recently_let_as
t.column :unitletas, :int
t.remove :builtype
t.column :builtype, :int
end
end
def down
change_table :case_logs, bulk: true do |t|
t.remove :unitletas
t.column :type_property_most_recently_let_as, :string
t.remove :builtype
t.remove :builtype, :string
end
end
end

8
db/schema.rb

@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2021_11_19_120910) do ActiveRecord::Schema.define(version: 2021_11_24_152204) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
@ -35,6 +35,7 @@ ActiveRecord::Schema.define(version: 2021_11_19_120910) do
t.integer "ethnic" t.integer "ethnic"
t.integer "national" t.integer "national"
t.integer "prevten" t.integer "prevten"
t.string "armed_forces"
t.integer "ecstat1" t.integer "ecstat1"
t.integer "hhmemb" t.integer "hhmemb"
t.string "relat2" t.string "relat2"
@ -69,6 +70,7 @@ ActiveRecord::Schema.define(version: 2021_11_19_120910) do
t.integer "underoccupation_benefitcap" t.integer "underoccupation_benefitcap"
t.integer "leftreg" t.integer "leftreg"
t.integer "reservist" t.integer "reservist"
t.string "armed_forces_partner"
t.integer "illness" t.integer "illness"
t.integer "preg_occ" t.integer "preg_occ"
t.string "accessibility_requirements" t.string "accessibility_requirements"
@ -163,6 +165,10 @@ ActiveRecord::Schema.define(version: 2021_11_19_120910) do
t.datetime "startdate" t.datetime "startdate"
t.integer "armedforces" t.integer "armedforces"
t.string "property_postcode" t.string "property_postcode"
t.integer "first_time_property_let_as_social_housing"
t.string "why_dont_you_know_la"
t.integer "unitletas"
t.integer "builtype"
t.index ["discarded_at"], name: "index_case_logs_on_discarded_at" t.index ["discarded_at"], name: "index_case_logs_on_discarded_at"
end end

2
docs/api/DLUHC-CORE-Data.v1.json

@ -317,7 +317,7 @@
"property_building_type": "dummy", "property_building_type": "dummy",
"beds": 3, "beds": 3,
"property_void_date": "03/11/2019", "property_void_date": "03/11/2019",
"majorrepairs": "Yes", "majorrepairs": "No",
"mrcdate": "05/05/2020", "mrcdate": "05/05/2020",
"offered": 2, "offered": 2,
"wchair": true, "wchair": true,

2
spec/factories/case_log.rb

@ -54,7 +54,7 @@ FactoryBot.define do
lettype { "Affordable Rent - General Needs" } lettype { "Affordable Rent - General Needs" }
landlord { "This landlord" } landlord { "This landlord" }
previous_postcode { "SE2 6RT" } previous_postcode { "SE2 6RT" }
rsnvac { "Relet - tenant abandoned property" } rsnvac { "Tenant abandoned property" }
unittype_gn { "House" } unittype_gn { "House" }
property_building_type { "dummy" } property_building_type { "dummy" }
beds { 3 } beds { 3 }

17
spec/fixtures/complete_case_log.json vendored

@ -7,6 +7,8 @@
"national": "UK national resident in UK", "national": "UK national resident in UK",
"prevten": "Private sector tenancy", "prevten": "Private sector tenancy",
"armedforces": "A current or former regular in the UK Armed Forces (exc. National Service)", "armedforces": "A current or former regular in the UK Armed Forces (exc. National Service)",
"armed_forces": "A current or former regular in the UK Armed Forces (exc. National Service)",
"armed_forces_partner": "",
"ecstat1": "Full-time - 30 hours or more", "ecstat1": "Full-time - 30 hours or more",
"other_hhmemb": 7, "other_hhmemb": 7,
"hhmemb": 8, "hhmemb": 8,
@ -57,13 +59,13 @@
"la": "Barnet", "la": "Barnet",
"property_postcode": "NW1 5TY", "property_postcode": "NW1 5TY",
"property_relet": "No", "property_relet": "No",
"rsnvac": "Relet - tenant abandoned property", "rsnvac": "First let of newbuild property",
"property_reference": "P9876", "property_reference": "P9876",
"unittype_gn": "House", "unittype_gn": "House",
"property_building_type": "dummy", "property_building_type": "dummy",
"beds": 3, "beds": 3,
"property_void_date": "03/11/2019", "property_void_date": "03/11/2019",
"majorrepairs": "Yes", "majorrepairs": "No",
"mrcdate": "05/05/2020", "mrcdate": "05/05/2020",
"mrcday": 5, "mrcday": 5,
"mrcmonth": 5, "mrcmonth": 5,
@ -124,7 +126,6 @@
"property_owner_organisation": "", "property_owner_organisation": "",
"property_manager_organisation": "", "property_manager_organisation": "",
"sale_or_letting": "", "sale_or_letting": "",
"tenant_same_property_renewal": "",
"rent_type": "", "rent_type": "",
"intermediate_rent_product_name": "", "intermediate_rent_product_name": "",
"needs_type": "", "needs_type": "",
@ -134,6 +135,14 @@
"postcode": "a1", "postcode": "a1",
"postcod2": "w3", "postcod2": "w3",
"ppostc1": "w3", "ppostc1": "w3",
"ppostc2": "w3" "ppostc2": "w3",
"why_dont_you_know_la": "Forgot",
"first_time_property_let_as_social_housing": "Yes",
"unitletas": "Affordable rent basis",
"builtype": "Purpose built",
"property_wheelchair_accessible": "Yes",
"void_or_renewal_date": "05/05/2020",
"tenant_same_property_renewal": "Yes",
"new_build_handover_date": "01/01/2019"
} }
} }

179
spec/fixtures/forms/test_aboutthislog.json vendored

@ -1,179 +0,0 @@
{
"form_type": "lettings",
"sections": {
"about_this_log": {
"label": "About this log",
"subsections": {
"about_this_log": {
"label": "About this log",
"pages": {
"gdpr_acceptance": {
"header": "DLUHC Privacy Notice Acceptance",
"description": "",
"questions": {
"gdpr_acceptance": {
"check_answer_label": "GDPR acceptance",
"header": "Has the tenant or buyer seen the DLUHC privacy notice?",
"hint_text": "",
"type": "radio",
"answer_options": {
"0": "Yes",
"1": "No"
}
}
},
"conditional_route_to": {
"organisation_details": { "gdpr_acceptance": "Yes" }
}
},
"gdpr_declined": {
"header": "You cannot use this service",
"hint_text": "",
"description": "We cannot accept data about a tenant or buyer unless they’ve seen the DLUHC privacy notice.",
"questions": {
}
},
"organisation_details": {
"header": "About this log",
"description": "Organisation Details",
"questions": {
"property_owner_organisation": {
"check_answer_label": "",
"header": "Which organisation owns this property?",
"hint_text": "",
"type": "radio",
"answer_options": {
"0": "A",
"1": "B"
}
},
"property_manager_organisation": {
"check_answer_label": "",
"header": "Which organisation manages this property?",
"hint_text": "",
"type": "radio",
"answer_options": {
"0": "A",
"1": "B"
}
}
}
},
"sale_or_letting": {
"header": "About this log",
"description": "Is this a sale or a letting?",
"questions": {
"sale_or_letting": {
"check_answer_label": "",
"header": "Is this a sale or a letting?",
"hint_text": "",
"type": "radio",
"answer_options": {
"0": "Sale",
"1": "Letting"
}
}
}
},
"tenant_same_property_renewal": {
"header": "About this log",
"description": "Is this a renewal to the same tenant in the same property?",
"questions": {
"tenant_same_property_renewal": {
"check_answer_label": "",
"header": "Is this a renewal to the same tenant in the same property?",
"hint_text": "",
"type": "radio",
"answer_options": {
"0": "Yes",
"1": "No"
}
}
},
"depends_on": { "sale_or_letting": "Letting" }
},
"tenancy_start_date": {
"header": "About this log",
"description": "",
"questions": {
"tenancy_start_date": {
"check_answer_label": "When is the tenancy start date?",
"header": "What is the tenancy start date?",
"hint_text": "For example, 27 3 2007",
"type": "date"
}
},
"depends_on": { "sale_or_letting": "Letting" }
},
"letting_type": {
"header": "About this log",
"description": "",
"questions": {
"rent_type": {
"check_answer_label": "What is the rent type?",
"header": "What is the rent type?",
"hint_text": "",
"type": "select",
"answer_options": {
"0": "Social Rent",
"1": "Affordable Rent",
"2": "London Affordable Rent",
"3": "Rent To Buy",
"4": "London Living Rent",
"5": "Other Intermediate Rent Product"
},
"conditional_for": {
"intermediate_rent_product_name": ["Other Intermediate Rent Product"]
}
},
"intermediate_rent_product_name": {
"check_answer_label": "Enter the product name",
"header": "What is intermediate rent product name?",
"type": "text"
},
"needs_type": {
"check_answer_label": "What is the needs type?",
"header": "What is the needs type?",
"hint_text": "",
"type": "select",
"answer_options": {
"0": "Supported Housing",
"1": "General Needs"
}
}
},
"depends_on": { "sale_or_letting": "Letting" }
},
"sale_completion_date": {
"header": "About this log",
"description": "",
"questions": {
"sale_completion_date": {
"check_answer_label": "What is the sale completion date?",
"header": "What is the sale completion date?",
"hint_text": "For example, 27 3 2007",
"type": "date"
}
},
"depends_on": { "sale_or_letting": "Sale" }
},
"purchaser_code": {
"header": "About this log",
"description": "",
"questions": {
"purchaser_code": {
"check_answer_label": "What is the purchaser code?",
"header": "What is the purchaser code?",
"hint_text": "",
"type": "text"
}
},
"depends_on": { "sale_or_letting": "Sale" }
}
}
}
}
}
}
}

2
spec/lib/tasks/form_definition_validator_spec.rb

@ -11,7 +11,7 @@ describe "rake form_definition:validate_all", type: :task do
end end
it "runs the validate task for each form definition in the project" do it "runs the validate task for each form definition in the project" do
expect(Rake::Task["form_definition:validate"]).to receive(:invoke).exactly(4).times expect(Rake::Task["form_definition:validate"]).to receive(:invoke).exactly(3).times
task.invoke task.invoke
end end
end end

Loading…
Cancel
Save