From 6e283fa1e9b8552465fdc559d9cae6e7de7e60aa Mon Sep 17 00:00:00 2001 From: Kat Date: Fri, 17 Jun 2022 11:11:29 +0100 Subject: [PATCH] Add tests for setup section Co-authored-by: baarkerlounger --- .../form/setup/pages/needs_type_spec.rb | 37 ++++++++++++++ .../setup/pages/property_reference_spec.rb | 37 ++++++++++++++ spec/models/form/setup/pages/renewal_spec.rb | 37 ++++++++++++++ .../models/form/setup/pages/rent_type_spec.rb | 37 ++++++++++++++ .../setup/pages/tenancy_start_date_spec.rb | 37 ++++++++++++++ .../form/setup/pages/tenant_code_spec.rb | 37 ++++++++++++++ .../setup/questions/irproduct_other_spec.rb | 29 +++++++++++ .../form/setup/questions/needs_type_spec.rb | 36 ++++++++++++++ .../questions/property_reference_spec.rb | 37 ++++++++++++++ .../form/setup/questions/renewal_spec.rb | 40 ++++++++++++++++ .../form/setup/questions/rent_type_spec.rb | 48 +++++++++++++++++++ .../questions/tenancy_start_date_spec.rb | 29 +++++++++++ .../form/setup/questions/tenant_code_spec.rb | 37 ++++++++++++++ spec/models/form/setup/sections/setup_spec.rb | 29 +++++++++++ .../form/setup/subsections/setup.spec.rb | 25 ++++++++++ 15 files changed, 532 insertions(+) create mode 100644 spec/models/form/setup/pages/needs_type_spec.rb create mode 100644 spec/models/form/setup/pages/property_reference_spec.rb create mode 100644 spec/models/form/setup/pages/renewal_spec.rb create mode 100644 spec/models/form/setup/pages/rent_type_spec.rb create mode 100644 spec/models/form/setup/pages/tenancy_start_date_spec.rb create mode 100644 spec/models/form/setup/pages/tenant_code_spec.rb create mode 100644 spec/models/form/setup/questions/irproduct_other_spec.rb create mode 100644 spec/models/form/setup/questions/needs_type_spec.rb create mode 100644 spec/models/form/setup/questions/property_reference_spec.rb create mode 100644 spec/models/form/setup/questions/renewal_spec.rb create mode 100644 spec/models/form/setup/questions/rent_type_spec.rb create mode 100644 spec/models/form/setup/questions/tenancy_start_date_spec.rb create mode 100644 spec/models/form/setup/questions/tenant_code_spec.rb create mode 100644 spec/models/form/setup/sections/setup_spec.rb create mode 100644 spec/models/form/setup/subsections/setup.spec.rb diff --git a/spec/models/form/setup/pages/needs_type_spec.rb b/spec/models/form/setup/pages/needs_type_spec.rb new file mode 100644 index 000000000..ae1106129 --- /dev/null +++ b/spec/models/form/setup/pages/needs_type_spec.rb @@ -0,0 +1,37 @@ +require "rails_helper" + +RSpec.describe Form::Setup::Pages::NeedsType, type: :model do + subject(:page) { described_class.new(page_id, page_definition, subsection) } + + let(:page_id) { nil } + let(:page_definition) { nil } + let(:subsection) { instance_double(Form::Subsection) } + + it "has correct subsection" do + expect(page.subsection).to eq(subsection) + end + + it "has correct questions" do + expect(page.questions.map(&:id)).to eq(%w[needstype]) + end + + it "has the correct id" do + expect(page.id).to eq("needs_type") + end + + it "has the correct header" do + expect(page.header).to eq("") + end + + it "has the correct description" do + expect(page.description).to eq("") + end + + it "has the correct depends_on" do + expect(page.depends_on).to eq([{ "supported_housing_schemes_enabled?" => true }]) + end + + it "has the correct derived" do + expect(page.derived).to be true + end +end diff --git a/spec/models/form/setup/pages/property_reference_spec.rb b/spec/models/form/setup/pages/property_reference_spec.rb new file mode 100644 index 000000000..f347f7a55 --- /dev/null +++ b/spec/models/form/setup/pages/property_reference_spec.rb @@ -0,0 +1,37 @@ +require "rails_helper" + +RSpec.describe Form::Setup::Pages::PropertyReference, type: :model do + subject(:page) { described_class.new(page_id, page_definition, subsection) } + + let(:page_id) { nil } + let(:page_definition) { nil } + let(:subsection) { instance_double(Form::Subsection) } + + it "has correct subsection" do + expect(page.subsection).to eq(subsection) + end + + it "has correct questions" do + expect(page.questions.map(&:id)).to eq(%w[propcode]) + end + + it "has the correct id" do + expect(page.id).to eq("property_reference") + end + + it "has the correct header" do + expect(page.header).to eq("") + end + + it "has the correct description" do + expect(page.description).to eq("") + end + + it "has the correct depends_on" do + expect(page.depends_on).to be nil + end + + it "has the correct derived" do + expect(page.derived).to be nil + end +end diff --git a/spec/models/form/setup/pages/renewal_spec.rb b/spec/models/form/setup/pages/renewal_spec.rb new file mode 100644 index 000000000..86de88f0c --- /dev/null +++ b/spec/models/form/setup/pages/renewal_spec.rb @@ -0,0 +1,37 @@ +require "rails_helper" + +RSpec.describe Form::Setup::Pages::Renewal, type: :model do + subject(:page) { described_class.new(page_id, page_definition, subsection) } + + let(:page_id) { nil } + let(:page_definition) { nil } + let(:subsection) { instance_double(Form::Subsection) } + + it "has correct subsection" do + expect(page.subsection).to eq(subsection) + end + + it "has correct questions" do + expect(page.questions.map(&:id)).to eq(%w[renewal]) + end + + it "has the correct id" do + expect(page.id).to eq("renewal") + end + + it "has the correct header" do + expect(page.header).to eq("") + end + + it "has the correct description" do + expect(page.description).to eq("") + end + + it "has the correct depends_on" do + expect(page.depends_on).to be nil + end + + it "has the correct derived" do + expect(page.derived).to be nil + end +end diff --git a/spec/models/form/setup/pages/rent_type_spec.rb b/spec/models/form/setup/pages/rent_type_spec.rb new file mode 100644 index 000000000..f3604c7ac --- /dev/null +++ b/spec/models/form/setup/pages/rent_type_spec.rb @@ -0,0 +1,37 @@ +require "rails_helper" + +RSpec.describe Form::Setup::Pages::RentType, type: :model do + subject(:page) { described_class.new(page_id, page_definition, subsection) } + + let(:page_id) { nil } + let(:page_definition) { nil } + let(:subsection) { instance_double(Form::Subsection) } + + it "has correct subsection" do + expect(page.subsection).to eq(subsection) + end + + it "has correct questions" do + expect(page.questions.map(&:id)).to eq(%w[rent_type irproduct_other]) + end + + it "has the correct id" do + expect(page.id).to eq("rent_type") + end + + it "has the correct header" do + expect(page.header).to eq("") + end + + it "has the correct description" do + expect(page.description).to eq("") + end + + it "has the correct depends_on" do + expect(page.depends_on).to eq([{ "supported_housing_schemes_enabled?" => true }]) + end + + it "has the correct derived" do + expect(page.derived).to be true + end +end diff --git a/spec/models/form/setup/pages/tenancy_start_date_spec.rb b/spec/models/form/setup/pages/tenancy_start_date_spec.rb new file mode 100644 index 000000000..b4ebd2c36 --- /dev/null +++ b/spec/models/form/setup/pages/tenancy_start_date_spec.rb @@ -0,0 +1,37 @@ +require "rails_helper" + +RSpec.describe Form::Setup::Pages::TenancyStartDate, type: :model do + subject(:page) { described_class.new(page_id, page_definition, subsection) } + + let(:page_id) { nil } + let(:page_definition) { nil } + let(:subsection) { instance_double(Form::Subsection) } + + it "has correct subsection" do + expect(page.subsection).to eq(subsection) + end + + it "has correct questions" do + expect(page.questions.map(&:id)).to eq(%w[startdate]) + end + + it "has the correct id" do + expect(page.id).to eq("tenancy_start_date") + end + + it "has the correct header" do + expect(page.header).to be nil + end + + it "has the correct description" do + expect(page.description).to eq("") + end + + it "has the correct depends_on" do + expect(page.depends_on).to be nil + end + + it "has the correct derived" do + expect(page.derived).to be nil + end +end diff --git a/spec/models/form/setup/pages/tenant_code_spec.rb b/spec/models/form/setup/pages/tenant_code_spec.rb new file mode 100644 index 000000000..d544a4cec --- /dev/null +++ b/spec/models/form/setup/pages/tenant_code_spec.rb @@ -0,0 +1,37 @@ +require "rails_helper" + +RSpec.describe Form::Setup::Pages::TenantCode, type: :model do + subject(:page) { described_class.new(page_id, page_definition, subsection) } + + let(:page_id) { nil } + let(:page_definition) { nil } + let(:subsection) { instance_double(Form::Subsection) } + + it "has correct subsection" do + expect(page.subsection).to eq(subsection) + end + + it "has correct questions" do + expect(page.questions.map(&:id)).to eq(%w[tenant_code]) + end + + it "has the correct id" do + expect(page.id).to eq("tenant_code") + end + + it "has the correct header" do + expect(page.header).to eq("") + end + + it "has the correct description" do + expect(page.description).to eq("") + end + + it "has the correct depends_on" do + expect(page.depends_on).to be nil + end + + it "has the correct derived" do + expect(page.derived).to be nil + end +end diff --git a/spec/models/form/setup/questions/irproduct_other_spec.rb b/spec/models/form/setup/questions/irproduct_other_spec.rb new file mode 100644 index 000000000..4001ebfe3 --- /dev/null +++ b/spec/models/form/setup/questions/irproduct_other_spec.rb @@ -0,0 +1,29 @@ +require "rails_helper" + +RSpec.describe Form::Setup::Questions::IrproductOther, 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) } + + it "has correct page" do + expect(question.page).to eq(page) + end + + it "has the correct id" do + expect(question.id).to eq("irproduct_other") + end + + it "has the correct header" do + expect(question.header).to eq("Name of rent product") + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Product name") + end + + it "has the correct type" do + expect(question.type).to eq("text") + end +end diff --git a/spec/models/form/setup/questions/needs_type_spec.rb b/spec/models/form/setup/questions/needs_type_spec.rb new file mode 100644 index 000000000..feca18481 --- /dev/null +++ b/spec/models/form/setup/questions/needs_type_spec.rb @@ -0,0 +1,36 @@ +require "rails_helper" + +RSpec.describe Form::Setup::Questions::NeedsType, 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) } + + it "has correct page" do + expect(question.page).to eq(page) + end + + it "has the correct id" do + expect(question.id).to eq("needstype") + end + + it "has the correct header" do + expect(question.header).to eq("What is the needs type?") + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Needs type") + end + + it "has the correct type" do + expect(question.type).to eq("radio") + end + + it "has the correct answer_options" do + expect(question.answer_options).to eq({ + "1" => { "value" => "General needs" }, + "2" => { "value" => "Supported housing" }, + }) + end +end diff --git a/spec/models/form/setup/questions/property_reference_spec.rb b/spec/models/form/setup/questions/property_reference_spec.rb new file mode 100644 index 000000000..2cdcb9e2b --- /dev/null +++ b/spec/models/form/setup/questions/property_reference_spec.rb @@ -0,0 +1,37 @@ +require "rails_helper" + +RSpec.describe Form::Setup::Questions::PropertyReference, 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) } + + it "has correct page" do + expect(question.page).to eq(page) + end + + it "has the correct id" do + expect(question.id).to eq("propcode") + end + + it "has the correct header" do + expect(question.header).to eq("What is the property reference?") + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Property reference") + end + + it "has the correct type" do + expect(question.type).to eq("text") + end + + it "has the correct hint_text" do + expect(question.hint_text).to eq("This is how you usually refer to this property on your own systems.") + end + + it "has the correct width" do + expect(question.width).to eq(10) + end +end diff --git a/spec/models/form/setup/questions/renewal_spec.rb b/spec/models/form/setup/questions/renewal_spec.rb new file mode 100644 index 000000000..565d6c768 --- /dev/null +++ b/spec/models/form/setup/questions/renewal_spec.rb @@ -0,0 +1,40 @@ +require "rails_helper" + +RSpec.describe Form::Setup::Questions::Renewal, 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) } + + it "has correct page" do + expect(question.page).to eq(page) + end + + it "has the correct id" do + expect(question.id).to eq("renewal") + end + + it "has the correct header" do + expect(question.header).to eq("Is this letting a renewal?") + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Property renewal") + end + + it "has the correct type" do + expect(question.type).to eq("radio") + end + + it "has the correct hint_text" do + expect(question.hint_text).to eq("") + end + + it "has the correct answer_options" do + expect(question.answer_options).to eq({ + "1" => { "value" => "Yes" }, + "0" => { "value" => "No" }, + }) + end +end diff --git a/spec/models/form/setup/questions/rent_type_spec.rb b/spec/models/form/setup/questions/rent_type_spec.rb new file mode 100644 index 000000000..73dedeb40 --- /dev/null +++ b/spec/models/form/setup/questions/rent_type_spec.rb @@ -0,0 +1,48 @@ +require "rails_helper" + +RSpec.describe Form::Setup::Questions::RentType, 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) } + + it "has correct page" do + expect(question.page).to eq(page) + end + + it "has the correct id" do + expect(question.id).to eq("rent_type") + end + + it "has the correct header" do + expect(question.header).to eq("What is the rent type?") + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Rent type") + end + + it "has the correct type" do + expect(question.type).to eq("radio") + end + + it "has the correct hint_text" do + expect(question.hint_text).to eq("") + end + + it "has the correct conditional_for" do + expect(question.conditional_for).to eq({ "irproduct_other" => [5] }) + end + + it "has the correct answer_options" do + expect(question.answer_options).to eq({ + "1" => { "value" => "Affordable Rent" }, + "2" => { "value" => "London Affordable Rent" }, + "4" => { "value" => "London Living Rent" }, + "3" => { "value" => "Rent to Buy" }, + "0" => { "value" => "Social Rent" }, + "5" => { "value" => "Other intermediate rent product" }, + }) + end +end diff --git a/spec/models/form/setup/questions/tenancy_start_date_spec.rb b/spec/models/form/setup/questions/tenancy_start_date_spec.rb new file mode 100644 index 000000000..c1c861edb --- /dev/null +++ b/spec/models/form/setup/questions/tenancy_start_date_spec.rb @@ -0,0 +1,29 @@ +require "rails_helper" + +RSpec.describe Form::Setup::Questions::TenancyStartDate, 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) } + + it "has correct page" do + expect(question.page).to eq(page) + end + + it "has the correct id" do + expect(question.id).to eq("startdate") + end + + it "has the correct header" do + expect(question.header).to eq("What is the tenancy start date?") + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Tenancy start date") + end + + it "has the correct type" do + expect(question.type).to eq("date") + end +end diff --git a/spec/models/form/setup/questions/tenant_code_spec.rb b/spec/models/form/setup/questions/tenant_code_spec.rb new file mode 100644 index 000000000..3e9538cae --- /dev/null +++ b/spec/models/form/setup/questions/tenant_code_spec.rb @@ -0,0 +1,37 @@ +require "rails_helper" + +RSpec.describe Form::Setup::Questions::TenantCode, 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) } + + it "has correct page" do + expect(question.page).to eq(page) + end + + it "has the correct id" do + expect(question.id).to eq("tenant_code") + end + + it "has the correct header" do + expect(question.header).to eq("What is the tenant code?") + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Tenant code") + end + + it "has the correct type" do + expect(question.type).to eq("text") + end + + it "has the correct hint_text" do + expect(question.hint_text).to eq("This is how you usually refer to this tenancy on your own systems.") + end + + it "has the correct width" do + expect(question.width).to eq(10) + end +end diff --git a/spec/models/form/setup/sections/setup_spec.rb b/spec/models/form/setup/sections/setup_spec.rb new file mode 100644 index 000000000..39843e1ec --- /dev/null +++ b/spec/models/form/setup/sections/setup_spec.rb @@ -0,0 +1,29 @@ +require "rails_helper" + +RSpec.describe Form::Setup::Sections::Setup, type: :model do + subject(:setup) { described_class.new(section_id, section_definition, form) } + + let(:section_id) { nil } + let(:section_definition) { nil } + let(:form) { instance_double(Form) } + + it "has correct form" do + expect(setup.form).to eq(form) + end + + it "has correct subsections" do + expect(setup.subsections.map(&:id)).to eq(%w[setup]) + end + + it "has the correct id" do + expect(setup.id).to eq("setup") + end + + it "has the correct label" do + expect(setup.label).to eq("Before you start") + end + + it "has the correct description" do + expect(setup.description).to eq("") + end +end diff --git a/spec/models/form/setup/subsections/setup.spec.rb b/spec/models/form/setup/subsections/setup.spec.rb new file mode 100644 index 000000000..51cf20e19 --- /dev/null +++ b/spec/models/form/setup/subsections/setup.spec.rb @@ -0,0 +1,25 @@ +require "rails_helper" + +RSpec.describe Form::Setup::Subsections::Setup, type: :model do + subject(:setup) { described_class.new(subsection_id, subsection_definition, section) } + + let(:subsection_id) { nil } + let(:subsection_definition) { nil } + let(:section) { instance_double(Form::Setup::Sections::Setup) } + + it "has correct section" do + expect(setup.section).to eq(section) + end + + it "has correct pages" do + expect(setup.pages.map(&:id)).to eq(%w[needs_type renewal tenancy_start_date rent_type tenant_code property_reference]) + end + + it "has the correct id" do + expect(setup.id).to eq("setup") + end + + it "has the correct label" do + expect(setup.label).to eq("Set up this lettings log") + end +end