diff --git a/app/models/form/lettings/questions/declaration.rb b/app/models/form/lettings/questions/declaration.rb index 03fc72f4a..4805a9f1e 100644 --- a/app/models/form/lettings/questions/declaration.rb +++ b/app/models/form/lettings/questions/declaration.rb @@ -6,10 +6,17 @@ class Form::Lettings::Questions::Declaration < ::Form::Question @header = "Declaration" @type = "checkbox" @check_answers_card_number = 0 - @top_guidance_partial = "privacy_notice_tenant" - @answer_options = ANSWER_OPTIONS + @top_guidance_partial = form.start_year_after_2024? ? "privacy_notice_tenant_2024" : "privacy_notice_tenant" @question_number = 30 end - ANSWER_OPTIONS = { "declaration" => { "value" => "The tenant has seen the DLUHC privacy notice" } }.freeze + def answer_options + declaration_text = if form.start_year_after_2024? + "The tenant has seen or been given access to the DLUHC privacy notice" + else + "The tenant has seen the DLUHC privacy notice" + end + + { "declaration" => { "value" => declaration_text } }.freeze + end end diff --git a/app/models/form/sales/questions/privacy_notice.rb b/app/models/form/sales/questions/privacy_notice.rb index d440e414b..62eab5d8f 100644 --- a/app/models/form/sales/questions/privacy_notice.rb +++ b/app/models/form/sales/questions/privacy_notice.rb @@ -5,12 +5,17 @@ class Form::Sales::Questions::PrivacyNotice < ::Form::Question @check_answer_label = "Buyer has seen the privacy notice?" @header = "Declaration" @type = "checkbox" - @answer_options = ANSWER_OPTIONS - @top_guidance_partial = "privacy_notice_buyer" + @top_guidance_partial = form.start_year_after_2024? ? "privacy_notice_buyer_2024" : "privacy_notice_buyer" @question_number = 19 end - ANSWER_OPTIONS = { - "privacynotice" => { "value" => "The buyer has seen the DLUHC privacy notice" }, - }.freeze + def answer_options + declaration_text = if form.start_year_after_2024? + "The buyer has seen or been given access to the DLUHC privacy notice" + else + "The buyer has seen the DLUHC privacy notice" + end + + { "privacynotice" => { "value" => declaration_text } }.freeze + end end diff --git a/app/views/form/guidance/_privacy_notice_buyer_2024.erb b/app/views/form/guidance/_privacy_notice_buyer_2024.erb new file mode 100644 index 000000000..9977bf20b --- /dev/null +++ b/app/views/form/guidance/_privacy_notice_buyer_2024.erb @@ -0,0 +1 @@ +

Make sure the buyer has seen or been given access to <%= govuk_link_to "the Department for Levelling Up, Housing & Communities (DLUHC) privacy notice", privacy_notice_path, target: :_blank %> before completing this log. This is a legal requirement under data protection legislation.

diff --git a/app/views/form/guidance/_privacy_notice_tenant_2024.erb b/app/views/form/guidance/_privacy_notice_tenant_2024.erb new file mode 100644 index 000000000..3007c8904 --- /dev/null +++ b/app/views/form/guidance/_privacy_notice_tenant_2024.erb @@ -0,0 +1 @@ +

Make sure the lead tenant has seen or been given access to <%= govuk_link_to "the Department for Levelling Up, Housing & Communities (DLUHC) privacy notice", privacy_notice_path, target: :_blank %> before completing this log. This is a legal requirement under data protection legislation.

