From 201376deb9fc9cad943b292d668291b6972db54a Mon Sep 17 00:00:00 2001 From: Arthur Campbell Date: Tue, 7 Mar 2023 15:10:19 +0000 Subject: [PATCH] create question for buyer 2 nationality and associated test file --- .../form/sales/pages/buyer2_nationality.rb | 2 +- .../sales/questions/buyer2_nationality.rb | 25 ++++++++ .../questions/buyer2_nationality_spec.rb | 63 +++++++++++++++++++ 3 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 app/models/form/sales/questions/buyer2_nationality.rb create mode 100644 spec/models/form/sales/questions/buyer2_nationality_spec.rb diff --git a/app/models/form/sales/pages/buyer2_nationality.rb b/app/models/form/sales/pages/buyer2_nationality.rb index 271cd394d..3771fe331 100644 --- a/app/models/form/sales/pages/buyer2_nationality.rb +++ b/app/models/form/sales/pages/buyer2_nationality.rb @@ -6,6 +6,6 @@ class Form::Sales::Pages::Buyer2Nationality < ::Form::Page end def questions - @questions ||= [Form::Sales::Questions::NationalityBuyer2.new(nil, nil, self)] + @questions ||= [Form::Sales::Questions::Buyer2Nationality.new(nil, nil, self)] end end diff --git a/app/models/form/sales/questions/buyer2_nationality.rb b/app/models/form/sales/questions/buyer2_nationality.rb new file mode 100644 index 000000000..c905564d2 --- /dev/null +++ b/app/models/form/sales/questions/buyer2_nationality.rb @@ -0,0 +1,25 @@ +class Form::Sales::Questions::Buyer2Nationality < ::Form::Question + def initialize(id, hsh, page) + super + @id = "nationalbuy2" + @check_answer_label = "Buyer 2’s nationality" + @header = "What is buyer 2’s nationality?" + @type = "radio" + @answer_options = ANSWER_OPTIONS + @check_answers_card_number = 2 + @inferred_check_answers_value = [{ + "condition" => { + "national" => 13, + }, + "value" => "Prefers not to say", + }] + end + + ANSWER_OPTIONS = { + "18" => { "value" => "United Kingdom" }, + "17" => { "value" => "Republic of Ireland" }, + "19" => { "value" => "European Economic Area (EEA), excluding ROI" }, + "12" => { "value" => "Other" }, + "13" => { "value" => "Buyer prefers not to say" }, + }.freeze +end diff --git a/spec/models/form/sales/questions/buyer2_nationality_spec.rb b/spec/models/form/sales/questions/buyer2_nationality_spec.rb new file mode 100644 index 000000000..ed1f96c28 --- /dev/null +++ b/spec/models/form/sales/questions/buyer2_nationality_spec.rb @@ -0,0 +1,63 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Questions::Buyer2Nationality, type: :model do + subject(:question) { described_class.new(nil, nil, page) } + + let(:page) { instance_double(Form::Page) } + + it "has correct page" do + expect(question.page).to be page + end + + it "has the correct id" do + expect(question.id).to eq "nationalbuy2" + end + + it "has the correct header" do + expect(question.header).to eq "What is buyer 2’s nationality?" + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq "Buyer 2’s nationality" + end + + it "has the correct type" do + expect(question.type).to eq "radio" + end + + it "is not marked as derived" do + expect(question.derived?).to be false + end + + it "has the correct hint" do + expect(question.hint_text).to be nil + end + + it "has the correct answer_options" do + expect(question.answer_options).to eq({ + "18" => { "value" => "United Kingdom" }, + "17" => { "value" => "Republic of Ireland" }, + "19" => { "value" => "European Economic Area (EEA), excluding ROI" }, + "12" => { "value" => "Other" }, + "13" => { "value" => "Buyer prefers not to say" }, + }) + end + + it "has correct conditional for" do + expect(question.conditional_for).to be_nil + end + + it "has correct hidden in check answers" do + expect(question.hidden_in_check_answers).to be_nil + end + + it "has the correct check_answers_card_number" do + expect(question.check_answers_card_number).to be 2 + end + + it "has the correct inferred_check_answers_value" do + expect(question.inferred_check_answers_value).to eq([ + { "condition" => { "national" => 13 }, "value" => "Prefers not to say" }, + ]) + end +end