diff --git a/app/models/form/sales/questions/buyer1_mortgage.rb b/app/models/form/sales/questions/buyer1_mortgage.rb index f226f956c..baaf00d4c 100644 --- a/app/models/form/sales/questions/buyer1_mortgage.rb +++ b/app/models/form/sales/questions/buyer1_mortgage.rb @@ -2,8 +2,8 @@ class Form::Sales::Questions::Buyer1Mortgage < ::Form::Question def initialize(id, hsh, page) super @id = "inc1mort" - @check_answer_label = "Buyer 1's income used for mortgage application" - @header = "Was buyer 1's income used for a mortgage application?" + @check_answer_label = "Buyer 1’s income used for mortgage application" + @header = "Was buyer 1’s income used for a mortgage application?" @type = "radio" @answer_options = ANSWER_OPTIONS @check_answers_card_number = 1 @@ -12,5 +12,13 @@ class Form::Sales::Questions::Buyer1Mortgage < ::Form::Question ANSWER_OPTIONS = { "1" => { "value" => "Yes" }, "2" => { "value" => "No" }, + "3" => { "value" => "Don’t know" }, }.freeze + + def displayed_answer_options(_log, _user = nil) + { + "1" => { "value" => "Yes" }, + "2" => { "value" => "No" }, + } + end end diff --git a/app/models/form/sales/questions/buyer1_previous_tenure.rb b/app/models/form/sales/questions/buyer1_previous_tenure.rb index f075e615c..b41fbbabd 100644 --- a/app/models/form/sales/questions/buyer1_previous_tenure.rb +++ b/app/models/form/sales/questions/buyer1_previous_tenure.rb @@ -2,8 +2,8 @@ class Form::Sales::Questions::Buyer1PreviousTenure < ::Form::Question def initialize(id, hsh, page) super @id = "prevten" - @check_answer_label = "Buyer 1's previous tenure" - @header = "What was buyer 1's previous tenure?" + @check_answer_label = "Buyer 1’s previous tenure" + @header = "What was buyer 1’s previous tenure?" @type = "radio" @answer_options = ANSWER_OPTIONS end diff --git a/app/models/form/sales/questions/buyer2_mortgage.rb b/app/models/form/sales/questions/buyer2_mortgage.rb index 5697aea15..884137df1 100644 --- a/app/models/form/sales/questions/buyer2_mortgage.rb +++ b/app/models/form/sales/questions/buyer2_mortgage.rb @@ -2,8 +2,8 @@ class Form::Sales::Questions::Buyer2Mortgage < ::Form::Question def initialize(id, hsh, page) super @id = "inc2mort" - @check_answer_label = "Buyer 2's income used for mortgage application" - @header = "Was buyer 2's income used for a mortgage application?" + @check_answer_label = "Buyer 2’s income used for mortgage application" + @header = "Was buyer 2’s income used for a mortgage application?" @type = "radio" @answer_options = ANSWER_OPTIONS @check_answers_card_number = 2 @@ -12,5 +12,13 @@ class Form::Sales::Questions::Buyer2Mortgage < ::Form::Question ANSWER_OPTIONS = { "1" => { "value" => "Yes" }, "2" => { "value" => "No" }, + "3" => { "value" => "Don’t know" }, }.freeze + + def displayed_answer_options(_log, _user = nil) + { + "1" => { "value" => "Yes" }, + "2" => { "value" => "No" }, + } + end end diff --git a/app/models/form/sales/questions/buyers_organisations.rb b/app/models/form/sales/questions/buyers_organisations.rb index 735a1563d..ec76aebcd 100644 --- a/app/models/form/sales/questions/buyers_organisations.rb +++ b/app/models/form/sales/questions/buyers_organisations.rb @@ -14,8 +14,18 @@ class Form::Sales::Questions::BuyersOrganisations < ::Form::Question "pregother" => { "value" => "Other private registered provider (PRP) - housing association" }, "pregla" => { "value" => "Local Authority" }, "pregghb" => { "value" => "Help to Buy Agent" }, + "pregblank" => { "value" => "None of the above" }, }.freeze + def displayed_answer_options(_log, _user = nil) + { + "pregyrha" => { "value" => "Their private registered provider (PRP) - housing association" }, + "pregother" => { "value" => "Other private registered provider (PRP) - housing association" }, + "pregla" => { "value" => "Local Authority" }, + "pregghb" => { "value" => "Help to Buy Agent" }, + } + end + def unanswered_error_message "At least one option must be selected of these four" end diff --git a/app/models/form/sales/questions/mortgageused.rb b/app/models/form/sales/questions/mortgageused.rb index 8c75750d8..ad18652c4 100644 --- a/app/models/form/sales/questions/mortgageused.rb +++ b/app/models/form/sales/questions/mortgageused.rb @@ -11,5 +11,13 @@ class Form::Sales::Questions::Mortgageused < ::Form::Question ANSWER_OPTIONS = { "1" => { "value" => "Yes" }, "2" => { "value" => "No" }, + "3" => { "value" => "Don’t know" }, }.freeze + + def displayed_answer_options(_log, _user = nil) + { + "1" => { "value" => "Yes" }, + "2" => { "value" => "No" }, + } + end end diff --git a/app/models/validations/sales/sale_information_validations.rb b/app/models/validations/sales/sale_information_validations.rb index c4ce023bb..a1deb94f5 100644 --- a/app/models/validations/sales/sale_information_validations.rb +++ b/app/models/validations/sales/sale_information_validations.rb @@ -46,7 +46,7 @@ module Validations::Sales::SaleInformationValidations def validate_discounted_ownership_value(record) return unless record.value && record.deposit && record.ownershipsch - return unless record.mortgage || record.mortgageused == 2 + return unless record.mortgage || record.mortgageused == 2 || record.mortgageused == 3 return unless record.discount || record.grant || record.type == 29 discount_amount = record.discount ? record.value * record.discount / 100 : 0 diff --git a/app/models/validations/sales/soft_validations.rb b/app/models/validations/sales/soft_validations.rb index c1704d948..a44e0a293 100644 --- a/app/models/validations/sales/soft_validations.rb +++ b/app/models/validations/sales/soft_validations.rb @@ -60,7 +60,7 @@ module Validations::Sales::SoftValidations end def shared_ownership_deposit_invalid? - return unless mortgage || mortgageused == 2 + return unless mortgage || mortgageused == 2 || mortgageused == 3 return unless cashdis || !is_type_discount? return unless deposit && value && equity diff --git a/db/migrate/20230301144555_add_pregblank.rb b/db/migrate/20230301144555_add_pregblank.rb new file mode 100644 index 000000000..308ca5e10 --- /dev/null +++ b/db/migrate/20230301144555_add_pregblank.rb @@ -0,0 +1,5 @@ +class AddPregblank < ActiveRecord::Migration[7.0] + def change + add_column :sales_logs, :pregblank, :integer + end +end diff --git a/db/schema.rb b/db/schema.rb index d1668b738..bc7a504a7 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2023_02_15_112932) do +ActiveRecord::Schema[7.0].define(version: 2023_03_01_144555) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -531,6 +531,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_02_15_112932) do t.integer "prevshared" t.integer "staircasesale" t.string "old_id" + t.integer "pregblank" t.index ["bulk_upload_id"], name: "index_sales_logs_on_bulk_upload_id" t.index ["created_by_id"], name: "index_sales_logs_on_created_by_id" t.index ["old_id"], name: "index_sales_logs_on_old_id", unique: true diff --git a/spec/models/form/sales/questions/buyer1_mortgage_spec.rb b/spec/models/form/sales/questions/buyer1_mortgage_spec.rb index 59ae45afc..df47cd1ce 100644 --- a/spec/models/form/sales/questions/buyer1_mortgage_spec.rb +++ b/spec/models/form/sales/questions/buyer1_mortgage_spec.rb @@ -6,6 +6,7 @@ RSpec.describe Form::Sales::Questions::Buyer1Mortgage, type: :model do let(:question_id) { nil } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } + let(:log) { create(:sales_log) } it "has correct page" do expect(question.page).to eq(page) @@ -16,11 +17,11 @@ RSpec.describe Form::Sales::Questions::Buyer1Mortgage, type: :model do end it "has the correct header" do - expect(question.header).to eq("Was buyer 1's income used for a mortgage application?") + expect(question.header).to eq("Was buyer 1’s income used for a mortgage application?") end it "has the correct check_answer_label" do - expect(question.check_answer_label).to eq("Buyer 1's income used for mortgage application") + expect(question.check_answer_label).to eq("Buyer 1’s income used for mortgage application") end it "has the correct type" do @@ -35,6 +36,14 @@ RSpec.describe Form::Sales::Questions::Buyer1Mortgage, type: :model do expect(question.answer_options).to eq({ "1" => { "value" => "Yes" }, "2" => { "value" => "No" }, + "3" => { "value" => "Don’t know" }, + }) + end + + it "has the correct displayed_answer_options" do + expect(question.displayed_answer_options(log)).to eq({ + "1" => { "value" => "Yes" }, + "2" => { "value" => "No" }, }) end diff --git a/spec/models/form/sales/questions/buyer1_previous_tenure_spec.rb b/spec/models/form/sales/questions/buyer1_previous_tenure_spec.rb index ae1da940a..a63b695a5 100644 --- a/spec/models/form/sales/questions/buyer1_previous_tenure_spec.rb +++ b/spec/models/form/sales/questions/buyer1_previous_tenure_spec.rb @@ -6,6 +6,7 @@ RSpec.describe Form::Sales::Questions::Buyer1PreviousTenure, type: :model do let(:question_id) { nil } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } + let(:log) { create(:sales_log) } it "has correct page" do expect(question.page).to eq(page) @@ -16,11 +17,11 @@ RSpec.describe Form::Sales::Questions::Buyer1PreviousTenure, type: :model do end it "has the correct header" do - expect(question.header).to eq("What was buyer 1's previous tenure?") + expect(question.header).to eq("What was buyer 1’s previous tenure?") end it "has the correct check_answer_label" do - expect(question.check_answer_label).to eq("Buyer 1's previous tenure") + expect(question.check_answer_label).to eq("Buyer 1’s previous tenure") end it "has the correct type" do diff --git a/spec/models/form/sales/questions/buyer2_mortgage_spec.rb b/spec/models/form/sales/questions/buyer2_mortgage_spec.rb index bb561af43..5bf83a2d0 100644 --- a/spec/models/form/sales/questions/buyer2_mortgage_spec.rb +++ b/spec/models/form/sales/questions/buyer2_mortgage_spec.rb @@ -6,6 +6,7 @@ RSpec.describe Form::Sales::Questions::Buyer2Mortgage, type: :model do let(:question_id) { nil } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } + let(:log) { create(:sales_log) } it "has correct page" do expect(question.page).to eq(page) @@ -16,11 +17,11 @@ RSpec.describe Form::Sales::Questions::Buyer2Mortgage, type: :model do end it "has the correct header" do - expect(question.header).to eq("Was buyer 2's income used for a mortgage application?") + expect(question.header).to eq("Was buyer 2’s income used for a mortgage application?") end it "has the correct check_answer_label" do - expect(question.check_answer_label).to eq("Buyer 2's income used for mortgage application") + expect(question.check_answer_label).to eq("Buyer 2’s income used for mortgage application") end it "has the correct type" do @@ -35,6 +36,14 @@ RSpec.describe Form::Sales::Questions::Buyer2Mortgage, type: :model do expect(question.answer_options).to eq({ "1" => { "value" => "Yes" }, "2" => { "value" => "No" }, + "3" => { "value" => "Don’t know" }, + }) + end + + it "has the correct displayed_answer_options" do + expect(question.displayed_answer_options(log)).to eq({ + "1" => { "value" => "Yes" }, + "2" => { "value" => "No" }, }) end diff --git a/spec/models/form/sales/questions/buyers_organisations_spec.rb b/spec/models/form/sales/questions/buyers_organisations_spec.rb index d9f61df5f..88af9917d 100644 --- a/spec/models/form/sales/questions/buyers_organisations_spec.rb +++ b/spec/models/form/sales/questions/buyers_organisations_spec.rb @@ -41,6 +41,18 @@ RSpec.describe Form::Sales::Questions::BuyersOrganisations, type: :model do it "has the correct answer_options" do expect(question.answer_options).to eq( + { + "pregyrha" => { "value" => "Their private registered provider (PRP) - housing association" }, + "pregother" => { "value" => "Other private registered provider (PRP) - housing association" }, + "pregla" => { "value" => "Local Authority" }, + "pregghb" => { "value" => "Help to Buy Agent" }, + "pregblank" => { "value" => "None of the above" }, + }, + ) + end + + it "has the correct displayed_answer_options" do + expect(question.displayed_answer_options(FactoryBot.create(:sales_log))).to eq( { "pregyrha" => { "value" => "Their private registered provider (PRP) - housing association" }, "pregother" => { "value" => "Other private registered provider (PRP) - housing association" }, diff --git a/spec/models/form/sales/questions/mortgageused_spec.rb b/spec/models/form/sales/questions/mortgageused_spec.rb index e958de8ea..a31f063c9 100644 --- a/spec/models/form/sales/questions/mortgageused_spec.rb +++ b/spec/models/form/sales/questions/mortgageused_spec.rb @@ -6,6 +6,7 @@ RSpec.describe Form::Sales::Questions::Mortgageused, type: :model do let(:question_id) { nil } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } + let(:log) { create(:sales_log) } it "has correct page" do expect(question.page).to eq(page) @@ -35,6 +36,7 @@ RSpec.describe Form::Sales::Questions::Mortgageused, type: :model do expect(question.answer_options).to eq({ "1" => { "value" => "Yes" }, "2" => { "value" => "No" }, + "3" => { "value" => "Don’t know" }, }) end @@ -45,4 +47,11 @@ RSpec.describe Form::Sales::Questions::Mortgageused, type: :model do it "has the correct hint" do expect(question.hint_text).to be_nil end + + it "has the correct displayed_answer_options" do + expect(question.displayed_answer_options(log)).to eq({ + "1" => { "value" => "Yes" }, + "2" => { "value" => "No" }, + }) + end end