From ed8696d4c5bed8815afdc625e57940e9fec073dc Mon Sep 17 00:00:00 2001 From: Kat Date: Tue, 11 Jun 2024 15:14:42 +0100 Subject: [PATCH] Update displayed_answer_options for period --- app/models/form/lettings/questions/period.rb | 8 +++++ .../form/lettings/questions/period_spec.rb | 35 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/app/models/form/lettings/questions/period.rb b/app/models/form/lettings/questions/period.rb index 35b8a85dc..aefe8be84 100644 --- a/app/models/form/lettings/questions/period.rb +++ b/app/models/form/lettings/questions/period.rb @@ -26,4 +26,12 @@ class Form::Lettings::Questions::Period < ::Form::Question }.freeze QUESTION_NUMBER_FROM_YEAR = { 2023 => 92, 2024 => 91 }.freeze + + def displayed_answer_options(log, _user) + return ANSWER_OPTIONS if log.managing_organisation.nil? + + available_rent_periods = log.managing_organisation.rent_periods + + ANSWER_OPTIONS.select { |key, _| available_rent_periods.include?(key.to_i) } + end end diff --git a/spec/models/form/lettings/questions/period_spec.rb b/spec/models/form/lettings/questions/period_spec.rb index 629be7f28..4798903c8 100644 --- a/spec/models/form/lettings/questions/period_spec.rb +++ b/spec/models/form/lettings/questions/period_spec.rb @@ -8,4 +8,39 @@ RSpec.describe Form::Lettings::Questions::Period, type: :model do it "has the correct hint" do expect(question.hint_text).to eq("Select how often the household is charged. This may be different to how often they pay.") end + + it "has correct answer options" do + expect(question.answer_options).to eq( + { + "2" => { "value" => "Every 2 weeks" }, + "3" => { "value" => "Every 4 weeks" }, + "4" => { "value" => "Every calendar month" }, + "9" => { "value" => "Weekly for 46 weeks" }, + "8" => { "value" => "Weekly for 47 weeks" }, + "7" => { "value" => "Weekly for 48 weeks" }, + "6" => { "value" => "Weekly for 49 weeks" }, + "5" => { "value" => "Weekly for 50 weeks" }, + "11" => { "value" => "Weekly for 51 weeks" }, + "1" => { "value" => "Weekly for 52 weeks" }, + "10" => { "value" => "Weekly for 53 weeks" }, + }, + ) + end + + context "when managing organisation has rent periods" do + let(:managing_organisation) { create(:organisation, skip_rent_period_creation: true) } + let(:log) { create(:lettings_log, managing_organisation:) } + + before do + create(:organisation_rent_period, organisation: managing_organisation, rent_period: 3) + end + + it "has correct displayed answer options" do + expect(question.displayed_answer_options(log, nil)).to eq( + { + "3" => { "value" => "Every 4 weeks" }, + }, + ) + end + end end