diff --git a/spec/models/form/lettings/questions/declaration_spec.rb b/spec/models/form/lettings/questions/declaration_spec.rb new file mode 100644 index 000000000..4a22ea453 --- /dev/null +++ b/spec/models/form/lettings/questions/declaration_spec.rb @@ -0,0 +1,81 @@ +require "rails_helper" + +RSpec.describe Form::Lettings::Questions::Declaration, type: :model do + subject(:question) { described_class.new(question_id, question_definition, page) } + + let(:question_id) { nil } + let(:question_definition) { nil } + let(:page) { instance_double(Form::Page) } + let(:subsection) { instance_double(Form::Subsection) } + let(:form) { instance_double(Form) } + + before do + allow(form).to receive(:start_year_after_2024?) + allow(page).to receive(:subsection).and_return(subsection) + allow(subsection).to receive(:form).and_return(form) + end + + it "has correct page" do + expect(question.page).to eq(page) + end + + it "has the correct id" do + expect(question.id).to eq("declaration") + end + + it "has the correct header" do + expect(question.header).to eq("Declaration") + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Tenant has seen the privacy notice") + end + + it "has the correct type" do + expect(question.type).to eq("checkbox") + 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 + + context "when the form year is before 2024" do + before do + allow(form).to receive(:start_year_after_2024?).and_return(false) + end + + it "has the correct answer_options" do + expect(question.answer_options).to eq({ + "declaration" => { "value" => "The tenant has seen the DLUHC privacy notice" }, + }) + end + + it "uses the expected top guidance partial" do + expect(question.top_guidance_partial).to eq("privacy_notice_tenant") + end + end + + context "when the form year is >= 2024" do + before do + allow(form).to receive(:start_year_after_2024?).and_return(true) + end + + it "has the correct answer_options" do + expect(question.answer_options).to eq({ + "declaration" => { "value" => "The tenant has seen or been given access to the DLUHC privacy notice" }, + }) + end + + it "uses the expected top guidance partial" do + expect(question.top_guidance_partial).to eq("privacy_notice_tenant_2024") + end + end + + it "returns correct unanswered_error_message" do + expect(question.unanswered_error_message).to eq("You must show the DLUHC privacy notice to the tenant before you can submit this log.") + end +end diff --git a/spec/models/form/sales/questions/privacy_notice_spec.rb b/spec/models/form/sales/questions/privacy_notice_spec.rb index 1fec22b6e..c37f6f920 100644 --- a/spec/models/form/sales/questions/privacy_notice_spec.rb +++ b/spec/models/form/sales/questions/privacy_notice_spec.rb @@ -6,6 +6,14 @@ RSpec.describe Form::Sales::Questions::PrivacyNotice, type: :model do let(:question_id) { nil } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } + let(:subsection) { instance_double(Form::Subsection) } + let(:form) { instance_double(Form) } + + before do + allow(form).to receive(:start_year_after_2024?) + allow(page).to receive(:subsection).and_return(subsection) + allow(subsection).to receive(:form).and_return(form) + end it "has correct page" do expect(question.page).to eq(page) @@ -35,10 +43,36 @@ RSpec.describe Form::Sales::Questions::PrivacyNotice, type: :model do expect(question.hint_text).to be_nil end - it "has the correct answer_options" do - expect(question.answer_options).to eq({ - "privacynotice" => { "value" => "The buyer has seen the DLUHC privacy notice" }, - }) + context "when the form year is before 2024" do + before do + allow(form).to receive(:start_year_after_2024?).and_return(false) + end + + it "has the correct answer_options" do + expect(question.answer_options).to eq({ + "privacynotice" => { "value" => "The buyer has seen the DLUHC privacy notice" }, + }) + end + + it "uses the expected top guidance partial" do + expect(question.top_guidance_partial).to eq("privacy_notice_buyer") + end + end + + context "when the form year is >= 2024" do + before do + allow(form).to receive(:start_year_after_2024?).and_return(true) + end + + it "has the correct answer_options" do + expect(question.answer_options).to eq({ + "privacynotice" => { "value" => "The buyer has seen or been given access to the DLUHC privacy notice" }, + }) + end + + it "uses the expected top guidance partial" do + expect(question.top_guidance_partial).to eq("privacy_notice_buyer_2024") + end end it "returns correct unanswered_error_message" do