From 7e6724b5bd91f83629de9662a3aa913ef1e5bc23 Mon Sep 17 00:00:00 2001 From: Carolyn Date: Fri, 21 Mar 2025 11:30:00 +0000 Subject: [PATCH] update tests where 2014 is assumed --- spec/features/collection_resources_spec.rb | 1 + spec/features/sales_log_spec.rb | 43 ++++++++++++------- spec/features/schemes_helpers.rb | 6 ++- spec/helpers/guidance_helper_spec.rb | 4 +- spec/models/bulk_upload_spec.rb | 4 +- .../bulk_upload_sales_logs_controller_spec.rb | 2 +- spec/requests/check_errors_controller_spec.rb | 2 +- .../collection_resources_controller_spec.rb | 34 ++++++++++++--- spec/requests/form_controller_spec.rb | 5 ++- .../requests/lettings_logs_controller_spec.rb | 28 +++++++++++- .../csv/lettings_log_csv_service_spec.rb | 2 +- ...nancial_calculations_outright_sale_spec.rb | 6 +-- 12 files changed, 99 insertions(+), 38 deletions(-) diff --git a/spec/features/collection_resources_spec.rb b/spec/features/collection_resources_spec.rb index ad9a370b6..885c11480 100644 --- a/spec/features/collection_resources_spec.rb +++ b/spec/features/collection_resources_spec.rb @@ -7,6 +7,7 @@ RSpec.describe "Collection resources" do before do # rubocop:disable RSpec/AnyInstance allow_any_instance_of(CollectionResourcesHelper).to receive(:editable_collection_resource_years).and_return([2024, 2025]) + allow_any_instance_of(CollectionResourcesHelper).to receive(:displayed_collection_resource_years).and_return([2024]) # rubocop:enable RSpec/AnyInstance allow(CollectionResourcesService).to receive(:new).and_return(collection_resources_service) allow(collection_resources_service).to receive(:upload_collection_resource) diff --git a/spec/features/sales_log_spec.rb b/spec/features/sales_log_spec.rb index 3fa89a504..212804c46 100644 --- a/spec/features/sales_log_spec.rb +++ b/spec/features/sales_log_spec.rb @@ -228,28 +228,39 @@ RSpec.describe "Sales Log Features" do expect(page).to have_current_path("/sales-logs/csv-download?codes_only=false&search=1") end end + end + end - context "when displaying the question number in the page header" do - let(:sales_log) { FactoryBot.create(:sales_log, :shared_ownership_setup_complete, jointpur: 2, owning_organisation: user.organisation, assigned_to: user) } + context "when I am signed in" do + let(:user) { create(:user, last_sign_in_at: Time.zone.now) } - context "when visiting the address page" do - before do - visit("/sales-logs/#{sales_log.id}/address") - end + before do + create(:sales_log, :in_progress, owning_organisation: user.organisation, assigned_to: user) + allow(user).to receive(:need_two_factor_authentication?).and_return(false) + sign_in user + visit("/sales-logs?search=1") + end - it "displays the question number in the page header" do - expect(page).to have_content("Q16") - end + context "when viewing pages within a log" do + let(:sales_log) { FactoryBot.create(:sales_log, :shared_ownership_setup_complete, jointpur: 2, owning_organisation: user.organisation, assigned_to: user, saledate: Time.zone.local(2024, 12, 3)) } + + context "when visiting the address page" do + before do + visit("/sales-logs/#{sales_log.id}/address") end - context "when visiting the about staircasing page" do - before do - visit("/sales-logs/#{sales_log.id}/about-staircasing-not-joint-purchase") - end + it "displays the question number in the page header" do + expect(page).to have_content("Q16") + end + end - it "displays the question number in the page header" do - expect(page).to have_content(/Shared ownership scheme\s*About the staircasing transaction/) - end + context "when visiting the about staircasing page" do + before do + visit("/sales-logs/#{sales_log.id}/about-staircasing-not-joint-purchase") + end + + it "has the expected content" do + expect(page).to have_content(/Shared ownership scheme\s*About the staircasing transaction/) end end end diff --git a/spec/features/schemes_helpers.rb b/spec/features/schemes_helpers.rb index fc80e08ee..0b99d54de 100644 --- a/spec/features/schemes_helpers.rb +++ b/spec/features/schemes_helpers.rb @@ -1,4 +1,6 @@ module SchemesHelpers + include CollectionTimeHelper + def fill_in_number_question(lettings_log_id, question, value, path) visit("/lettings-logs/#{lettings_log_id}/#{path}") fill_in("lettings-log-#{question.to_s.dasherize}-field", with: value) @@ -74,7 +76,7 @@ module SchemesHelpers click_button "Save and continue" choose "location-mobility-type-none-field" click_button "Save and continue" - fill_in "location_startdate", with: "2/5/2023" + fill_in "location_startdate", with: "2/3/#{current_collection_start_year}" click_button "Save and continue" end @@ -93,7 +95,7 @@ module SchemesHelpers click_button "Save and continue" choose "location-mobility-type-none-field" click_button "Save and continue" - fill_in "location_startdate", with: "2/5/2023" + fill_in "location_startdate", with: "2/3/#{current_collection_start_year}" click_button "Save and continue" end diff --git a/spec/helpers/guidance_helper_spec.rb b/spec/helpers/guidance_helper_spec.rb index c1b900fac..047614109 100644 --- a/spec/helpers/guidance_helper_spec.rb +++ b/spec/helpers/guidance_helper_spec.rb @@ -3,7 +3,7 @@ require "rails_helper" RSpec.describe GuidanceHelper do describe "#question_link" do context "when question page is routed to" do - let(:log) { create(:sales_log, :shared_ownership_setup_complete, mortgageused: 2) } + let(:log) { create(:sales_log, :shared_ownership_setup_complete, mortgageused: 2, saledate: Time.zone.local(2024, 5, 3)) } it "returns an empty string if question is not routed to" do expect(question_link("mortgage", log, log.assigned_to)).to eq("") @@ -11,7 +11,7 @@ RSpec.describe GuidanceHelper do end context "when question page is not routed to" do - let(:log) { create(:sales_log, :shared_ownership_setup_complete, mortgageused: 1) } + let(:log) { create(:sales_log, :shared_ownership_setup_complete, mortgageused: 1, saledate: Time.zone.local(2024, 5, 3)) } it "returns a link to the question with correct question number in brakets" do expect(question_link("mortgage", log, log.assigned_to)).to eq("(Q92)") diff --git a/spec/models/bulk_upload_spec.rb b/spec/models/bulk_upload_spec.rb index 5195d23f4..74a96c427 100644 --- a/spec/models/bulk_upload_spec.rb +++ b/spec/models/bulk_upload_spec.rb @@ -29,10 +29,10 @@ RSpec.describe BulkUpload, type: :model do end context "with a sales log bulk upload" do - let(:log) { build(:sales_log, :saledate_today, bulk_upload:) } + let(:log) { build(:sales_log, saledate: Time.zone.local(2025, 4, 2), bulk_upload:) } it "has the correct number of value checks to be set as confirmed" do - expect(bulk_upload.fields_to_confirm(log)).to match_array %w[value_value_check monthly_charges_value_check percentage_discount_value_check income1_value_check income2_value_check combined_income_value_check retirement_value_check old_persons_shared_ownership_value_check buyer_livein_value_check student_not_child_value_check wheel_value_check mortgage_value_check savings_value_check deposit_value_check staircase_bought_value_check stairowned_value_check hodate_check shared_ownership_deposit_value_check extrabor_value_check grant_value_check discounted_sale_value_check deposit_and_mortgage_value_check multiple_partners_value_check partner_under_16_value_check] + expect(bulk_upload.fields_to_confirm(log)).to match_array %w[value_value_check monthly_charges_value_check percentage_discount_value_check income1_value_check income2_value_check combined_income_value_check retirement_value_check old_persons_shared_ownership_value_check buyer_livein_value_check wheel_value_check mortgage_value_check savings_value_check deposit_value_check staircase_bought_value_check stairowned_value_check hodate_check shared_ownership_deposit_value_check extrabor_value_check grant_value_check discounted_sale_value_check deposit_and_mortgage_value_check multiple_partners_value_check partner_under_16_value_check] end end end diff --git a/spec/requests/bulk_upload_sales_logs_controller_spec.rb b/spec/requests/bulk_upload_sales_logs_controller_spec.rb index a2d6e7ef4..c83e3c1b3 100644 --- a/spec/requests/bulk_upload_sales_logs_controller_spec.rb +++ b/spec/requests/bulk_upload_sales_logs_controller_spec.rb @@ -68,7 +68,7 @@ RSpec.describe BulkUploadSalesLogsController, type: :request do end it "shows guidance page with correct title" do - get "/sales-logs/bulk-upload-logs/guidance?form%5Byear%5D=2023", params: {} + get "/sales-logs/bulk-upload-logs/guidance?form%5Byear%5D=#{previous_collection_start_year}", params: {} expect(response.body).to include("How to upload logs in bulk") end diff --git a/spec/requests/check_errors_controller_spec.rb b/spec/requests/check_errors_controller_spec.rb index 186bb8749..090fd5e93 100644 --- a/spec/requests/check_errors_controller_spec.rb +++ b/spec/requests/check_errors_controller_spec.rb @@ -4,7 +4,7 @@ RSpec.describe CheckErrorsController, type: :request do let(:page) { Capybara::Node::Simple.new(response.body) } let(:user) { create(:user, :data_coordinator) } let(:lettings_log) { create(:lettings_log, :setup_completed, assigned_to: user) } - let(:sales_log) { create(:sales_log, :shared_ownership_setup_complete, assigned_to: user) } + let(:sales_log) { create(:sales_log, :shared_ownership_setup_complete, staircase: 2, assigned_to: user) } describe "check errors page" do context "when user is not signed in" do diff --git a/spec/requests/collection_resources_controller_spec.rb b/spec/requests/collection_resources_controller_spec.rb index eb6f56aed..e08810321 100644 --- a/spec/requests/collection_resources_controller_spec.rb +++ b/spec/requests/collection_resources_controller_spec.rb @@ -118,9 +118,20 @@ RSpec.describe CollectionResourcesController, type: :request do expect(page).to have_link("Change", href: edit_mandatory_collection_resource_path(year: 2025, log_type: "sales", resource_type: "bulk_upload_specification")) end - it "displays next year banner" do - expect(page).to have_content("The 2025 to 2026 collection resources are not yet available to users.") - expect(page).to have_link("Release the 2025 to 2026 collection resources to users", href: confirm_mandatory_collection_resources_release_path(year: 2025)) + context "when the collection year has not started yet" do + before do + Timecop.freeze(Time.zone.local(2025, 3, 1)) + get collection_resources_path + end + + after do + Timecop.return + end + + it "displays next year banner" do + expect(page).to have_content("The 2025 to 2026 collection resources are not yet available to users.") + expect(page).to have_link("Release the 2025 to 2026 collection resources to users", href: confirm_mandatory_collection_resources_release_path(year: 2025)) + end end context "when there are additional resources" do @@ -161,9 +172,20 @@ RSpec.describe CollectionResourcesController, type: :request do expect(page).to have_link("Upload", href: edit_mandatory_collection_resource_path(year: 2025, log_type: "sales", resource_type: "bulk_upload_specification")) end - it "displays next year banner" do - expect(page).to have_content("The 2025 to 2026 collection resources are not yet available to users.") - expect(page).to have_content("Once you have uploaded all the required 2025 to 2026 collection resources, you will be able to release them to users.") + context "when the collection year has not started yet" do + before do + Timecop.freeze(Time.zone.local(2025, 3, 1)) + get collection_resources_path + end + + after do + Timecop.return + end + + it "displays next year banner" do + expect(page).to have_content("The 2025 to 2026 collection resources are not yet available to users.") + expect(page).to have_content("Once you have uploaded all the required 2025 to 2026 collection resources, you will be able to release them to users.") + end end end diff --git a/spec/requests/form_controller_spec.rb b/spec/requests/form_controller_spec.rb index f5c4e6b19..2a3ce8cd2 100644 --- a/spec/requests/form_controller_spec.rb +++ b/spec/requests/form_controller_spec.rb @@ -1640,7 +1640,7 @@ RSpec.describe FormController, type: :request do end context "when coming from check answers page" do - let(:sales_log) { create(:sales_log, ownershipsch: 3, assigned_to: user) } + let(:sales_log) { create(:sales_log, ownershipsch: 3, assigned_to: user, saledate: Time.zone.local(2024, 7, 5)) } let(:lettings_log_referrer) { "/lettings-logs/#{lettings_log.id}/needs-type?referrer=check_answers" } let(:sales_log_referrer) { "/sales-logs/#{sales_log.id}/ownership-scheme?referrer=check_answers" } @@ -1702,9 +1702,10 @@ RSpec.describe FormController, type: :request do } end let(:referrer) { "/lettings-logs/#{completed_lettings_log.id}/net-income-value-check?referrer=check_answers" } + let(:sales_log) { create(:sales_log, ownershipsch: 3, assigned_to: user, saledate: Time.zone.local(2022, 7, 5)) } around do |example| - Timecop.freeze(Time.zone.local(2022, 1, 1)) do + Timecop.freeze(Time.zone.local(2022, 7, 1)) do Singleton.__init__(FormHandler) example.run end diff --git a/spec/requests/lettings_logs_controller_spec.rb b/spec/requests/lettings_logs_controller_spec.rb index 92683edb3..53b7e184d 100644 --- a/spec/requests/lettings_logs_controller_spec.rb +++ b/spec/requests/lettings_logs_controller_spec.rb @@ -1218,8 +1218,8 @@ RSpec.describe LettingsLogsController, type: :request do end end - context "when a lettings log is for a renewal of supported housing" do - let(:lettings_log) { create(:lettings_log, :startdate_today, assigned_to: user, renewal: 1, needstype: 2, rent_type: 3, postcode_known: 0) } + context "when a lettings log is for a renewal of supported housing in 2024" do + let(:lettings_log) { create(:lettings_log, :startdate_today, assigned_to: user, renewal: 1, needstype: 2, rent_type: 3, postcode_known: 0, startdate: Time.zone.local(2024, 10, 20)) } it "does not show property information" do get lettings_log_path(lettings_log) @@ -1232,6 +1232,30 @@ RSpec.describe LettingsLogsController, type: :request do end end + context "when a lettings log is for a renewal of supported housing in 2025" do + let(:lettings_log) { create(:lettings_log, assigned_to: user, renewal: 1, needstype: 2, rent_type: 3, postcode_known: 0) } + + before do + Timecop.freeze(2025, 10, 15) + lettings_log.startdate = Time.zone.local(2025, 10, 20) + lettings_log.save! + end + + after do + Timecop.return + end + + it "shows property information" do + get lettings_log_path(lettings_log) + expect(page).to have_content "Tenancy information" + expect(page).to have_content "Property information" + end + + it "does not crash the app if postcode_known is not nil" do + expect { get lettings_log_path(lettings_log) }.not_to raise_error + end + end + context "with lettings logs that are not owned or managed by your organisation" do before do sign_in user diff --git a/spec/services/csv/lettings_log_csv_service_spec.rb b/spec/services/csv/lettings_log_csv_service_spec.rb index bf45bbe30..0b133780b 100644 --- a/spec/services/csv/lettings_log_csv_service_spec.rb +++ b/spec/services/csv/lettings_log_csv_service_spec.rb @@ -117,7 +117,7 @@ RSpec.describe Csv::LettingsLogCsvService do context "when exporting with human readable labels" do let(:export_type) { "labels" } - let(:log) { create(:lettings_log, :setup_completed, hhmemb: 2, details_known_2: 0, relat2: "P", age1: 35, la: "E09000003", duplicate_set_id: 12_312) } + let(:log) { create(:lettings_log, :setup_completed, hhmemb: 2, details_known_2: 0, relat2: "P", age1: 35, la: "E09000003", duplicate_set_id: 12_312, startdate: Time.zone.local(2024, 11, 1)) } it "gives answer to radio questions as labels" do relat2_column_index = attribute_line.index("relat2") diff --git a/spec/views/form/guidance/_financial_calculations_outright_sale_spec.rb b/spec/views/form/guidance/_financial_calculations_outright_sale_spec.rb index 343239e80..00dff60b5 100644 --- a/spec/views/form/guidance/_financial_calculations_outright_sale_spec.rb +++ b/spec/views/form/guidance/_financial_calculations_outright_sale_spec.rb @@ -6,7 +6,7 @@ RSpec.describe "form/guidance/_financial_calculations_outright_sale.html.erb" do let(:fragment) { Capybara::Node::Simple.new(rendered) } context "when mortgage used is not answered" do - let(:log) { create(:sales_log, :outright_sale_setup_complete, ownershipsch: 3, type: 10, mortgageused: nil, discount: 30) } + let(:log) { create(:sales_log, :outright_sale_setup_complete, ownershipsch: 3, type: 10, mortgageused: nil, discount: 30, saledate: Time.zone.local(2024, 11, 1)) } it "renders correct content" do render partial: "form/guidance/financial_calculations_outright_sale", locals: { log:, current_user: log.assigned_to } @@ -18,7 +18,7 @@ RSpec.describe "form/guidance/_financial_calculations_outright_sale.html.erb" do end context "when mortgage used is no" do - let(:log) { create(:sales_log, :outright_sale_setup_complete, ownershipsch: 3, type: 10, mortgageused: 2, discount: nil) } + let(:log) { create(:sales_log, :outright_sale_setup_complete, ownershipsch: 3, type: 10, mortgageused: 2, discount: nil, saledate: Time.zone.local(2024, 11, 1)) } it "renders correct content" do render partial: "form/guidance/financial_calculations_outright_sale", locals: { log:, current_user: log.assigned_to } @@ -32,7 +32,7 @@ RSpec.describe "form/guidance/_financial_calculations_outright_sale.html.erb" do end context "when mortgage used is yes" do - let(:log) { create(:sales_log, :outright_sale_setup_complete, ownershipsch: 3, type: 10, mortgageused: 1, mortgage: nil, discount: 30) } + let(:log) { create(:sales_log, :outright_sale_setup_complete, ownershipsch: 3, type: 10, mortgageused: 1, mortgage: nil, discount: 30, saledate: Time.zone.local(2024, 11, 1)) } it "renders correct content" do render partial: "form/guidance/financial_calculations_outright_sale", locals: { log:, current_user: log.assigned_to }