diff --git a/app/controllers/form_controller.rb b/app/controllers/form_controller.rb index 2cb65edaf..7d6b60822 100644 --- a/app/controllers/form_controller.rb +++ b/app/controllers/form_controller.rb @@ -38,7 +38,7 @@ class FormController < ApplicationController end error_attributes = @log.errors.map(&:attribute) Rails.logger.info "User triggered validation(s) on: #{error_attributes.join(', ')}" - @subsection = form.subsection_for_page(@page) + @subsection = @page.subsection flash[:errors] = @log.errors.each_with_object({}) do |error, result| if @page.questions.map(&:id).include?(error.attribute.to_s) result[error.attribute.to_s] = error.message @@ -87,7 +87,7 @@ class FormController < ApplicationController if @log page_id = request.path.split("/")[-1].underscore @page = form.get_page(page_id) - @subsection = form.subsection_for_page(@page) + @subsection = @page.subsection @pages_with_errors_count = 0 if @page.routed_to?(@log, current_user) || is_referrer_type?("interruption_screen") || adding_answer_from_check_errors_page? if updated_answer_from_check_errors_page? @@ -274,7 +274,7 @@ private elsif pages_to_check.any? return redirect_path_to_question(pages_to_check[0], pages_to_check) else - return send("#{@log.log_type}_#{form.subsection_for_page(@page).id}_check_answers_path", @log) + return send("#{@log.log_type}_#{@page.subsection.id}_check_answers_path", @log) end end if previous_interruption_screen_page_id.present? diff --git a/app/helpers/bulk_upload/sales_log_to_csv.rb b/app/helpers/bulk_upload/sales_log_to_csv.rb index 5fad19e74..17dd2af20 100644 --- a/app/helpers/bulk_upload/sales_log_to_csv.rb +++ b/app/helpers/bulk_upload/sales_log_to_csv.rb @@ -434,7 +434,7 @@ class BulkUpload::SalesLogToCsv log.nationality_all_group, log.ecstat1, log.buy1livein, - log.relat2, + { "P" => 1, "X" => 2, "R" => 3 }[log.relat2], log.age2, log.sex2, log.ethnic_group2, @@ -443,19 +443,19 @@ class BulkUpload::SalesLogToCsv log.buy2livein, # 40 log.hholdcount, - log.relat3, + { "P" => 1, "X" => 2, "R" => 3 }[log.relat3], log.age3, log.sex3, log.ecstat3, - log.relat4, + { "P" => 1, "X" => 2, "R" => 3 }[log.relat4], log.age4, log.sex4, log.ecstat4, - log.relat5, # 50 + { "P" => 1, "X" => 2, "R" => 3 }[log.relat5], # 50 log.age5, log.sex5, log.ecstat5, - log.relat6, + { "P" => 1, "X" => 2, "R" => 3 }[log.relat6], log.age6, log.sex6, log.ecstat6, diff --git a/app/models/form.rb b/app/models/form.rb index 38f6c86d2..ba65095d1 100644 --- a/app/models/form.rb +++ b/app/models/form.rb @@ -85,14 +85,10 @@ class Form routed_question || all_questions[0] end - def subsection_for_page(page) - subsections.find { |s| s.pages.find { |p| p.id == page.id } } - end - def next_page_id(page, log, current_user, ignore_answered: false) return page.next_unresolved_page_id || :check_answers if log.unresolved - page_ids = subsection_for_page(page).pages.map(&:id) + page_ids = page.subsection.pages.map(&:id) page_index = page_ids.index(page.id) page_id = if page.interruption_screen? && log[page.questions[0].id] == 1 && page.routed_to?(log, current_user) previous_page_id(page, log, current_user) @@ -111,14 +107,14 @@ class Form def next_page_redirect_path(page, log, current_user, ignore_answered: false) next_page_id = next_page_id(page, log, current_user, ignore_answered:) if next_page_id == :check_answers - "#{type}_log_#{subsection_for_page(page).id}_check_answers_path" + "#{type}_log_#{page.subsection.id}_check_answers_path" else "#{type}_log_#{next_page_id}_path" end end def previous_page_id(page, log, current_user) - page_ids = subsection_for_page(page).pages.map(&:id) + page_ids = page.subsection.pages.map(&:id) page_index = page_ids.index(page.id) return :tasklist if page_index.zero? @@ -133,7 +129,7 @@ class Form def previous_page_redirect_path(page, log, current_user, referrer) previous_page_id = previous_page_id(page, log, current_user) if referrer == "check_answers" - "#{type}_log_#{subsection_for_page(page).id}_check_answers_path" + "#{type}_log_#{page.subsection.id}_check_answers_path" elsif previous_page_id == :tasklist "#{type}_log_path" else diff --git a/app/models/form/sales/subsections/shared_ownership_staircasing_transaction.rb b/app/models/form/sales/subsections/shared_ownership_staircasing_transaction.rb index 000a0c800..cc10ed28c 100644 --- a/app/models/form/sales/subsections/shared_ownership_staircasing_transaction.rb +++ b/app/models/form/sales/subsections/shared_ownership_staircasing_transaction.rb @@ -19,9 +19,9 @@ class Form::Sales::Subsections::SharedOwnershipStaircasingTransaction < ::Form:: Form::Sales::Pages::StaircasePrevious.new(nil, nil, self), Form::Sales::Pages::StaircaseInitialDate.new(nil, nil, self), Form::Sales::Pages::ValueSharedOwnership.new("value_shared_ownership_staircase", nil, self), - Form::Sales::Pages::AboutPriceValueCheck.new("about_price_shared_ownership_value_check", nil, self), + Form::Sales::Pages::AboutPriceValueCheck.new("about_price_shared_ownership_value_check_staircasing", nil, self), Form::Sales::Pages::Equity.new("staircase_equity", nil, self), - Form::Sales::Pages::SharedOwnershipDepositValueCheck.new("shared_ownership_equity_value_check", nil, self), + Form::Sales::Pages::SharedOwnershipDepositValueCheck.new("shared_ownership_equity_value_check_staircasing", nil, self), Form::Sales::Pages::Mortgageused.new("staircase_mortgage_used_shared_ownership", nil, self, ownershipsch: 1), Form::Sales::Pages::MonthlyRentStaircasingOwned.new(nil, nil, self), Form::Sales::Pages::MonthlyRentStaircasing.new(nil, nil, self), diff --git a/app/models/validations/financial_validations.rb b/app/models/validations/financial_validations.rb index 82b3fae01..652643fcf 100644 --- a/app/models/validations/financial_validations.rb +++ b/app/models/validations/financial_validations.rb @@ -159,9 +159,11 @@ module Validations::FinancialValidations end def validate_care_home_charges(record) + return unless record.period && record.chcharge + if record.is_carehome? period = record.form.get_question("period", record).label_from_value(record.period).downcase - if record.chcharge.present? && !weekly_value_in_range(record, "chcharge", 10, 5000) + unless weekly_value_in_range(record, "chcharge", 10, 5000) max_chcharge = record.weekly_to_value_per_period(5000) min_chcharge = record.weekly_to_value_per_period(10) diff --git a/app/services/documentation_generator.rb b/app/services/documentation_generator.rb index 4e0a7011c..999216d6d 100644 --- a/app/services/documentation_generator.rb +++ b/app/services/documentation_generator.rb @@ -301,7 +301,7 @@ Look at these helper methods where needed to understand what is being checked in end def save_soft_validation(form, page, validation_descriptions, log_type) - subsection_pages = form.subsection_for_page(page).pages + subsection_pages = page.subsection.pages page_index = subsection_pages.index(page) page_the_validation_applied_to = subsection_pages[page_index - 1] diff --git a/app/views/bulk_upload_shared/guidance.html.erb b/app/views/bulk_upload_shared/guidance.html.erb index 1463f63b9..330d3b4ea 100644 --- a/app/views/bulk_upload_shared/guidance.html.erb +++ b/app/views/bulk_upload_shared/guidance.html.erb @@ -34,8 +34,8 @@
You can paste your data below the headers or copy the headers and insert them above the data in your file. The bulk upload fields start at column B. Leave column A blank.
Make sure that each column of data aligns with the corresponding question in the headers. We recommend ordering your data to match the headers, but you can also reorder the headers to match your data. When processing the file, we check what each column of data represents based on the headers above.
-<%= govuk_link_to "Download the lettings bulk upload template (2024 to 2025)", @form.lettings_template_path %>
-<%= govuk_link_to "Download the sales bulk upload template (2024 to 2025)", @form.sales_template_path %>
+<%= govuk_link_to "Download the lettings bulk upload template (#{@form.year} to #{@form.year + 1})", @form.lettings_template_path %>
+<%= govuk_link_to "Download the sales bulk upload template (#{@form.year} to #{@form.year + 1})", @form.sales_template_path %>
<% end %> <%= accordion.with_section(heading_text: "Using the bulk upload specification") do %> diff --git a/lib/tasks/clear_invalid_benefits.rake b/lib/tasks/clear_invalid_benefits.rake deleted file mode 100644 index 415559a6b..000000000 --- a/lib/tasks/clear_invalid_benefits.rake +++ /dev/null @@ -1,20 +0,0 @@ -desc "clear benefit value for logs that would trigger the validation" -task clear_invalid_benefits: :environment do - validation_trigger_condition = "ecstat1 = 1 OR ecstat1 = 2 OR (ecstat2 = 1 AND relat2 = 'P') OR (ecstat2 = 2 AND relat2 = 'P') OR (ecstat3 = 1 AND relat3 = 'P') OR (ecstat3 = 2 AND relat3 = 'P') OR (ecstat4 = 1 AND relat4 = 'P') OR (ecstat4 = 2 AND relat4 = 'P') OR (ecstat5 = 1 AND relat5 = 'P') OR (ecstat5 = 2 AND relat5 = 'P') OR (ecstat6 = 1 AND relat6 = 'P') OR (ecstat6 = 2 AND relat6 = 'P') OR (ecstat7 = 1 AND relat7 = 'P') OR (ecstat7 = 2 AND relat7 = 'P') OR (ecstat8 = 1 AND relat8 = 'P') OR (ecstat8 = 2 AND relat8 = 'P')" - LettingsLog.filter_by_year(2024).where(status: "pending", status_cache: "completed", benefits: 1).where(validation_trigger_condition).find_each do |log| - log.benefits = nil - log.status_cache = log.calculate_status - log.skip_update_status = true - - unless log.save - Rails.logger.info "Could not save changes to pending lettings log #{log.id}" - end - end - - LettingsLog.filter_by_year(2024).visible.where(benefits: 1).where(validation_trigger_condition).find_each do |log| - log.benefits = nil - unless log.save - Rails.logger.info "Could not save changes to lettings log #{log.id}" - end - end -end diff --git a/lib/tasks/clear_invalidated_earnings.rake b/lib/tasks/clear_invalidated_earnings.rake deleted file mode 100644 index 2c230a095..000000000 --- a/lib/tasks/clear_invalidated_earnings.rake +++ /dev/null @@ -1,12 +0,0 @@ -desc "Clear earnings for lettings logs that fail validation" -task clear_invalidated_earnings: :environment do - LettingsLog.filter_by_year(2023).find_each do |lettings_log| - lettings_log.validate_net_income(lettings_log) - if lettings_log.errors[:earnings].present? - Rails.logger.info "Clearing earnings for lettings log #{lettings_log.id}, owning_organisation_id: #{lettings_log.owning_organisation_id}, managing_organisation_id: #{lettings_log.managing_organisation_id}, startdate: #{lettings_log.startdate.to_date}, tenancy reference: #{lettings_log.tenancycode}, property reference: #{lettings_log.propcode}, assigned_to: #{lettings_log.assigned_to.email}(#{lettings_log.assigned_to_id}), earnings: #{lettings_log.earnings}, incfreq: #{lettings_log.incfreq}" - lettings_log.earnings = nil - lettings_log.incfreq = nil - lettings_log.save!(validate: false) - end - end -end diff --git a/lib/tasks/correct_checkbox_values.rake b/lib/tasks/correct_checkbox_values.rake deleted file mode 100644 index 0bd7c6974..000000000 --- a/lib/tasks/correct_checkbox_values.rake +++ /dev/null @@ -1,20 +0,0 @@ -desc "Update BU reasonable preference and illness type checkbox values" -task correct_checkbox_values: :environment do - any_reasonpref_selected = "rp_homeless = 1 OR rp_hardship = 1 OR rp_medwel = 1 OR rp_insan_unsat = 1 OR rp_dontknow = 1" - any_reasonpref_is_null = "rp_homeless IS NULL OR rp_hardship IS NULL OR rp_medwel IS NULL OR rp_insan_unsat IS NULL OR rp_dontknow IS NULL" - - LettingsLog.filter_by_year(2024).where(reasonpref: 1).where(any_reasonpref_selected).where(any_reasonpref_is_null).find_each do |lettings_log| - unless lettings_log.save - Rails.logger.info("Failed to save reasonpref for LettingsLog with id #{lettings_log.id}: #{lettings_log.errors.full_messages}") - end - end - - any_illness_selected = "illness_type_1 = 1 OR illness_type_2 = 1 OR illness_type_3 = 1 OR illness_type_4 = 1 OR illness_type_5 = 1 OR illness_type_6 = 1 OR illness_type_7 = 1 OR illness_type_8 = 1 OR illness_type_9 = 1 OR illness_type_10 = 1" - any_illness_is_null = "illness_type_1 IS NULL OR illness_type_2 IS NULL OR illness_type_3 IS NULL OR illness_type_4 IS NULL OR illness_type_5 IS NULL OR illness_type_6 IS NULL OR illness_type_7 IS NULL OR illness_type_8 IS NULL OR illness_type_9 IS NULL OR illness_type_10 IS NULL" - - LettingsLog.filter_by_year(2024).where(illness: 1).where(any_illness_selected).where(any_illness_is_null).find_each do |lettings_log| - unless lettings_log.save - Rails.logger.info("Failed to save illness for LettingsLog with id #{lettings_log.id}: #{lettings_log.errors.full_messages}") - end - end -end diff --git a/lib/tasks/correct_reasonpref_values.rake b/lib/tasks/correct_reasonpref_values.rake deleted file mode 100644 index 4ec1bb8f0..000000000 --- a/lib/tasks/correct_reasonpref_values.rake +++ /dev/null @@ -1,15 +0,0 @@ -desc "Correct invalid BU reasonable preference values" -task correct_reasonpref_values: :environment do - %w[rp_homeless rp_hardship rp_medwel rp_insan_unsat rp_dontknow].each do |field| - field_invalid = "#{field} != 1 AND #{field} != 0 AND #{field} is NOT NULL" - - LettingsLog.filter_by_year(2024).where(field_invalid).find_each do |lettings_log| - lettings_log[field] = 0 - unless lettings_log.save - Rails.logger.info("Failed to save reasonpref for LettingsLog with id #{lettings_log.id}: #{lettings_log.errors.full_messages}") - end - end - - LettingsLog.filter_by_year(2023).where(field_invalid).update_all("#{field}": 0) - end -end diff --git a/lib/tasks/correct_rent_type_value.rake b/lib/tasks/correct_rent_type_value.rake deleted file mode 100644 index e3b166d04..000000000 --- a/lib/tasks/correct_rent_type_value.rake +++ /dev/null @@ -1,20 +0,0 @@ -desc "Alter rent_type values for bulk uploaded lettings logs for 2024 where they were not mapped correctly" -task correct_rent_type_value: :environment do - affected_uploads = BulkUpload.where(log_type: "lettings", year: 2024, rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:not_applied]) - affected_uploads.each do |upload| - upload.logs.where.not(rent_type: nil).each do |log| - current_rent_type = log.rent_type - rent_type_at_upload = log.versions.length == 1 ? log.rent_type : log.versions.first.next.reify.rent_type - next unless rent_type_at_upload == current_rent_type - - new_rent_type_value = BulkUpload::Lettings::Year2024::RowParser::RENT_TYPE_BU_MAPPING[rent_type_at_upload] - log.rent_type = new_rent_type_value - if log.save - Rails.logger.info("Log #{log.id} rent_type updated from #{rent_type_at_upload} to #{log.rent_type}") - else - Rails.logger.error("Log #{log.id} rent_type could not be updated from #{rent_type_at_upload} to #{log.rent_type}. Error: #{log.errors.full_messages.join(', ')}") - end - end - upload.update!(rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:applied]) - end -end diff --git a/lib/tasks/recalculate_status_after_sales_over_retirement_age_validation.rake b/lib/tasks/recalculate_status_after_sales_over_retirement_age_validation.rake deleted file mode 100644 index b1cbd56f0..000000000 --- a/lib/tasks/recalculate_status_after_sales_over_retirement_age_validation.rake +++ /dev/null @@ -1,19 +0,0 @@ -desc "Recalculates status for 2024 logs that will trigger new sales over retirement age soft validation" -task recalculate_status_over_retirement: :environment do - validation_trigger_condition = "(ecstat1 != 5 AND age1 > 66) OR (ecstat2 != 5 AND age2 > 66) OR (ecstat3 != 5 AND age3 > 66) OR (ecstat4 != 5 AND age4 > 66) OR (ecstat5 != 5 AND age5 > 66) OR (ecstat6 != 5 AND age6 > 66)" - SalesLog.filter_by_year(2024).where(status: "pending", status_cache: "completed").where(validation_trigger_condition).find_each do |log| - log.status_cache = log.calculate_status - - unless log.save - Rails.logger.info "Could not save changes to pending sales log #{log.id}" - end - end - - SalesLog.filter_by_year(2024).where(status: "completed").where(validation_trigger_condition).find_each do |log| - log.status = log.calculate_status - - unless log.save - Rails.logger.info "Could not save changes to sales log #{log.id}" - end - end -end diff --git a/lib/tasks/update_created_by_values.rake b/lib/tasks/update_created_by_values.rake deleted file mode 100644 index bcbc86167..000000000 --- a/lib/tasks/update_created_by_values.rake +++ /dev/null @@ -1,24 +0,0 @@ -desc "Updates created_by values for lettings and sales logs" -task update_created_by_values: :environment do - LettingsLog.filter_by_years(%w[2023 2024]).where.not(bulk_upload_id: nil).update_all("created_by_id = (SELECT user_id FROM bulk_uploads WHERE bulk_uploads.id = lettings_logs.bulk_upload_id)") - LettingsLog.filter_by_years(%w[2023 2024]).where(bulk_upload_id: nil, created_by: nil).find_each do |lettings_log| - user = PaperTrail::Version.find_by(item_id: lettings_log.id, item_type: "LettingsLog", event: "create")&.actor - lettings_log.created_by = if user.present? && user.is_a?(User) - user - else - lettings_log.assigned_to - end - lettings_log.save!(touch: false, validate: false) - end - - SalesLog.filter_by_years(%w[2023 2024]).where.not(bulk_upload_id: nil).update_all("created_by_id = (SELECT user_id FROM bulk_uploads WHERE bulk_uploads.id = sales_logs.bulk_upload_id)") - SalesLog.filter_by_years(%w[2023 2024]).where(bulk_upload_id: nil, created_by: nil).find_each do |sales_log| - user = PaperTrail::Version.find_by(item_id: sales_log.id, item_type: "SalesLog", event: "create")&.actor - sales_log.created_by = if user.present? && user.is_a?(User) - user - else - sales_log.assigned_to - end - sales_log.save!(touch: false, validate: false) - end -end 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/check_answers_helper_spec.rb b/spec/helpers/check_answers_helper_spec.rb index 9fb98946a..a7d18295a 100644 --- a/spec/helpers/check_answers_helper_spec.rb +++ b/spec/helpers/check_answers_helper_spec.rb @@ -41,7 +41,7 @@ RSpec.describe CheckAnswersHelper do describe "#get_answer_label" do context "when unanswered and bulk upload" do - let(:question) { log.form.questions.sample } + let(:question) { log.form.questions.reject { |q| log.optional_fields.include?(q.id) }.sample } let(:bulk_upload) { create(:bulk_upload) } let(:log) { create(:sales_log, creation_method: "bulk upload", bulk_upload:) } 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/lib/tasks/clear_invalid_benefits_spec.rb b/spec/lib/tasks/clear_invalid_benefits_spec.rb deleted file mode 100644 index 755612f8b..000000000 --- a/spec/lib/tasks/clear_invalid_benefits_spec.rb +++ /dev/null @@ -1,95 +0,0 @@ -require "rails_helper" -require "rake" - -RSpec.describe "clear_invalid_benefits" do - describe ":clear_invalid_benefits", type: :task do - subject(:task) { Rake::Task["clear_invalid_benefits"] } - - before do - Rake.application.rake_require("tasks/clear_invalid_benefits") - Rake::Task.define_task(:environment) - task.reenable - end - - context "when the rake task is run" do - context "and there is a completed lettings log that trips the validation" do - let(:log) { build(:lettings_log, :completed, ecstat1: 1, benefits: 1, assigned_to: create(:user), period: nil) } - - before do - log.status = "completed" - log.skip_update_status = true - log.save!(validate: false) - end - - it "clear benefits and sets the log to in progress" do - expect(log.reload.benefits).to eq(1) - task.invoke - log.reload - expect(log.benefits).to eq(nil) - expect(log.status).to eq("in_progress") - end - end - - context "and there is a lettings log that trips the validation for person 2" do - let(:log) { build(:lettings_log, :completed, ecstat2: 2, benefits: 1, relat2: "P", assigned_to: create(:user), period: nil) } - - before do - log.status = "completed" - log.skip_update_status = true - log.save!(validate: false) - end - - it "clear benefits and sets the log to in progress" do - expect(log.reload.benefits).to eq(1) - task.invoke - log.reload - expect(log.benefits).to eq(nil) - expect(log.status).to eq("in_progress") - end - end - - context "and there is a lettings log that trips the validation for person 8" do - let(:log) { build(:lettings_log, :completed, ecstat8: 1, benefits: 1, relat8: "P", assigned_to: create(:user), period: nil) } - - before do - log.status = "completed" - log.skip_update_status = true - log.save!(validate: false) - end - - it "clear benefits and sets the log to in progress" do - expect(log.reload.benefits).to eq(1) - task.invoke - log.reload - expect(log.benefits).to eq(nil) - expect(log.status).to eq("in_progress") - end - end - - context "and there is a pending lettings log that trips the validation" do - let(:log) { build(:lettings_log, :completed, ecstat1: 1, benefits: 1, assigned_to: create(:user), period: nil) } - - before do - log.status = "pending" - log.status_cache = "completed" - log.skip_update_status = true - log.save!(validate: false) - end - - it "clears benefits and updates the status cache" do - expect(log.reload.benefits).to eq(1) - task.invoke - log.reload - expect(log.benefits).to eq(nil) - expect(log.status_cache).to eq("in_progress") - end - - it "does not change the log status" do - task.invoke - log.reload - expect(log.status).to eq("pending") - end - end - end - end -end diff --git a/spec/lib/tasks/clear_invalidated_earnings_spec.rb b/spec/lib/tasks/clear_invalidated_earnings_spec.rb deleted file mode 100644 index 614a0e953..000000000 --- a/spec/lib/tasks/clear_invalidated_earnings_spec.rb +++ /dev/null @@ -1,111 +0,0 @@ -require "rails_helper" -require "rake" - -RSpec.describe "clear_invalidated_earnings" do - describe ":clear_invalidated_earnings", type: :task do - subject(:task) { Rake::Task["clear_invalidated_earnings"] } - - before do - Rake.application.rake_require("tasks/clear_invalidated_earnings") - Rake::Task.define_task(:environment) - task.reenable - FormHandler.instance.use_real_forms! - end - - context "when the rake task is run" do - context "and there are 2023 logs with invalid earnings" do - let(:user) { create(:user) } - let!(:lettings_log) { create(:lettings_log, :completed, assigned_to: user, voiddate: nil, mrcdate: nil, tenancycode: "123", propcode: "321") } - - before do - lettings_log.startdate = Time.zone.local(2023, 4, 4) - lettings_log.incfreq = 1 - lettings_log.earnings = 20 - lettings_log.hhmemb = 1 - lettings_log.ecstat1 = 1 - lettings_log.save!(validate: false) - end - - it "clears earnings" do - initial_updated_at = lettings_log.updated_at - expect(lettings_log.incfreq).to eq(1) - expect(lettings_log.earnings).to eq(20) - expect(lettings_log.hhmemb).to eq(1) - expect(lettings_log.ecstat1).to eq(1) - expect(Rails.logger).to receive(:info).with("Clearing earnings for lettings log #{lettings_log.id}, owning_organisation_id: #{lettings_log.owning_organisation_id}, managing_organisation_id: #{lettings_log.managing_organisation_id}, startdate: 2023-04-04, tenancy reference: 123, property reference: 321, assigned_to: #{user.email}(#{user.id}), earnings: 20, incfreq: 1") - - task.invoke - lettings_log.reload - - expect(lettings_log.incfreq).to eq(nil) - expect(lettings_log.earnings).to eq(nil) - expect(lettings_log.hhmemb).to eq(1) - expect(lettings_log.ecstat1).to eq(1) - expect(lettings_log.updated_at).not_to eq(initial_updated_at) - end - end - - context "and there are valid 2023 logs" do - let(:user) { create(:user) } - let!(:lettings_log) { create(:lettings_log, :completed, assigned_to: user, voiddate: nil, mrcdate: nil) } - - before do - lettings_log.startdate = Time.zone.local(2023, 4, 4) - lettings_log.incfreq = 1 - lettings_log.earnings = 95 - lettings_log.hhmemb = 1 - lettings_log.ecstat1 = 1 - lettings_log.save!(validate: false) - end - - it "does not update the logs" do - initial_updated_at = lettings_log.updated_at - expect(lettings_log.incfreq).to eq(1) - expect(lettings_log.earnings).to eq(95) - expect(lettings_log.hhmemb).to eq(1) - expect(lettings_log.ecstat1).to eq(1) - - task.invoke - lettings_log.reload - - expect(lettings_log.incfreq).to eq(1) - expect(lettings_log.earnings).to eq(95) - expect(lettings_log.hhmemb).to eq(1) - expect(lettings_log.ecstat1).to eq(1) - expect(lettings_log.updated_at).to eq(initial_updated_at) - end - end - - context "and there are 2022 logs" do - let(:user) { create(:user) } - let!(:lettings_log) { create(:lettings_log, :completed, assigned_to: user, voiddate: nil, mrcdate: nil) } - - before do - lettings_log.startdate = Time.zone.local(2022, 4, 4) - lettings_log.incfreq = 1 - lettings_log.earnings = 20 - lettings_log.hhmemb = 1 - lettings_log.ecstat1 = 1 - lettings_log.save!(validate: false) - end - - it "does not update the logs" do - initial_updated_at = lettings_log.updated_at - expect(lettings_log.incfreq).to eq(1) - expect(lettings_log.earnings).to eq(20) - expect(lettings_log.hhmemb).to eq(1) - expect(lettings_log.ecstat1).to eq(1) - - task.invoke - lettings_log.reload - - expect(lettings_log.incfreq).to eq(1) - expect(lettings_log.earnings).to eq(20) - expect(lettings_log.hhmemb).to eq(1) - expect(lettings_log.ecstat1).to eq(1) - expect(lettings_log.updated_at).to eq(initial_updated_at) - end - end - end - end -end diff --git a/spec/lib/tasks/correct_checkbox_values_spec.rb b/spec/lib/tasks/correct_checkbox_values_spec.rb deleted file mode 100644 index 8adc7eda3..000000000 --- a/spec/lib/tasks/correct_checkbox_values_spec.rb +++ /dev/null @@ -1,216 +0,0 @@ -require "rails_helper" -require "rake" - -RSpec.describe "correct_checkbox_values" do - describe ":correct_checkbox_values", type: :task do - subject(:task) { Rake::Task["correct_checkbox_values"] } - - let(:organisation) { create(:organisation, rent_periods: [2]) } - let(:user) { create(:user, organisation:) } - - before do - Rake.application.rake_require("tasks/correct_checkbox_values") - Rake::Task.define_task(:environment) - task.reenable - end - - context "when the rake task is run" do - context "and any of the reasonable_preference_reason options are 1" do - let(:bulk_upload) { create(:bulk_upload, :lettings, year: 2024, rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:not_applied]) } - - it "sets the remaining options to 0" do - log = build(:lettings_log, :completed, reasonpref: 1, rp_homeless: 1, rp_hardship: nil, rp_medwel: nil, rp_insan_unsat: nil, rp_dontknow: nil, - bulk_upload:, assigned_to: user) - log.save!(validate: false) - initial_updated_at = log.updated_at - - task.invoke - log.reload - - expect(log.updated_at).not_to eq(initial_updated_at) - expect(log.status).to eq("completed") - expect(log.rp_homeless).to be(1) - expect(log.rp_hardship).to be(0) - expect(log.rp_medwel).to be(0) - expect(log.rp_insan_unsat).to be(0) - expect(log.rp_dontknow).to be(0) - end - - it "updates the reasonable preference reason values on a pending log" do - log = build(:lettings_log, :completed, status: "pending", reasonpref: 1, rp_homeless: 1, rp_hardship: nil, rp_medwel: 1, rp_insan_unsat: nil, rp_dontknow: nil, bulk_upload:, assigned_to: user) - log.save!(validate: false) - initial_updated_at = log.updated_at - expect(log.status).to eq("pending") - - task.invoke - log.reload - expect(log.rp_homeless).to be(1) - expect(log.rp_hardship).to be(0) - expect(log.rp_medwel).to be(1) - expect(log.rp_insan_unsat).to be(0) - expect(log.rp_dontknow).to be(0) - expect(log.status).to eq("pending") - expect(log.updated_at).not_to eq(initial_updated_at) - end - - it "does not update logs if all unselected reasonable preference reason are alredy 0" do - log = build(:lettings_log, :completed, reasonpref: 1, rp_homeless: 0, rp_hardship: 1, rp_medwel: 0, rp_insan_unsat: 0, rp_dontknow: 0, bulk_upload:, assigned_to: user) - log.save!(validate: false) - initial_updated_at = log.updated_at - expect(log.status).to eq("completed") - - task.invoke - log.reload - - expect(log.status).to eq("completed") - expect(log.updated_at).to eq(initial_updated_at) - end - - it "updates the reasonable preference reason values if some of the checkbox values are nil" do - log = build(:lettings_log, :completed, status: "pending", reasonpref: 1, rp_homeless: 0, rp_hardship: nil, rp_medwel: 1, rp_insan_unsat: 0, rp_dontknow: 0, bulk_upload:, assigned_to: user) - log.save!(validate: false) - initial_updated_at = log.updated_at - expect(log.status).to eq("pending") - - task.invoke - log.reload - expect(log.rp_homeless).to be(0) - expect(log.rp_hardship).to be(0) - expect(log.rp_medwel).to be(1) - expect(log.rp_insan_unsat).to be(0) - expect(log.rp_dontknow).to be(0) - expect(log.status).to eq("pending") - expect(log.updated_at).not_to eq(initial_updated_at) - end - - it "does not update the reasonable preference reason values on a 2023 log" do - log = build(:lettings_log, :completed, startdate: Time.zone.local(2023, 6, 6), reasonpref: 1, rp_homeless: 0, rp_hardship: nil, rp_medwel: 1, rp_insan_unsat: 0, rp_dontknow: 0, bulk_upload:, assigned_to: user) - log.save!(validate: false) - initial_updated_at = log.updated_at - - task.invoke - log.reload - - expect(log.updated_at).to eq(initial_updated_at) - end - - it "does not update and logs error if a validation triggers" do - log = build(:lettings_log, :completed, postcode_full: "0", reasonpref: 1, rp_homeless: 0, rp_hardship: nil, rp_medwel: 1, rp_insan_unsat: 0, rp_dontknow: 0, bulk_upload:, assigned_to: user) - log.save!(validate: false) - initial_updated_at = log.updated_at - - task.invoke - log.reload - - expect(log.updated_at).to eq(initial_updated_at) - end - end - - context "and any of the illness_type options are 1" do - let(:bulk_upload) { create(:bulk_upload, :lettings, year: 2024, rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:not_applied]) } - - it "sets the remaining options to 0" do - log = build(:lettings_log, :completed, illness: 1, illness_type_1: 1, illness_type_2: nil, illness_type_3: nil, illness_type_4: nil, illness_type_5: nil, illness_type_6: nil, illness_type_7: nil, illness_type_8: nil, illness_type_9: nil, illness_type_10: nil, - bulk_upload:, assigned_to: user) - log.save!(validate: false) - initial_updated_at = log.updated_at - - task.invoke - log.reload - - expect(log.updated_at).not_to eq(initial_updated_at) - expect(log.status).to eq("completed") - expect(log.illness_type_1).to be(1) - expect(log.illness_type_2).to be(0) - expect(log.illness_type_3).to be(0) - expect(log.illness_type_4).to be(0) - expect(log.illness_type_5).to be(0) - expect(log.illness_type_6).to be(0) - expect(log.illness_type_7).to be(0) - expect(log.illness_type_8).to be(0) - expect(log.illness_type_9).to be(0) - expect(log.illness_type_10).to be(0) - end - - it "updates the reasonable preference reason values on a pending log" do - log = build(:lettings_log, :completed, status: "pending", illness: 1, illness_type_1: 1, illness_type_2: nil, illness_type_3: nil, illness_type_4: nil, illness_type_5: nil, illness_type_6: nil, illness_type_7: nil, illness_type_8: nil, illness_type_9: nil, illness_type_10: nil, bulk_upload:, assigned_to: user) - log.save!(validate: false) - initial_updated_at = log.updated_at - expect(log.status).to eq("pending") - - task.invoke - log.reload - expect(log.illness_type_1).to be(1) - expect(log.illness_type_2).to be(0) - expect(log.illness_type_3).to be(0) - expect(log.illness_type_4).to be(0) - expect(log.illness_type_5).to be(0) - expect(log.illness_type_6).to be(0) - expect(log.illness_type_7).to be(0) - expect(log.illness_type_8).to be(0) - expect(log.illness_type_9).to be(0) - expect(log.illness_type_10).to be(0) - expect(log.status).to eq("pending") - expect(log.updated_at).not_to eq(initial_updated_at) - end - - it "does not update logs if all unselected reasonable preference reason are alredy 0" do - log = build(:lettings_log, :completed, illness: 1, illness_type_1: 0, illness_type_2: 1, illness_type_3: 0, illness_type_4: 0, illness_type_5: 0, illness_type_6: 0, illness_type_7: 0, illness_type_8: 0, illness_type_9: 0, illness_type_10: 0, bulk_upload:, assigned_to: user) - log.save!(validate: false) - initial_updated_at = log.updated_at - expect(log.status).to eq("completed") - - task.invoke - log.reload - - expect(log.status).to eq("completed") - expect(log.updated_at).to eq(initial_updated_at) - end - - it "updates the reasonable preference reason values if some of the checkbox values are nil" do - log = build(:lettings_log, :completed, status: "pending", illness: 1, illness_type_1: 0, illness_type_2: nil, illness_type_3: 1, illness_type_4: 0, illness_type_5: 0, illness_type_6: nil, illness_type_7: nil, illness_type_8: nil, illness_type_9: nil, illness_type_10: nil, bulk_upload:, assigned_to: user) - log.save!(validate: false) - initial_updated_at = log.updated_at - expect(log.status).to eq("pending") - - task.invoke - log.reload - expect(log.illness_type_1).to be(0) - expect(log.illness_type_2).to be(0) - expect(log.illness_type_3).to be(1) - expect(log.illness_type_4).to be(0) - expect(log.illness_type_5).to be(0) - expect(log.illness_type_6).to be(0) - expect(log.illness_type_7).to be(0) - expect(log.illness_type_8).to be(0) - expect(log.illness_type_9).to be(0) - expect(log.illness_type_10).to be(0) - expect(log.status).to eq("pending") - expect(log.updated_at).not_to eq(initial_updated_at) - end - - it "does not update the reasonable preference reason values on a 2023 log" do - log = build(:lettings_log, :completed, startdate: Time.zone.local(2023, 6, 6), illness: 1, illness_type_1: 0, illness_type_2: nil, illness_type_3: 1, illness_type_4: 0, illness_type_5: 0, illness_type_6: nil, illness_type_7: nil, illness_type_8: nil, illness_type_9: nil, illness_type_10: nil, bulk_upload:, assigned_to: user) - log.save!(validate: false) - initial_updated_at = log.updated_at - - task.invoke - log.reload - - expect(log.updated_at).to eq(initial_updated_at) - end - - it "does not update and logs error if a validation triggers" do - log = build(:lettings_log, :completed, postcode_full: "0", illness: 1, illness_type_1: 0, illness_type_2: nil, illness_type_3: 1, illness_type_4: 0, illness_type_5: 0, illness_type_6: nil, illness_type_7: nil, illness_type_8: nil, illness_type_9: nil, illness_type_10: nil, bulk_upload:, assigned_to: user) - log.save!(validate: false) - initial_updated_at = log.updated_at - - task.invoke - log.reload - - expect(log.updated_at).to eq(initial_updated_at) - end - end - end - end -end diff --git a/spec/lib/tasks/correct_reasonpref_values_spec.rb b/spec/lib/tasks/correct_reasonpref_values_spec.rb deleted file mode 100644 index 8a805e184..000000000 --- a/spec/lib/tasks/correct_reasonpref_values_spec.rb +++ /dev/null @@ -1,111 +0,0 @@ -require "rails_helper" -require "rake" - -RSpec.describe "correct_reasonpref_values" do - describe ":correct_reasonpref_values", type: :task do - subject(:task) { Rake::Task["correct_reasonpref_values"] } - - let(:organisation) { create(:organisation, rent_periods: [2]) } - let(:user) { create(:user, organisation:) } - - before do - Rake.application.rake_require("tasks/correct_reasonpref_values") - Rake::Task.define_task(:environment) - task.reenable - end - - context "when the rake task is run" do - context "and any of the reasonable_preference_reason options are not 1, 0 or nil" do - let(:bulk_upload) { create(:bulk_upload, :lettings, year: 2024, rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:not_applied]) } - - it "sets the options to 0" do - log = build(:lettings_log, :completed, reasonpref: 1, rp_homeless: -2, rp_hardship: 2, rp_medwel: 3, rp_insan_unsat: 4, rp_dontknow: 1, - bulk_upload:, assigned_to: user) - log.save!(validate: false) - initial_updated_at = log.updated_at - - task.invoke - log.reload - - expect(log.updated_at).not_to eq(initial_updated_at) - expect(log.status).to eq("completed") - expect(log.rp_homeless).to be(0) - expect(log.rp_hardship).to be(0) - expect(log.rp_medwel).to be(0) - expect(log.rp_insan_unsat).to be(0) - expect(log.rp_dontknow).to be(1) - end - - it "updates the reasonable preference reason values on a pending log" do - log = build(:lettings_log, :completed, status: "pending", reasonpref: 1, rp_homeless: -2, rp_hardship: 1, rp_medwel: 3, rp_insan_unsat: 4, rp_dontknow: 2, bulk_upload:, assigned_to: user) - log.save!(validate: false) - initial_updated_at = log.updated_at - expect(log.status).to eq("pending") - - task.invoke - log.reload - expect(log.rp_homeless).to be(0) - expect(log.rp_hardship).to be(1) - expect(log.rp_medwel).to be(0) - expect(log.rp_insan_unsat).to be(0) - expect(log.rp_dontknow).to be(0) - expect(log.status).to eq("pending") - expect(log.updated_at).not_to eq(initial_updated_at) - end - - it "does not update logs with valid values" do - log = build(:lettings_log, :completed, reasonpref: 1, rp_homeless: 0, rp_hardship: 1, rp_medwel: 0, rp_insan_unsat: 0, rp_dontknow: 0, bulk_upload:, assigned_to: user) - log.save!(validate: false) - initial_updated_at = log.updated_at - expect(log.status).to eq("completed") - - task.invoke - log.reload - - expect(log.status).to eq("completed") - expect(log.updated_at).to eq(initial_updated_at) - end - - it "updates the reasonable preference reason values if some of the checkbox values are valid" do - log = build(:lettings_log, :completed, status: "pending", reasonpref: 1, rp_homeless: 0, rp_hardship: 2, rp_medwel: 1, rp_insan_unsat: 0, rp_dontknow: 0, bulk_upload:, assigned_to: user) - log.save!(validate: false) - initial_updated_at = log.updated_at - expect(log.status).to eq("pending") - - task.invoke - log.reload - expect(log.rp_homeless).to be(0) - expect(log.rp_hardship).to be(0) - expect(log.rp_medwel).to be(1) - expect(log.rp_insan_unsat).to be(0) - expect(log.rp_dontknow).to be(0) - expect(log.status).to eq("pending") - expect(log.updated_at).not_to eq(initial_updated_at) - end - - it "updates the reasonable preference reason values on a 2023 log" do - log = build(:lettings_log, :completed, startdate: Time.zone.local(2023, 6, 6), reasonpref: 1, rp_homeless: 0, rp_hardship: 2, rp_medwel: 1, rp_insan_unsat: 0, rp_dontknow: 0, bulk_upload:, assigned_to: user) - log.save!(validate: false) - initial_updated_at = log.updated_at - - task.invoke - log.reload - - expect(log.updated_at).to eq(initial_updated_at) - expect(log.rp_hardship).to eq(0) - end - - it "does not update and logs error if a validation triggers" do - log = build(:lettings_log, :completed, postcode_full: "0", reasonpref: 1, rp_homeless: 0, rp_hardship: 2, rp_medwel: 1, rp_insan_unsat: 0, rp_dontknow: 0, bulk_upload:, assigned_to: user) - log.save!(validate: false) - initial_updated_at = log.updated_at - - task.invoke - log.reload - - expect(log.updated_at).to eq(initial_updated_at) - end - end - end - end -end diff --git a/spec/lib/tasks/correct_rent_type_value_spec.rb b/spec/lib/tasks/correct_rent_type_value_spec.rb deleted file mode 100644 index d4e015b5d..000000000 --- a/spec/lib/tasks/correct_rent_type_value_spec.rb +++ /dev/null @@ -1,254 +0,0 @@ -require "rails_helper" -require "rake" - -RSpec.describe "correct_rent_type_value" do - describe ":correct_rent_type_value", type: :task do - subject(:task) { Rake::Task["correct_rent_type_value"] } - - before do - Rake.application.rake_require("tasks/correct_rent_type_value") - Rake::Task.define_task(:environment) - task.reenable - end - - context "when the rake task is run" do - context "and rent_type is 1" do - let(:bulk_upload) { create(:bulk_upload, :lettings, year: 2024, rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:not_applied]) } - let(:bulk_upload_2023) { create(:bulk_upload, :lettings, year: 2023, rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:not_applied]) } - - before do - bulk_upload.save! - end - - it "updates the rent_type value on a log where it was set to 1 on create" do - log = create(:lettings_log, :completed, rent_type: 1, bulk_upload:) - initial_updated_at = log.updated_at - - task.invoke - log.reload - - expect(log.rent_type).to be(0) - expect(log.status).to eq("completed") - expect(log.updated_at).not_to eq(initial_updated_at) - expect(bulk_upload.reload.rent_type_fix_status).to eq(BulkUpload.rent_type_fix_statuses[:applied]) - end - - it "updates the rent_type value on a pending log where it was set to 1 on create" do - log = build(:lettings_log, :completed, rent_type: 1, bulk_upload:, status: "pending") - log.save! - initial_updated_at = log.updated_at - expect(log.status).to eq("pending") - - task.invoke - log.reload - - expect(log.rent_type).to be(0) - expect(log.status).to eq("pending") - expect(log.updated_at).not_to eq(initial_updated_at) - expect(bulk_upload.reload.rent_type_fix_status).to eq(BulkUpload.rent_type_fix_statuses[:applied]) - end - - it "updates the rent_type value on a deleted log where it was set to 1 on create" do - log = create(:lettings_log, :completed, rent_type: 1, bulk_upload:, discarded_at: Time.zone.yesterday) - initial_updated_at = log.updated_at - expect(log.status).to eq("deleted") - - task.invoke - log.reload - - expect(log.rent_type).to be(0) - expect(log.status).to eq("deleted") - expect(log.updated_at).not_to eq(initial_updated_at) - expect(bulk_upload.reload.rent_type_fix_status).to eq(BulkUpload.rent_type_fix_statuses[:applied]) - end - - it "updates the rent_type value on a log where it was set to 1 on create and other fields have since changed" do - log = create(:lettings_log, :completed, rent_type: 1, bulk_upload:) - log.update!(tenancycode: "abc") - initial_updated_at = log.updated_at - - task.invoke - log.reload - - expect(log.rent_type).to be(0) - expect(log.status).to eq("completed") - expect(log.updated_at).not_to eq(initial_updated_at) - expect(bulk_upload.reload.rent_type_fix_status).to eq(BulkUpload.rent_type_fix_statuses[:applied]) - end - - it "does not update the rent_type value on a log if it has since been changed" do - log = create(:lettings_log, :completed, rent_type: 1, bulk_upload:) - log.update!(rent_type: 0) - initial_updated_at = log.updated_at - - task.invoke - log.reload - - expect(log.rent_type).to be(0) - expect(log.status).to eq("completed") - expect(log.updated_at).to eq(initial_updated_at) - end - - it "does not update the rent_type value on a 2023 log turned 2024" do - log = build(:lettings_log, :completed, startdate: Time.zone.local(2023, 6, 6), rent_type: 1, bulk_upload: bulk_upload_2023) - log.save!(validate: false) - log.address_line1_input = log.address_line1 - log.postcode_full_input = log.postcode_full - log.nationality_all_group = 826 - log.uprn = "10033558653" - log.uprn_selection = 1 - log.startdate = Time.zone.today - log.save! - - initial_updated_at = log.updated_at - - task.invoke - log.reload - - expect(log.rent_type).to be(1) - expect(log.updated_at).to eq(initial_updated_at) - end - - it "does not update and logs error if a validation triggers" do - log = build(:lettings_log, :completed, startdate: Time.zone.local(2021, 6, 6), rent_type: 1, bulk_upload:) - log.save!(validate: false) - initial_updated_at = log.updated_at - - expect(Rails.logger).to receive(:error).with(/Log #{log.id} rent_type could not be updated from 1 to 0. Error: /) - task.invoke - log.reload - - expect(log.rent_type).to be(1) - expect(log.updated_at).to eq(initial_updated_at) - end - - context "when the rent_type_fix_status is not_needed" do - let(:bulk_upload) { create(:bulk_upload, :lettings, year: 2024, rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:not_needed]) } - - before do - bulk_upload.save! - end - - it "does not update the rent_type values on logs" do - log = create(:lettings_log, :completed, rent_type: 1, bulk_upload:) - initial_updated_at = log.updated_at - - task.invoke - log.reload - - expect(log.rent_type).to be(1) - expect(log.updated_at).to eq(initial_updated_at) - expect(bulk_upload.reload.rent_type_fix_status).to eq(BulkUpload.rent_type_fix_statuses[:not_needed]) - end - end - end - - context "and rent_type is 2" do - let(:bulk_upload) { create(:bulk_upload, :lettings, year: 2024, rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:not_applied]) } - let(:bulk_upload_2023) { create(:bulk_upload, :lettings, year: 2023, rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:not_applied]) } - - before do - bulk_upload.save! - end - - it "updates the rent_type value on a log where it was set to 2 on create" do - log = create(:lettings_log, :completed, rent_type: 2, bulk_upload:) - initial_updated_at = log.updated_at - - task.invoke - log.reload - - expect(log.rent_type).to be(1) - expect(log.status).to eq("completed") - expect(log.updated_at).not_to eq(initial_updated_at) - end - - it "updates the rent_type value on a pending log where it was set to 2 on create" do - log = build(:lettings_log, :completed, rent_type: 2, bulk_upload:, status: "pending") - log.save! - initial_updated_at = log.updated_at - expect(log.status).to eq("pending") - - task.invoke - log.reload - - expect(log.rent_type).to be(1) - expect(log.status).to eq("pending") - expect(log.updated_at).not_to eq(initial_updated_at) - end - - it "updates the rent_type value on a deleted log where it was set to 2 on create" do - log = create(:lettings_log, :completed, rent_type: 2, bulk_upload:, discarded_at: Time.zone.yesterday) - initial_updated_at = log.updated_at - expect(log.status).to eq("deleted") - - task.invoke - log.reload - - expect(log.rent_type).to be(1) - expect(log.status).to eq("deleted") - expect(log.updated_at).not_to eq(initial_updated_at) - end - - it "updates the rent_type value on a log where it was set to 2 on create and other fields have since changed" do - log = create(:lettings_log, :completed, rent_type: 2, bulk_upload:) - log.update!(tenancycode: "abc") - initial_updated_at = log.updated_at - - task.invoke - log.reload - - expect(log.rent_type).to be(1) - expect(log.status).to eq("completed") - expect(log.updated_at).not_to eq(initial_updated_at) - end - - it "does not update the rent_type value on a log if it has since been changed" do - log = create(:lettings_log, :completed, rent_type: 2, bulk_upload:) - log.update!(rent_type: 0) - initial_updated_at = log.updated_at - - task.invoke - log.reload - - expect(log.rent_type).to be(0) - expect(log.status).to eq("completed") - expect(log.updated_at).to eq(initial_updated_at) - end - - it "does not update the rent_type value on a 2023 log turned 2024" do - log = build(:lettings_log, :completed, startdate: Time.zone.local(2023, 6, 6), rent_type: 2, bulk_upload: bulk_upload_2023) - log.save!(validate: false) - log.address_line1_input = log.address_line1 - log.postcode_full_input = log.postcode_full - log.nationality_all_group = 826 - log.uprn = "10033558653" - log.uprn_selection = 1 - log.startdate = Time.zone.today - log.save! - - initial_updated_at = log.updated_at - - task.invoke - log.reload - - expect(log.rent_type).to be(2) - expect(log.updated_at).to eq(initial_updated_at) - end - - it "does not update and logs error if a validation triggers" do - log = build(:lettings_log, :completed, startdate: Time.zone.local(2021, 6, 6), rent_type: 2, bulk_upload:) - log.save!(validate: false) - initial_updated_at = log.updated_at - - expect(Rails.logger).to receive(:error).with(/Log #{log.id} rent_type could not be updated from 2 to 1. Error: /) - task.invoke - log.reload - - expect(log.rent_type).to be(2) - expect(log.updated_at).to eq(initial_updated_at) - end - end - end - end -end diff --git a/spec/lib/tasks/recalculate_invalid_reasonpref_dontknow_spec.rb b/spec/lib/tasks/recalculate_invalid_reasonpref_dontknow_spec.rb index 3487f3989..974c44dfd 100644 --- a/spec/lib/tasks/recalculate_invalid_reasonpref_dontknow_spec.rb +++ b/spec/lib/tasks/recalculate_invalid_reasonpref_dontknow_spec.rb @@ -10,14 +10,14 @@ RSpec.describe "recalculate_invalid_reasonpref_dontknow" do task.reenable end - let(:invalid_logs) { create_list(:lettings_log, 5, :completed, reasonpref: 1, rp_dontknow: 1, rp_homeless: 1, rp_insan_unsat: rand(2), rp_medwel: rand(2), rp_hardship: rand(2), updated_at: Time.zone.local(2024, 4, 2, 12, 0, 0)) } + let(:invalid_logs) { create_list(:lettings_log, 5, :completed, reasonpref: 1, rp_dontknow: 1, rp_homeless: 1, rp_insan_unsat: rand(2), rp_medwel: rand(2), rp_hardship: rand(2), updated_at: Time.zone.local(2024, 4, 2, 12, 0, 0), startdate: Time.zone.local(2024, rand(4..12), rand(1..30))) } let(:pre_2024_invalid_logs) do create_list(:lettings_log, 5, :completed, reasonpref: 1, rp_dontknow: 1, rp_homeless: 1, rp_insan_unsat: rand(2), rp_medwel: rand(2), rp_hardship: rand(2)).each do |log| log.startdate = Time.zone.local(rand(2021..2023), 4, 1) log.save!(validate: false) end end - let(:valid_logs) { create_list(:lettings_log, 3, :completed, reasonpref: 1, rp_dontknow: 0, rp_homeless: 1, rp_insan_unsat: 1, rp_medwel: rand(2), rp_hardship: rand(2), updated_at: Time.zone.local(2024, 4, 2, 12, 0, 0)) } + let(:valid_logs) { create_list(:lettings_log, 3, :completed, reasonpref: 1, rp_dontknow: 0, rp_homeless: 1, rp_insan_unsat: 1, rp_medwel: rand(2), rp_hardship: rand(2), updated_at: Time.zone.local(2024, 4, 2, 12, 0, 0), startdate: Time.zone.local(2024, rand(4..12), rand(1..30))) } it "updates the logs from 2024/25 with invalid rp_dontknow values" do invalid_logs.each do |log| diff --git a/spec/lib/tasks/recalculate_status_after_sales_over_retirement_age_validation_spec.rb b/spec/lib/tasks/recalculate_status_after_sales_over_retirement_age_validation_spec.rb deleted file mode 100644 index cd5e0255c..000000000 --- a/spec/lib/tasks/recalculate_status_after_sales_over_retirement_age_validation_spec.rb +++ /dev/null @@ -1,53 +0,0 @@ -require "rails_helper" -require "rake" - -RSpec.describe "recalculate_status_after_sales_over_retirement_age_validation" do - describe ":recalculate_status_over_retirement", type: :task do - subject(:task) { Rake::Task["recalculate_status_over_retirement"] } - - before do - Rake.application.rake_require("tasks/recalculate_status_after_sales_over_retirement_age_validation") - Rake::Task.define_task(:environment) - task.reenable - end - - context "when the rake task is run" do - context "and there is a completed sales log that trips the validation" do - let(:log) { create(:sales_log, :completed, ecstat1: 1, age1: 67) } - - before do - log.status = "completed" - log.save! - end - - it "sets the log to in progress" do - task.invoke - log.reload - expect(log.status).to eq("in_progress") - end - end - - context "and there is a pending sales log that trips the validation" do - let(:log) { create(:sales_log, :completed, ecstat2: 1, age2: 70) } - - before do - log.status = "pending" - log.status_cache = "completed" - log.save! - end - - it "updates the status cache" do - task.invoke - log.reload - expect(log.status_cache).to eq("in_progress") - end - - it "does not change the log status" do - task.invoke - log.reload - expect(log.status).to eq("pending") - end - end - end - end -end diff --git a/spec/lib/tasks/update_created_by_values_spec.rb b/spec/lib/tasks/update_created_by_values_spec.rb deleted file mode 100644 index 776e709f8..000000000 --- a/spec/lib/tasks/update_created_by_values_spec.rb +++ /dev/null @@ -1,146 +0,0 @@ -require "rails_helper" -require "rake" - -RSpec.describe "update_created_by_values" do - describe ":update_created_by_values", type: :task do - subject(:task) { Rake::Task["update_created_by_values"] } - - before do - Rake.application.rake_require("tasks/update_created_by_values") - Rake::Task.define_task(:environment) - task.reenable - end - - context "when the rake task is run" do - let(:user) { create(:user) } - - context "with bulk upload id" do - let(:bulk_upload) { create(:bulk_upload) } - let(:lettings_log) { create(:lettings_log, :completed, assigned_to: user, bulk_upload_id: bulk_upload.id, updated_at: Time.zone.yesterday) } - let(:sales_log) { create(:sales_log, :completed, assigned_to: user, bulk_upload_id: bulk_upload.id, updated_at: Time.zone.yesterday) } - - it "updates created_by to bulk upload user id for lettings log" do - initial_updated_at = lettings_log.updated_at - expect(lettings_log.created_by_id).to eq(user.id) - expect(lettings_log.assigned_to_id).to eq(user.id) - task.invoke - lettings_log.reload - expect(lettings_log.created_by_id).to eq(bulk_upload.user_id) - expect(lettings_log.assigned_to_id).to eq(user.id) - expect(lettings_log.updated_at).to eq(initial_updated_at) - end - - it "updates created_by to bulk upload user id for sales log" do - initial_updated_at = sales_log.updated_at - expect(sales_log.created_by_id).to eq(user.id) - expect(sales_log.assigned_to_id).to eq(user.id) - task.invoke - sales_log.reload - expect(sales_log.created_by_id).to eq(bulk_upload.user_id) - expect(sales_log.assigned_to_id).to eq(user.id) - expect(sales_log.updated_at).to eq(initial_updated_at) - end - end - - context "without bulk upload id" do - context "and version whodunnit exists for create" do - let(:lettings_log) { create(:lettings_log, :completed, assigned_to: user, created_by_id: nil, updated_at: Time.zone.yesterday) } - let(:sales_log) { create(:sales_log, :completed, assigned_to: user, created_by_id: nil, updated_at: Time.zone.yesterday) } - let(:other_user) { create(:user, organisation: user.organisation) } - - before do - PaperTrail::Version.find_by(item_id: lettings_log.id, item_type: "LettingsLog", event: "create").update!(whodunnit: other_user.to_global_id.uri.to_s) - PaperTrail::Version.find_by(item_id: sales_log.id, item_type: "SalesLog", event: "create").update!(whodunnit: other_user.to_global_id.uri.to_s) - end - - it "updates created_by to create whodunnit for lettings" do - initial_updated_at = lettings_log.updated_at - expect(lettings_log.created_by_id).to eq(nil) - expect(lettings_log.assigned_to_id).to eq(user.id) - task.invoke - lettings_log.reload - expect(lettings_log.created_by_id).to eq(other_user.id) - expect(lettings_log.assigned_to_id).to eq(user.id) - expect(lettings_log.updated_at).to eq(initial_updated_at) - end - - it "updates created_by to create whodunnit for sales" do - initial_updated_at = sales_log.updated_at - expect(sales_log.created_by_id).to eq(nil) - expect(sales_log.assigned_to_id).to eq(user.id) - task.invoke - sales_log.reload - expect(sales_log.created_by_id).to eq(other_user.id) - expect(sales_log.assigned_to_id).to eq(user.id) - expect(sales_log.updated_at).to eq(initial_updated_at) - end - end - - context "and version whodunnit does not exist for create" do - let(:lettings_log) { create(:lettings_log, :completed, assigned_to: user, created_by_id: nil, updated_at: Time.zone.yesterday) } - let(:sales_log) { create(:sales_log, :completed, assigned_to: user, created_by_id: nil, updated_at: Time.zone.yesterday) } - - before do - PaperTrail::Version.find_by(item_id: lettings_log.id, event: "create").update!(whodunnit: nil) - PaperTrail::Version.find_by(item_id: sales_log.id, event: "create").update!(whodunnit: nil) - end - - it "sets created_by to assigned_to for lettings" do - initial_updated_at = lettings_log.updated_at - expect(lettings_log.created_by_id).to eq(nil) - expect(lettings_log.assigned_to_id).to eq(user.id) - task.invoke - lettings_log.reload - expect(lettings_log.created_by_id).to eq(user.id) - expect(lettings_log.assigned_to_id).to eq(user.id) - expect(lettings_log.updated_at).to eq(initial_updated_at) - end - - it "sets created_by to assigned_to for sales" do - initial_updated_at = sales_log.updated_at - expect(sales_log.created_by_id).to eq(nil) - expect(sales_log.assigned_to_id).to eq(user.id) - task.invoke - sales_log.reload - expect(sales_log.created_by_id).to eq(user.id) - expect(sales_log.assigned_to_id).to eq(user.id) - expect(sales_log.updated_at).to eq(initial_updated_at) - end - end - - context "and version whodunnit is not a User for create" do - let(:lettings_log) { create(:lettings_log, :completed, assigned_to: user, created_by_id: nil, updated_at: Time.zone.yesterday) } - let(:sales_log) { create(:sales_log, :completed, assigned_to: user, created_by_id: nil, updated_at: Time.zone.yesterday) } - let(:other_user) { create(:user, organisation: user.organisation) } - - before do - PaperTrail::Version.find_by(item_id: lettings_log.id, item_type: "LettingsLog", event: "create").update!(whodunnit: other_user.email) - PaperTrail::Version.find_by(item_id: sales_log.id, item_type: "SalesLog", event: "create").update!(whodunnit: other_user.email) - end - - it "sets created_by to assigned_to for lettings" do - initial_updated_at = lettings_log.updated_at - expect(lettings_log.created_by_id).to eq(nil) - expect(lettings_log.assigned_to_id).to eq(user.id) - task.invoke - lettings_log.reload - expect(lettings_log.created_by_id).to eq(user.id) - expect(lettings_log.assigned_to_id).to eq(user.id) - expect(lettings_log.updated_at).to eq(initial_updated_at) - end - - it "sets created_by to assigned_to for sales" do - initial_updated_at = sales_log.updated_at - expect(sales_log.created_by_id).to eq(nil) - expect(sales_log.assigned_to_id).to eq(user.id) - task.invoke - sales_log.reload - expect(sales_log.created_by_id).to eq(user.id) - expect(sales_log.assigned_to_id).to eq(user.id) - expect(sales_log.updated_at).to eq(initial_updated_at) - end - end - end - end - end -end 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/models/location_spec.rb b/spec/models/location_spec.rb index a98487d86..df2f2ea9e 100644 --- a/spec/models/location_spec.rb +++ b/spec/models/location_spec.rb @@ -1016,16 +1016,14 @@ RSpec.describe Location, type: :model do end it "returns reactivating soon if the location has a future reactivation date" do - deactivation_period = FactoryBot.create(:location_deactivation_period, deactivation_date: Time.zone.yesterday, reactivation_date: Time.zone.tomorrow, location:) + FactoryBot.create(:location_deactivation_period, deactivation_date: Time.zone.yesterday, reactivation_date: Time.zone.tomorrow, location:) location.save! - expect(deactivation_period.deactivation_date).to eq(Time.zone.yesterday) expect(location.status).to eq(:reactivating_soon) end it "returns reactivating soon if the location had a deactivation during another deactivation" do - deactivation_period = FactoryBot.create(:location_deactivation_period, deactivation_date: Time.zone.today - 1.month, reactivation_date: Time.zone.today + 2.days, location:) + FactoryBot.create(:location_deactivation_period, deactivation_date: Time.zone.today - 1.month, reactivation_date: Time.zone.today + 2.days, location:) location.save! - expect(deactivation_period.deactivation_date).to eq(Time.zone.today - 1.month) expect(location.status).to eq(:reactivating_soon) end diff --git a/spec/models/scheme_spec.rb b/spec/models/scheme_spec.rb index 72c7595a5..c13247a53 100644 --- a/spec/models/scheme_spec.rb +++ b/spec/models/scheme_spec.rb @@ -433,9 +433,8 @@ RSpec.describe Scheme, type: :model do end it "returns reactivating soon if the scheme had a deactivation during another deactivation" do - deactivation_period = FactoryBot.create(:scheme_deactivation_period, deactivation_date: Time.zone.today - 2.months, reactivation_date: Time.zone.today + 2.days, scheme:) + FactoryBot.create(:scheme_deactivation_period, deactivation_date: Time.zone.today - 2.months, reactivation_date: Time.zone.today + 2.days, scheme:) scheme.save! - expect(deactivation_period.deactivation_date).to eq(Time.zone.today - 2.months) expect(scheme.status).to eq(:reactivating_soon) 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..8076422aa 100644 --- a/spec/requests/form_controller_spec.rb +++ b/spec/requests/form_controller_spec.rb @@ -1640,7 +1640,6 @@ 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(: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" } @@ -1674,6 +1673,14 @@ RSpec.describe FormController, type: :request do end context "and changing an answer" do + before do + Timecop.freeze(2024, 5, 6) + end + + after do + Timecop.return + end + it "navigates to follow-up questions when required" do post "/lettings-logs/#{lettings_log.id}/needs-type", params: lettings_log_form_needs_type_params, headers: headers.merge({ "HTTP_REFERER" => lettings_log_referrer }) expect(response).to redirect_to("/lettings-logs/#{lettings_log.id}/scheme?referrer=check_answers") diff --git a/spec/requests/lettings_logs_controller_spec.rb b/spec/requests/lettings_logs_controller_spec.rb index 92683edb3..38c2a9d75 100644 --- a/spec/requests/lettings_logs_controller_spec.rb +++ b/spec/requests/lettings_logs_controller_spec.rb @@ -1218,8 +1218,20 @@ 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)) } + + before do + Timecop.freeze(2024, 10, 15) + Singleton.__init__(FormHandler) + lettings_log.startdate = Time.zone.local(2024, 10, 20) + lettings_log.save! + end + + after do + Timecop.return + Singleton.__init__(FormHandler) + end it "does not show property information" do get lettings_log_path(lettings_log) @@ -1232,6 +1244,32 @@ 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, :startdate_today, assigned_to: user, renewal: 1, needstype: 2, rent_type: 3, postcode_known: 0) } + + before do + Timecop.freeze(2025, 10, 15) + Singleton.__init__(FormHandler) + lettings_log.startdate = Time.zone.local(2025, 10, 20) + lettings_log.save! + end + + after do + Timecop.return + Singleton.__init__(FormHandler) + 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/bulk_upload/sales/validator_spec.rb b/spec/services/bulk_upload/sales/validator_spec.rb index 6bd118344..49ac0e39f 100644 --- a/spec/services/bulk_upload/sales/validator_spec.rb +++ b/spec/services/bulk_upload/sales/validator_spec.rb @@ -138,6 +138,7 @@ RSpec.describe BulkUpload::Sales::Validator do context "with an invalid 2024 csv" do before do log.owning_organisation = nil + log.saledate = Time.zone.local(2024, 10, 10) file.write(log_to_csv.default_field_numbers_row) file.write(log_to_csv.to_csv_row) file.rewind 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 }