From be2cf2561d603faf9729713433fb9412c401d77d Mon Sep 17 00:00:00 2001 From: baarkerlounger Date: Thu, 24 Feb 2022 17:07:46 +0000 Subject: [PATCH] Gender chars instead of ints --- .../validations/household_validations.rb | 6 +- config/forms/2021_2022.json | 64 +++++++++---------- db/migrate/20220221181805_integer_fields.rb | 32 ---------- db/schema.rb | 16 ++--- spec/factories/case_log.rb | 6 +- spec/features/form/check_answers_page_spec.rb | 8 +-- spec/features/form/page_routing_spec.rb | 2 +- spec/features/form/saving_data_spec.rb | 4 +- spec/fixtures/complete_case_log.json | 16 ++--- spec/fixtures/exports/case_logs.xml | 4 +- spec/fixtures/forms/2021_2022.json | 18 +++--- spec/models/case_log_spec.rb | 2 +- .../validations/household_validations_spec.rb | 20 +++--- 13 files changed, 83 insertions(+), 115 deletions(-) diff --git a/app/models/validations/household_validations.rb b/app/models/validations/household_validations.rb index 0c4f2ca40..7b0595ac2 100644 --- a/app/models/validations/household_validations.rb +++ b/app/models/validations/household_validations.rb @@ -101,7 +101,7 @@ private (1..8).any? do |n| next if record["sex#{n}"].nil? || record["age#{n}"].nil? - (record["sex#{n}"])&.zero? && record["age#{n}"] >= 16 && record["age#{n}"] <= 50 + (record["sex#{n}"]) == "F" && record["age#{n}"] >= 16 && record["age#{n}"] <= 50 end end @@ -160,10 +160,10 @@ private economic_status = record.public_send("ecstat#{person_num}") return unless age && economic_status && gender - if gender == 1 && economic_status == 4 && age < 65 + if gender == "M" && economic_status == 4 && age < 65 record.errors.add "age#{person_num}", I18n.t("validations.household.age.retired_male") end - if gender && gender.zero? && economic_status == 4 && age < 60 + if gender == "F" && economic_status == 4 && age < 60 record.errors.add "age#{person_num}", I18n.t("validations.household.age.retired_female") end end diff --git a/config/forms/2021_2022.json b/config/forms/2021_2022.json index e122924d1..8845c4c8c 100644 --- a/config/forms/2021_2022.json +++ b/config/forms/2021_2022.json @@ -1136,16 +1136,16 @@ "hint_text": "", "type": "radio", "answer_options": { - "0": { + "F": { "value": "Female" }, - "1": { + "M": { "value": "Male" }, - "2": { + "X": { "value": "Non-binary" }, - "3": { + "R": { "value": "Prefer not to say" } } @@ -1427,16 +1427,16 @@ "hint_text": "", "type": "radio", "answer_options": { - "0": { + "F": { "value": "Female" }, - "1": { + "M": { "value": "Male" }, - "2": { + "X": { "value": "Non-binary" }, - "3": { + "R": { "value": "Prefer not to say" } } @@ -1518,16 +1518,16 @@ "hint_text": "", "type": "radio", "answer_options": { - "0": { + "F": { "value": "Female" }, - "1": { + "M": { "value": "Male" }, - "2": { + "X": { "value": "Non-binary" }, - "3": { + "R": { "value": "Prefer not to say" } } @@ -1609,16 +1609,16 @@ "hint_text": "", "type": "radio", "answer_options": { - "0": { + "F": { "value": "Female" }, - "1": { + "M": { "value": "Male" }, - "2": { + "X": { "value": "Non-binary" }, - "3": { + "R": { "value": "Prefer not to say" } } @@ -1700,16 +1700,16 @@ "hint_text": "", "type": "radio", "answer_options": { - "0": { + "F": { "value": "Female" }, - "1": { + "M": { "value": "Male" }, - "2": { + "X": { "value": "Non-binary" }, - "3": { + "R": { "value": "Prefer not to say" } } @@ -1791,16 +1791,16 @@ "hint_text": "", "type": "radio", "answer_options": { - "0": { + "F": { "value": "Female" }, - "1": { + "M": { "value": "Male" }, - "2": { + "X": { "value": "Non-binary" }, - "3": { + "R": { "value": "Prefer not to say" } } @@ -1881,16 +1881,16 @@ "hint_text": "", "type": "radio", "answer_options": { - "0": { + "F": { "value": "Female" }, - "1": { + "M": { "value": "Male" }, - "2": { + "X": { "value": "Non-binary" }, - "3": { + "R": { "value": "Prefer not to say" } } @@ -1971,16 +1971,16 @@ "hint_text": "", "type": "radio", "answer_options": { - "0": { + "F": { "value": "Female" }, - "1": { + "M": { "value": "Male" }, - "2": { + "X": { "value": "Non-binary" }, - "3": { + "R": { "value": "Prefer not to say" } } diff --git a/db/migrate/20220221181805_integer_fields.rb b/db/migrate/20220221181805_integer_fields.rb index 6775b550e..69b9c4764 100644 --- a/db/migrate/20220221181805_integer_fields.rb +++ b/db/migrate/20220221181805_integer_fields.rb @@ -1,22 +1,6 @@ class IntegerFields < ActiveRecord::Migration[7.0] def up change_table :case_logs, bulk: true do |t| - t.remove :sex1 - t.column :sex1, :integer - t.remove :sex2 - t.column :sex2, :integer - t.remove :sex3 - t.column :sex3, :integer - t.remove :sex4 - t.column :sex4, :integer - t.remove :sex5 - t.column :sex5, :integer - t.remove :sex6 - t.column :sex6, :integer - t.remove :sex7 - t.column :sex7, :integer - t.remove :sex8 - t.column :sex8, :integer t.remove :relat2 t.column :relat2, :integer t.remove :relat3 @@ -42,22 +26,6 @@ class IntegerFields < ActiveRecord::Migration[7.0] def down change_table :case_logs, bulk: true do |t| - t.remove :sex1 - t.column :sex1, :string - t.remove :sex2 - t.column :sex2, :string - t.remove :sex3 - t.column :sex3, :string - t.remove :sex4 - t.column :sex4, :string - t.remove :sex5 - t.column :sex5, :string - t.remove :sex6 - t.column :sex6, :string - t.remove :sex7 - t.column :sex7, :string - t.remove :sex8 - t.column :sex8, :string t.remove :relat2 t.column :relat2, :string t.remove :relat3 diff --git a/db/schema.rb b/db/schema.rb index 2974fc952..058a2593e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -179,14 +179,14 @@ ActiveRecord::Schema[7.0].define(version: 202202071123100) do t.boolean "is_previous_la_inferred" t.integer "letting_allocation_unknown" t.integer "renttype" - t.integer "sex1" - t.integer "sex2" - t.integer "sex3" - t.integer "sex4" - t.integer "sex5" - t.integer "sex6" - t.integer "sex7" - t.integer "sex8" + t.string "sex1" + t.string "sex2" + t.string "sex3" + t.string "sex4" + t.string "sex5" + t.string "sex6" + t.string "sex7" + t.string "sex8" t.integer "relat2" t.integer "relat3" t.integer "relat4" diff --git a/spec/factories/case_log.rb b/spec/factories/case_log.rb index 897f5e082..4af3601e1 100644 --- a/spec/factories/case_log.rb +++ b/spec/factories/case_log.rb @@ -25,7 +25,7 @@ FactoryBot.define do trait :conditional_section_complete do tenant_code { "TH356" } age1 { 34 } - sex1 { 1 } + sex1 { "M" } ethnic { 2 } national { 4 } ecstat1 { 2 } @@ -36,7 +36,7 @@ FactoryBot.define do tenant_code { "BZ737" } postcode { "NW1 7TY" } age1 { 35 } - sex1 { 0 } + sex1 { "F" } ethnic { 2 } national { 4 } prevten { 6 } @@ -45,7 +45,7 @@ FactoryBot.define do hhmemb { 2 } relat2 { 0 } age2 { 32 } - sex2 { 1 } + sex2 { "M" } ecstat2 { 5 } homeless { 1 } underoccupation_benefitcap { 0 } diff --git a/spec/features/form/check_answers_page_spec.rb b/spec/features/form/check_answers_page_spec.rb index 790de7333..c86b57970 100644 --- a/spec/features/form/check_answers_page_spec.rb +++ b/spec/features/form/check_answers_page_spec.rb @@ -61,7 +61,7 @@ RSpec.describe "Form Check Answers Page" do it "displays answers given by the user for the question in the subsection" do fill_in_number_question(empty_case_log.id, "age1", 28, "person-1-age") - choose("case-log-sex1-2-field") + choose("case-log-sex1-x-field") click_button("Save and continue") visit("/logs/#{empty_case_log.id}/#{subsection}/check-answers") expect(page).to have_content("28") @@ -136,7 +136,7 @@ RSpec.describe "Form Check Answers Page" do managing_organisation: user.organisation, tenant_code: "123", age1: 35, - sex1: 1, + sex1: "M", other_hhmemb: 0, ) end @@ -149,7 +149,7 @@ RSpec.describe "Form Check Answers Page" do managing_organisation: user.organisation, tenant_code: "123", age1: 35, - sex1: 1, + sex1: "M", other_hhmemb: 0, armedforces: 3, illness: 0, @@ -164,7 +164,7 @@ RSpec.describe "Form Check Answers Page" do managing_organisation: user.organisation, tenant_code: "123", age1: 35, - sex1: 1, + sex1: "M", other_hhmemb: 0, armedforces: 3, illness: 0, diff --git a/spec/features/form/page_routing_spec.rb b/spec/features/form/page_routing_spec.rb index 596362467..829532831 100644 --- a/spec/features/form/page_routing_spec.rb +++ b/spec/features/form/page_routing_spec.rb @@ -36,7 +36,7 @@ RSpec.describe "Form Page Routing" do it "can route based on multiple conditions", js: true do visit("/logs/#{id}/person-1-gender") - choose("case-log-sex1-0-field", allow_label_click: true) + choose("case-log-sex1-f-field", allow_label_click: true) click_button("Save and continue") expect(page).to have_current_path("/logs/#{id}/household-number-of-other-members") visit("/logs/#{id}/conditional-question") diff --git a/spec/features/form/saving_data_spec.rb b/spec/features/form/saving_data_spec.rb index f713dd316..9bea5515d 100644 --- a/spec/features/form/saving_data_spec.rb +++ b/spec/features/form/saving_data_spec.rb @@ -25,7 +25,7 @@ RSpec.describe "Form Saving Data" do { tenant_code: { type: "text", answer: "BZ737", path: "tenant_code" }, age1: { type: "numeric", answer: 25, path: "person_1_age" }, - sex1: { type: "radio", answer: { 0 => "Female" }, path: "person_1_gender" }, + sex1: { type: "radio", answer: { "F" => "Female" }, path: "person_1_gender" }, other_hhmemb: { type: "numeric", answer: 2, path: "household_number_of_other_members" }, } end @@ -45,7 +45,7 @@ RSpec.describe "Form Saving Data" do when "text" fill_in("case-log-#{question.to_s.dasherize}-field", with: answer) when "radio" - choose("case-log-#{question.to_s.dasherize}-#{hsh[:answer].keys.first}-field") + choose("case-log-#{question.to_s.dasherize}-#{hsh[:answer].keys.first.downcase}-field") else fill_in("case-log-#{question.to_s.dasherize}-field", with: answer) end diff --git a/spec/fixtures/complete_case_log.json b/spec/fixtures/complete_case_log.json index 69931ecfc..e4f573132 100644 --- a/spec/fixtures/complete_case_log.json +++ b/spec/fixtures/complete_case_log.json @@ -2,7 +2,7 @@ "case_log": { "tenant_code": "T657", "age1": 35, - "sex1": 0, + "sex1": "F", "ethnic": 0, "national": 0, "prevten": 6, @@ -13,31 +13,31 @@ "hhmemb": 8, "relat2": 0, "age2": 32, - "sex2": 1, + "sex2": "M", "ecstat2": 5, "relat3": 1, "age3": 12, - "sex3": 1, + "sex3": "M", "ecstat3": 8, "relat4": 1, "age4": 12, - "sex4": 0, + "sex4": "F", "ecstat4": 8, "relat5": 1, "age5": 10, - "sex5": 2, + "sex5": "X", "ecstat5": 8, "relat6": 1, "age6": 5, - "sex6": 3, + "sex6": "R", "ecstat6": 8, "relat7": 1, "age7": 5, - "sex7": 3, + "sex7": "R", "ecstat7": 8, "relat8": 1, "age8": 2, - "sex8": 3, + "sex8": "R", "ecstat8": 8, "homeless": 2, "reason": 1, diff --git a/spec/fixtures/exports/case_logs.xml b/spec/fixtures/exports/case_logs.xml index 6a813f5c3..12ba8c470 100644 --- a/spec/fixtures/exports/case_logs.xml +++ b/spec/fixtures/exports/case_logs.xml @@ -141,8 +141,8 @@ false 2 - 0 - 1 + F + M diff --git a/spec/fixtures/forms/2021_2022.json b/spec/fixtures/forms/2021_2022.json index cabe7025f..db9d8a78b 100644 --- a/spec/fixtures/forms/2021_2022.json +++ b/spec/fixtures/forms/2021_2022.json @@ -48,16 +48,16 @@ "header": "Which of these best describes the tenant’s gender identity?", "type": "radio", "answer_options": { - "0": { + "F": { "value": "Female" }, - "1": { + "M": { "value": "Male" }, - "2": { + "X": { "value": "Non-binary" }, - "3": { + "R": { "value": "Prefer not to say" } } @@ -109,16 +109,16 @@ "header": "Which of these best describes person 2’s gender identity?", "type": "radio", "answer_options": { - "0": { + "F": { "value": "Female" }, - "1": { + "M": { "value": "Male" }, - "2": { + "X": { "value": "Non-binary" }, - "3": { + "R": { "value": "Prefer not to say" } } @@ -438,7 +438,7 @@ } } }, - "depends_on": [{ "preg_occ": 1, "sex1": 1 }] + "depends_on": [{ "preg_occ": 1, "sex1": "M" }] } } } diff --git a/spec/models/case_log_spec.rb b/spec/models/case_log_spec.rb index 9acc164d4..940d01fc6 100644 --- a/spec/models/case_log_spec.rb +++ b/spec/models/case_log_spec.rb @@ -573,7 +573,7 @@ RSpec.describe CaseLog do end it "does clear the value for answers that do not apply for invalidated page" do - case_log.update!({ wchair: 1, sex2: 0, age2: 33 }) + case_log.update!({ wchair: 1, sex2: "F", age2: 33 }) case_log.update!({ cbl: 0 }) case_log.update!({ preg_occ: 0 }) diff --git a/spec/models/validations/household_validations_spec.rb b/spec/models/validations/household_validations_spec.rb index 543692f04..12d692e9c 100644 --- a/spec/models/validations/household_validations_spec.rb +++ b/spec/models/validations/household_validations_spec.rb @@ -115,7 +115,7 @@ RSpec.describe Validations::HouseholdValidations do context "when there are no female tenants" do it "validates that pregnancy cannot be yes" do record.preg_occ = 0 - record.sex1 = 1 + record.sex1 = "M" household_validator.validate_pregnancy(record) expect(record.errors["preg_occ"]) .to include(match I18n.t("validations.household.preg_occ.no_female")) @@ -123,7 +123,7 @@ RSpec.describe Validations::HouseholdValidations do it "validates that pregnancy cannot be prefer not to say" do record.preg_occ = 2 - record.sex1 = 1 + record.sex1 = "M" household_validator.validate_pregnancy(record) expect(record.errors["preg_occ"]) .to include(match I18n.t("validations.household.preg_occ.no_female")) @@ -134,7 +134,7 @@ RSpec.describe Validations::HouseholdValidations do context "but they are older than 50" do it "validates that pregnancy cannot be yes" do record.preg_occ = 0 - record.sex1 = 0 + record.sex1 = "F" record.age1 = 51 household_validator.validate_pregnancy(record) expect(record.errors["preg_occ"]) @@ -145,7 +145,7 @@ RSpec.describe Validations::HouseholdValidations do context "and they are the main tenant and under 51" do it "pregnancy can be yes" do record.preg_occ = 0 - record.sex1 = 0 + record.sex1 = "F" record.age1 = 32 household_validator.validate_pregnancy(record) expect(record.errors["preg_occ"]).to be_empty @@ -155,9 +155,9 @@ RSpec.describe Validations::HouseholdValidations do context "and they are another household member and under 51" do it "pregnancy can be yes" do record.preg_occ = 0 - record.sex1 = 1 + record.sex1 = "M" record.age1 = 25 - record.sex3 = 0 + record.sex3 = "F" record.age3 = 32 household_validator.validate_pregnancy(record) expect(record.errors["preg_occ"]).to be_empty @@ -400,7 +400,7 @@ RSpec.describe Validations::HouseholdValidations do context "when the household contains a retired male" do it "validates that person must be over 65" do record.age2 = 64 - record.sex2 = 1 + record.sex2 = "M" record.ecstat2 = 4 household_validator.validate_household_number_of_other_members(record) expect(record.errors["age2"]) @@ -409,7 +409,7 @@ RSpec.describe Validations::HouseholdValidations do it "expects that person is over 65" do record.age2 = 66 - record.sex2 = 1 + record.sex2 = "M" record.ecstat2 = 4 household_validator.validate_household_number_of_other_members(record) household_validator.validate_household_number_of_other_members(record) @@ -420,7 +420,7 @@ RSpec.describe Validations::HouseholdValidations do context "when the household contains a retired female" do it "validates that person must be over 60" do record.age2 = 59 - record.sex2 = 0 + record.sex2 = "F" record.ecstat2 = 4 household_validator.validate_household_number_of_other_members(record) expect(record.errors["age2"]) @@ -429,7 +429,7 @@ RSpec.describe Validations::HouseholdValidations do it "expects that person is over 60" do record.age2 = 61 - record.sex2 = 0 + record.sex2 = "F" record.ecstat2 = 4 household_validator.validate_household_number_of_other_members(record) household_validator.validate_household_number_of_other_members(record)