Browse Source

Merge remote-tracking branch 'origin/CLDC-3654-Copy-changes-sales-property-information-questions' into CLDC-3654-Copy-changes-sales-property-information-questions

pull/2694/head
Manny Dinssa 8 months ago
parent
commit
e928dcde85
  1. 4
      Gemfile.lock
  2. 2
      app/components/bulk_upload_summary_component.html.erb
  3. 2
      app/controllers/lettings_logs_controller.rb
  4. 2
      app/controllers/sales_logs_controller.rb
  5. 17
      app/controllers/users_controller.rb
  6. 2
      app/helpers/filters_helper.rb
  7. 8
      app/helpers/log_actions_helper.rb
  8. 2
      app/helpers/review_helper.rb
  9. 2
      app/helpers/tasklist_helper.rb
  10. 2
      app/models/bulk_upload.rb
  11. 4
      app/models/form/sales/pages/household_wheelchair_check.rb
  12. 3
      app/models/form/sales/questions/armed_forces.rb
  13. 2
      app/models/form/sales/questions/armed_forces_spouse.rb
  14. 2
      app/models/form/sales/questions/buyer_still_serving.rb
  15. 3
      app/models/form/sales/questions/household_disability.rb
  16. 2
      app/models/form/sales/questions/household_wheelchair.rb
  17. 3
      app/models/form/sales/questions/household_wheelchair_check.rb
  18. 2
      app/models/forms/bulk_upload_lettings/checking_file.rb
  19. 2
      app/models/forms/bulk_upload_lettings/needstype.rb
  20. 2
      app/models/forms/bulk_upload_lettings/prepare_your_file.rb
  21. 2
      app/models/forms/bulk_upload_lettings/upload_your_file.rb
  22. 2
      app/models/forms/bulk_upload_lettings/year.rb
  23. 2
      app/models/forms/bulk_upload_sales/checking_file.rb
  24. 2
      app/models/forms/bulk_upload_sales/prepare_your_file.rb
  25. 2
      app/models/forms/bulk_upload_sales/upload_your_file.rb
  26. 2
      app/models/forms/bulk_upload_sales/year.rb
  27. 6
      app/models/user.rb
  28. 10
      app/models/validations/sales/setup_validations.rb
  29. 10
      app/models/validations/setup_validations.rb
  30. 4
      app/services/storage/local_disk_service.rb
  31. 2
      app/views/bulk_upload_lettings_logs/forms/prepare_your_file_2023.html.erb
  32. 2
      app/views/bulk_upload_lettings_logs/forms/prepare_your_file_2024.html.erb
  33. 2
      app/views/bulk_upload_lettings_results/show.html.erb
  34. 2
      app/views/bulk_upload_lettings_results/summary.html.erb
  35. 2
      app/views/bulk_upload_lettings_resume/chosen.html.erb
  36. 2
      app/views/bulk_upload_lettings_resume/completed.html.erb
  37. 2
      app/views/bulk_upload_lettings_resume/confirm.html.erb
  38. 2
      app/views/bulk_upload_lettings_resume/deletion_report.html.erb
  39. 2
      app/views/bulk_upload_lettings_resume/fix_choice.html.erb
  40. 2
      app/views/bulk_upload_lettings_soft_validations_check/chosen.html.erb
  41. 2
      app/views/bulk_upload_lettings_soft_validations_check/confirm.html.erb
  42. 2
      app/views/bulk_upload_lettings_soft_validations_check/confirm_soft_errors.html.erb
  43. 2
      app/views/bulk_upload_sales_results/show.html.erb
  44. 2
      app/views/bulk_upload_sales_results/summary.html.erb
  45. 2
      app/views/bulk_upload_sales_resume/chosen.html.erb
  46. 2
      app/views/bulk_upload_sales_resume/completed.html.erb
  47. 2
      app/views/bulk_upload_sales_resume/confirm.html.erb
  48. 2
      app/views/bulk_upload_sales_resume/deletion_report.html.erb
  49. 2
      app/views/bulk_upload_sales_resume/fix_choice.html.erb
  50. 2
      app/views/bulk_upload_sales_soft_validations_check/chosen.html.erb
  51. 2
      app/views/bulk_upload_sales_soft_validations_check/confirm.html.erb
  52. 2
      app/views/bulk_upload_sales_soft_validations_check/confirm_soft_errors.html.erb
  53. 2
      app/views/logs/edit.html.erb
  54. 6
      config/locales/en.yml
  55. 34
      config/locales/forms/2023/sales/household_needs.en.yml
  56. 6
      config/locales/forms/2023/sales/soft_validations.en.yml
  57. 34
      config/locales/forms/2024/sales/household_needs.en.yml
  58. 7
      config/locales/forms/2024/sales/soft_validations.en.yml
  59. 4
      config/locales/validations/sales/setup.en.yml
  60. 4
      docs/Gemfile.lock
  61. 2
      spec/components/bulk_upload_summary_component_spec.rb
  62. 11
      spec/features/bulk_upload_lettings_logs_spec.rb
  63. 6
      spec/features/bulk_upload_sales_logs_spec.rb
  64. 2
      spec/features/sales_log_spec.rb
  65. 12
      spec/helpers/filters_helper_spec.rb
  66. 8
      spec/helpers/tasklist_helper_spec.rb
  67. 4
      spec/models/bulk_upload_spec.rb
  68. 3
      spec/models/form/sales/pages/household_wheelchair_check_spec.rb
  69. 3
      spec/models/form/sales/subsections/household_needs_spec.rb
  70. 6
      spec/models/forms/bulk_upload_lettings/year_spec.rb
  71. 6
      spec/models/forms/bulk_upload_sales/year_spec.rb
  72. 16
      spec/models/validations/sales/setup_validations_spec.rb
  73. 30
      spec/models/validations/setup_validations_spec.rb
  74. 4
      spec/requests/bulk_upload_lettings_results_controller_spec.rb
  75. 8
      spec/requests/bulk_upload_lettings_resume_controller_spec.rb
  76. 2
      spec/requests/bulk_upload_lettings_soft_validations_check_controller_spec.rb
  77. 2
      spec/requests/bulk_upload_sales_results_controller_spec.rb
  78. 8
      spec/requests/bulk_upload_sales_resume_controller_spec.rb
  79. 2
      spec/requests/bulk_upload_sales_soft_validations_check_controller_spec.rb
  80. 27
      spec/requests/lettings_logs_controller_spec.rb
  81. 2
      spec/requests/sales_logs_controller_spec.rb
  82. 26
      spec/views/logs/edit.html.erb_spec.rb

4
Gemfile.lock

@ -377,8 +377,7 @@ GEM
responders (3.1.1) responders (3.1.1)
actionpack (>= 5.2) actionpack (>= 5.2)
railties (>= 5.2) railties (>= 5.2)
rexml (3.3.6) rexml (3.3.9)
strscan
roo (2.10.1) roo (2.10.1)
nokogiri (~> 1) nokogiri (~> 1)
rubyzip (>= 1.3.0, < 3.0.0) rubyzip (>= 1.3.0, < 3.0.0)
@ -463,7 +462,6 @@ GEM
smart_properties (1.17.0) smart_properties (1.17.0)
stimulus-rails (1.3.3) stimulus-rails (1.3.3)
railties (>= 6.0.0) railties (>= 6.0.0)
strscan (3.1.0)
thor (1.3.2) thor (1.3.2)
thread_safe (0.3.6) thread_safe (0.3.6)
timecop (0.9.8) timecop (0.9.8)

2
app/components/bulk_upload_summary_component.html.erb

@ -4,7 +4,7 @@
<header class="app-log-summary__header"> <header class="app-log-summary__header">
<h2 class="govuk-heading-m govuk-!-font-weight-regular govuk-!-margin-bottom-0 text-normal-break "> <h2 class="govuk-heading-m govuk-!-font-weight-regular govuk-!-margin-bottom-0 text-normal-break ">
<span class="govuk-!-margin-right-1"><%= bulk_upload.filename %></span> <span class="govuk-!-margin-right-1"><%= bulk_upload.filename %></span>
<span class="app-metadata app-log-summary__details" style="white-space: nowrap;"><%= bulk_upload.year %>/<%= bulk_upload.year + 1 %></span> <span class="app-metadata app-log-summary__details" style="white-space: nowrap;"><%= bulk_upload.year %> to <%= bulk_upload.year + 1 %></span>
</h2> </h2>
</header> </header>
<div class="govuk-!-margin-bottom-2"> <div class="govuk-!-margin-bottom-2">

2
app/controllers/lettings_logs_controller.rb

@ -65,7 +65,7 @@ class LettingsLogsController < LogsController
elsif @log.collection_closed_for_editing? elsif @log.collection_closed_for_editing?
redirect_to review_lettings_log_path(@log) redirect_to review_lettings_log_path(@log)
else else
render("logs/edit", locals: { current_user: }) render("logs/edit", locals: { current_user:, bulk_upload_filter_applied: session_filters["bulk_upload_id"].present? })
end end
end end

2
app/controllers/sales_logs_controller.rb

@ -39,7 +39,7 @@ class SalesLogsController < LogsController
if @log.collection_closed_for_editing? if @log.collection_closed_for_editing?
redirect_to review_sales_log_path(@log, sales_log: true) redirect_to review_sales_log_path(@log, sales_log: true)
else else
render "logs/edit", locals: { current_user: } render "logs/edit", locals: { current_user:, bulk_upload_filter_applied: session_filters["bulk_upload_id"].present? }
end end
end end

17
app/controllers/users_controller.rb

@ -257,13 +257,7 @@ private
def user_params def user_params
if @user == current_user if @user == current_user
if current_user.data_coordinator? current_user_params
params.require(:user).permit(:email, :phone, :phone_extension, :name, :password, :password_confirmation, :role, :is_dpo, :is_key_contact, :initial_confirmation_sent)
elsif current_user.support?
params.require(:user).permit(:email, :phone, :phone_extension, :name, :password, :password_confirmation, :role, :is_dpo, :is_key_contact, :initial_confirmation_sent, :organisation_id)
else
params.require(:user).permit(:email, :phone, :phone_extension, :name, :password, :password_confirmation, :initial_confirmation_sent)
end
elsif current_user.data_coordinator? elsif current_user.data_coordinator?
params.require(:user).permit(:email, :phone, :phone_extension, :name, :role, :is_dpo, :is_key_contact, :active, :initial_confirmation_sent) params.require(:user).permit(:email, :phone, :phone_extension, :name, :role, :is_dpo, :is_key_contact, :active, :initial_confirmation_sent)
elsif current_user.support? elsif current_user.support?
@ -271,6 +265,15 @@ private
end end
end end
def current_user_params
base_params = %i[email phone phone_extension name password password_confirmation initial_confirmation_sent]
return params.require(:user).permit(*(base_params + %i[role is_dpo is_key_contact])) if current_user.data_coordinator?
return params.require(:user).permit(*(base_params + %i[role is_dpo is_key_contact organisation_id])) if current_user.support?
return params.require(:user).permit(*(base_params + [:role])) if Rails.env.staging? && current_user.in_staging_role_update_email_allowlist?
params.require(:user).permit(*base_params)
end
def user_params_without_org def user_params_without_org
user_params.except(:organisation_id) user_params.except(:organisation_id)
end end

2
app/helpers/filters_helper.rb

@ -287,7 +287,7 @@ private
end end
def year_combo(year) def year_combo(year)
"#{year}/#{year - 2000 + 1}" "#{year} to #{year + 1}"
end end
def formatted_years_filter(session_filters) def formatted_years_filter(session_filters)

8
app/helpers/log_actions_helper.rb

@ -2,8 +2,8 @@ module LogActionsHelper
include GovukLinkHelper include GovukLinkHelper
include GovukVisuallyHiddenHelper include GovukVisuallyHiddenHelper
def edit_actions_for_log(log) def edit_actions_for_log(log, bulk_upload_filter_applied)
back = back_button_for(log) back = back_button_for(log, bulk_upload_filter_applied)
delete = delete_button_for_log(log) delete = delete_button_for_log(log)
return if back.nil? && delete.nil? return if back.nil? && delete.nil?
@ -15,9 +15,9 @@ module LogActionsHelper
private private
def back_button_for(log) def back_button_for(log, bulk_upload_filter_applied)
if log.completed? if log.completed?
if log.creation_method_bulk_upload? && log.bulk_upload.present? if log.creation_method_bulk_upload? && log.bulk_upload.present? && bulk_upload_filter_applied
if log.lettings? if log.lettings?
govuk_button_link_to "Back to uploaded logs", resume_bulk_upload_lettings_result_path(log.bulk_upload) govuk_button_link_to "Back to uploaded logs", resume_bulk_upload_lettings_result_path(log.bulk_upload)
else else

2
app/helpers/review_helper.rb

@ -6,7 +6,7 @@ module ReviewHelper
"You can review and make changes to this log until #{log.form.submission_deadline.to_formatted_s(:govuk_date)}.".html_safe "You can review and make changes to this log until #{log.form.submission_deadline.to_formatted_s(:govuk_date)}.".html_safe
else else
start_year = log.startdate ? collection_start_year_for_date(log.startdate) : log.form.start_date.year start_year = log.startdate ? collection_start_year_for_date(log.startdate) : log.form.start_date.year
"This log is from the #{start_year}/#{start_year + 1} collection window, which is now closed." "This log is from the #{start_year} to #{start_year + 1} collection window, which is now closed."
end end
end end

2
app/helpers/tasklist_helper.rb

@ -55,7 +55,7 @@ module TasklistHelper
else else
start_year = log.startdate ? collection_start_year_for_date(log.startdate) : log.form.start_date.year start_year = log.startdate ? collection_start_year_for_date(log.startdate) : log.form.start_date.year
"This log is from the #{start_year}/#{start_year + 1} collection window, which is now closed." "This log is from the #{start_year} to #{start_year + 1} collection window, which is now closed."
end end
end end

2
app/models/bulk_upload.rb

@ -59,7 +59,7 @@ class BulkUpload < ApplicationRecord
end end
def year_combo def year_combo
"#{year}/#{year - 2000 + 1}" "#{year} to #{year + 1}"
end end
def end_year def end_year

4
app/models/form/sales/pages/household_wheelchair_check.rb

@ -6,8 +6,8 @@ class Form::Sales::Pages::HouseholdWheelchairCheck < ::Form::Page
"wheelchair_when_not_disabled?" => true, "wheelchair_when_not_disabled?" => true,
}, },
] ]
@informative_text = {} @copy_key = "sales.soft_validations.wheel_value_check"
@title_text = { "translation" => "soft_validations.wheelchair.title_text" } @title_text = { "translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text" }
end end
def questions def questions

3
app/models/form/sales/questions/armed_forces.rb

@ -2,10 +2,7 @@ class Form::Sales::Questions::ArmedForces < ::Form::Question
def initialize(id, hsh, page) def initialize(id, hsh, page)
super super
@id = "hhregres" @id = "hhregres"
@check_answer_label = "Have any of the buyers ever served as a regular in the UK armed forces?"
@header = "Have any of the buyers ever served as a regular in the UK armed forces?"
@type = "radio" @type = "radio"
@hint_text = "A regular is somebody who has served in the Royal Navy, the Royal Marines, the Royal Airforce or Army full time and does not include reserve forces"
@answer_options = ANSWER_OPTIONS @answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
end end

2
app/models/form/sales/questions/armed_forces_spouse.rb

@ -2,8 +2,6 @@ class Form::Sales::Questions::ArmedForcesSpouse < ::Form::Question
def initialize(id, hsh, page) def initialize(id, hsh, page)
super super
@id = "armedforcesspouse" @id = "armedforcesspouse"
@check_answer_label = "Are any of the buyers a spouse or civil partner of a UK armed forces regular who died in service within the last 2 years?"
@header = "Are any of the buyers a spouse or civil partner of a UK armed forces regular who died in service within the last 2 years?"
@type = "radio" @type = "radio"
@answer_options = ANSWER_OPTIONS @answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]

2
app/models/form/sales/questions/buyer_still_serving.rb

@ -2,8 +2,6 @@ class Form::Sales::Questions::BuyerStillServing < ::Form::Question
def initialize(id, hsh, page) def initialize(id, hsh, page)
super super
@id = "hhregresstill" @id = "hhregresstill"
@check_answer_label = "Are they still serving in the UK armed forces?"
@header = "Is the buyer still serving in the UK armed forces?"
@type = "radio" @type = "radio"
@answer_options = ANSWER_OPTIONS @answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]

3
app/models/form/sales/questions/household_disability.rb

@ -2,11 +2,8 @@ class Form::Sales::Questions::HouseholdDisability < ::Form::Question
def initialize(id, hsh, page) def initialize(id, hsh, page)
super super
@id = "disabled" @id = "disabled"
@header = "Does anyone in the household consider themselves to have a disability?"
@check_answer_label = "Does anyone in the household have a disability?"
@type = "radio" @type = "radio"
@answer_options = ANSWER_OPTIONS @answer_options = ANSWER_OPTIONS
@hint_text = "This includes any long-term health condition that has an impact on the person's day-to-day life"
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
end end

2
app/models/form/sales/questions/household_wheelchair.rb

@ -2,10 +2,8 @@ class Form::Sales::Questions::HouseholdWheelchair < ::Form::Question
def initialize(id, hsh, page) def initialize(id, hsh, page)
super super
@id = "wheel" @id = "wheel"
@header = "Does anyone in the household use a wheelchair?"
@type = "radio" @type = "radio"
@answer_options = ANSWER_OPTIONS @answer_options = ANSWER_OPTIONS
@hint_text = "This can be inside or outside the home"
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
end end

3
app/models/form/sales/questions/household_wheelchair_check.rb

@ -2,8 +2,7 @@ class Form::Sales::Questions::HouseholdWheelchairCheck < ::Form::Question
def initialize(id, hsh, page) def initialize(id, hsh, page)
super super
@id = "wheel_value_check" @id = "wheel_value_check"
@check_answer_label = "Does anyone in the household use a wheelchair?" @copy_key = "sales.soft_validations.wheel_value_check"
@header = "You told us that someone in the household uses a wheelchair."
@type = "interruption_screen" @type = "interruption_screen"
@answer_options = { @answer_options = {
"0" => { "value" => "Yes" }, "0" => { "value" => "Yes" },

2
app/models/forms/bulk_upload_lettings/checking_file.rb

@ -21,7 +21,7 @@ module Forms
end end
def year_combo def year_combo
"#{year}/#{year + 1 - 2000}" "#{year} to #{year + 1}"
end end
def save! def save!

2
app/models/forms/bulk_upload_lettings/needstype.rb

@ -28,7 +28,7 @@ module Forms
end end
def year_combo def year_combo
"#{year}/#{year + 1 - 2000}" "#{year} to #{year + 1}"
end end
def save! def save!

2
app/models/forms/bulk_upload_lettings/prepare_your_file.rb

@ -41,7 +41,7 @@ module Forms
end end
def year_combo def year_combo
"#{year}/#{year + 1 - 2000}" "#{year} to #{year + 1}"
end end
def save! def save!

2
app/models/forms/bulk_upload_lettings/upload_your_file.rb

@ -25,7 +25,7 @@ module Forms
end end
def year_combo def year_combo
"#{year}/#{year + 1 - 2000}" "#{year} to #{year + 1}"
end end
def next_path def next_path

2
app/models/forms/bulk_upload_lettings/year.rb

@ -16,7 +16,7 @@ module Forms
def options def options
possible_years.map do |year| possible_years.map do |year|
OpenStruct.new(id: year, name: "#{year}/#{year + 1}") OpenStruct.new(id: year, name: "#{year} to #{year + 1}")
end end
end end

2
app/models/forms/bulk_upload_sales/checking_file.rb

@ -21,7 +21,7 @@ module Forms
end end
def year_combo def year_combo
"#{year}/#{year + 1 - 2000}" "#{year} to #{year + 1}"
end end
def save! def save!

2
app/models/forms/bulk_upload_sales/prepare_your_file.rb

@ -40,7 +40,7 @@ module Forms
end end
def year_combo def year_combo
"#{year}/#{year + 1 - 2000}" "#{year} to #{year + 1}"
end end
def save! def save!

2
app/models/forms/bulk_upload_sales/upload_your_file.rb

@ -24,7 +24,7 @@ module Forms
end end
def year_combo def year_combo
"#{year}/#{year + 1 - 2000}" "#{year} to #{year + 1}"
end end
def next_path def next_path

2
app/models/forms/bulk_upload_sales/year.rb

@ -16,7 +16,7 @@ module Forms
def options def options
possible_years.map do |year| possible_years.map do |year|
OpenStruct.new(id: year, name: "#{year}/#{year + 1}") OpenStruct.new(id: year, name: "#{year} to #{year + 1}")
end end
end end

6
app/models/user.rb

@ -212,7 +212,7 @@ class User < ApplicationRecord
end end
def assignable_roles def assignable_roles
if Rails.env.staging? && Rails.application.credentials[:staging_role_update_email_allowlist].include?(email.split("@").last.downcase) if Rails.env.staging? && in_staging_role_update_email_allowlist?
return ROLES return ROLES
end end
@ -222,6 +222,10 @@ class User < ApplicationRecord
ROLES.except(:support) ROLES.except(:support)
end end
def in_staging_role_update_email_allowlist?
Rails.application.credentials[:staging_role_update_email_allowlist].include?(email.split("@").last.downcase)
end
def logs_filters(specific_org: false) def logs_filters(specific_org: false)
if (support? && !specific_org) || organisation.has_managing_agents? || organisation.has_stock_owners? if (support? && !specific_org) || organisation.has_managing_agents? || organisation.has_stock_owners?
%w[years status needstypes assigned_to user owning_organisation managing_organisation bulk_upload_id user_text_search owning_organisation_text_search managing_organisation_text_search] %w[years status needstypes assigned_to user owning_organisation managing_organisation bulk_upload_id user_text_search owning_organisation_text_search managing_organisation_text_search]

10
app/models/validations/sales/setup_validations.rb

@ -80,18 +80,18 @@ private
if FormHandler.instance.sales_in_crossover_period? if FormHandler.instance.sales_in_crossover_period?
I18n.t( I18n.t(
"validations.sales.setup.saledate.must_be_within.previous_and_current_collection_year", "validations.sales.setup.saledate.must_be_within.previous_and_current_collection_year",
previous_start_year_short: previous_collection_start_date.strftime("%y"), previous_start_year_short: previous_collection_start_date.strftime("%Y"),
previous_end_year_short: previous_collection_end_date.strftime("%y"), previous_end_year_short: previous_collection_end_date.strftime("%Y"),
previous_start_year_long: previous_collection_start_date.strftime("#{previous_collection_start_date.day.ordinalize} %B %Y"), previous_start_year_long: previous_collection_start_date.strftime("#{previous_collection_start_date.day.ordinalize} %B %Y"),
current_end_year_short: current_collection_end_date.strftime("%y"), current_end_year_short: current_collection_end_date.strftime("%Y"),
current_end_year_long: current_collection_end_date.strftime("#{current_collection_end_date.day.ordinalize} %B %Y"), current_end_year_long: current_collection_end_date.strftime("#{current_collection_end_date.day.ordinalize} %B %Y"),
) )
else else
I18n.t( I18n.t(
"validations.sales.setup.saledate.must_be_within.current_collection_year", "validations.sales.setup.saledate.must_be_within.current_collection_year",
current_start_year_short: current_collection_start_date.strftime("%y"), current_start_year_short: current_collection_start_date.strftime("%Y"),
current_start_year_long: current_collection_start_date.strftime("#{current_collection_start_date.day.ordinalize} %B %Y"), current_start_year_long: current_collection_start_date.strftime("#{current_collection_start_date.day.ordinalize} %B %Y"),
current_end_year_short: current_collection_end_date.strftime("%y"), current_end_year_short: current_collection_end_date.strftime("%Y"),
current_end_year_long: current_collection_end_date.strftime("#{current_collection_end_date.day.ordinalize} %B %Y"), current_end_year_long: current_collection_end_date.strftime("#{current_collection_end_date.day.ordinalize} %B %Y"),
) )
end end

10
app/models/validations/setup_validations.rb

@ -130,17 +130,17 @@ private
if FormHandler.instance.lettings_in_crossover_period? if FormHandler.instance.lettings_in_crossover_period?
I18n.t( I18n.t(
"validations.setup.startdate.previous_and_current_collection_year", "validations.setup.startdate.previous_and_current_collection_year",
previous_start_year_short: previous_collection_start_date.strftime("%y"), previous_start_year_short: previous_collection_start_date.strftime("%Y"),
previous_end_year_short: previous_collection_end_date.strftime("%y"), previous_end_year_short: previous_collection_end_date.strftime("%Y"),
previous_start_year_long: previous_collection_start_date.strftime("#{previous_collection_start_date.day.ordinalize} %B %Y"), previous_start_year_long: previous_collection_start_date.strftime("#{previous_collection_start_date.day.ordinalize} %B %Y"),
current_end_year_short: current_collection_end_date.strftime("%y"), current_end_year_short: current_collection_end_date.strftime("%Y"),
current_end_year_long:, current_end_year_long:,
) )
else else
I18n.t( I18n.t(
"validations.setup.startdate.current_collection_year", "validations.setup.startdate.current_collection_year",
current_start_year_short: current_collection_start_date.strftime("%y"), current_start_year_short: current_collection_start_date.strftime("%Y"),
current_end_year_short: current_collection_end_date.strftime("%y"), current_end_year_short: current_collection_end_date.strftime("%Y"),
current_start_year_long: current_collection_start_date.strftime("#{current_collection_start_date.day.ordinalize} %B %Y"), current_start_year_long: current_collection_start_date.strftime("#{current_collection_start_date.day.ordinalize} %B %Y"),
current_end_year_long:, current_end_year_long:,
) )

4
app/services/storage/local_disk_service.rb

@ -19,7 +19,9 @@ module Storage
File.open(path, "r") File.open(path, "r")
end end
def write_file(filename, data, _content_type: nil) # rubocop:disable Lint/UnusedMethodArgument
def write_file(filename, data, content_type: nil)
# rubocop:enable Lint/UnusedMethodArgument
path = Rails.root.join("tmp/storage", filename) path = Rails.root.join("tmp/storage", filename)
FileUtils.mkdir_p(path.dirname) FileUtils.mkdir_p(path.dirname)

2
app/views/bulk_upload_lettings_logs/forms/prepare_your_file_2023.html.erb

@ -31,7 +31,7 @@
<li>If you are using the new template, keep the headers. If you are using the legacy template, you can either keep or remove the headers. If you remove the headers, you should also remove the blank column A.</li> <li>If you are using the new template, keep the headers. If you are using the legacy template, you can either keep or remove the headers. If you remove the headers, you should also remove the blank column A.</li>
</ul> </ul>
<%= govuk_inset_text(text: "You can upload both general needs and supported housing logs in the same file for 2023/24 data.") %> <%= govuk_inset_text(text: "You can upload both general needs and supported housing logs in the same file for 2023 to 2024 data.") %>
<h2 class="govuk-heading-s">Save your file</h2> <h2 class="govuk-heading-s">Save your file</h2>

2
app/views/bulk_upload_lettings_logs/forms/prepare_your_file_2024.html.erb

@ -27,7 +27,7 @@
<li>If you have reordered the headers, keep the headers in the file.</li> <li>If you have reordered the headers, keep the headers in the file.</li>
</ul> </ul>
<%= govuk_inset_text(text: "You can upload both general needs and supported housing logs in the same file for 2024/25 data.") %> <%= govuk_inset_text(text: "You can upload both general needs and supported housing logs in the same file for 2024 to 2025 data.") %>
<h2 class="govuk-heading-s">Save your file</h2> <h2 class="govuk-heading-s">Save your file</h2>

2
app/views/bulk_upload_lettings_results/show.html.erb

@ -6,7 +6,7 @@
<div class="govuk-grid-row"> <div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<span class="govuk-caption-l">Bulk upload for lettings (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload lettings logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">We found <%= pluralize(@bulk_upload.bulk_upload_errors.count, "error") %> in your file</h1> <h1 class="govuk-heading-l">We found <%= pluralize(@bulk_upload.bulk_upload_errors.count, "error") %> in your file</h1>
<div class="govuk-body"> <div class="govuk-body">

2
app/views/bulk_upload_lettings_results/summary.html.erb

@ -2,7 +2,7 @@
<div class="govuk-grid-row"> <div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<span class="govuk-caption-l">Bulk upload for lettings (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload lettings logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">Fix <%= pluralize(@bulk_upload.bulk_upload_errors.count, "error") %> and upload file again</h1> <h1 class="govuk-heading-l">Fix <%= pluralize(@bulk_upload.bulk_upload_errors.count, "error") %> and upload file again</h1>
<p class="govuk-body"> <p class="govuk-body">

2
app/views/bulk_upload_lettings_resume/chosen.html.erb

@ -4,7 +4,7 @@
<div class="govuk-grid-row"> <div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<span class="govuk-caption-l">Bulk upload for lettings (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload lettings logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">You need to fix logs from your bulk upload</h1> <h1 class="govuk-heading-l">You need to fix logs from your bulk upload</h1>
<p class="govuk-body">You have chosen to create logs from your recent bulk upload. To view and complete these logs, return to the list of lettings logs.</p> <p class="govuk-body">You have chosen to create logs from your recent bulk upload. To view and complete these logs, return to the list of lettings logs.</p>

2
app/views/bulk_upload_lettings_resume/completed.html.erb

@ -4,7 +4,7 @@
<div class="govuk-grid-row"> <div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<span class="govuk-caption-l">Bulk upload for lettings (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload lettings logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">These logs are complete</h1> <h1 class="govuk-heading-l">These logs are complete</h1>
<p class="govuk-body">You have created logs from your bulk upload, and the logs are complete. Return to lettings logs to view them.</p> <p class="govuk-body">You have created logs from your bulk upload, and the logs are complete. Return to lettings logs to view them.</p>

2
app/views/bulk_upload_lettings_resume/confirm.html.erb

@ -4,7 +4,7 @@
<div class="govuk-grid-row"> <div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<span class="govuk-caption-l">Bulk upload for lettings (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload lettings logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">Are you sure you want to upload all logs from this bulk upload?</h1> <h1 class="govuk-heading-l">Are you sure you want to upload all logs from this bulk upload?</h1>
<p class="govuk-body"> <p class="govuk-body">

2
app/views/bulk_upload_lettings_resume/deletion_report.html.erb

@ -4,7 +4,7 @@
<div class="govuk-grid-row"> <div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<span class="govuk-caption-l">Bulk upload for lettings (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload lettings logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l"><%= answers_to_be_deleted_title_text(@bulk_upload) %></h1> <h1 class="govuk-heading-l"><%= answers_to_be_deleted_title_text(@bulk_upload) %></h1>
<p>The following cells contain data this is incorrect.</p> <p>The following cells contain data this is incorrect.</p>

2
app/views/bulk_upload_lettings_resume/fix_choice.html.erb

@ -3,7 +3,7 @@
<%= form_with model: @form, scope: :form, url: page_bulk_upload_lettings_resume_path(@bulk_upload, page: "fix-choice"), method: :patch do |f| %> <%= form_with model: @form, scope: :form, url: page_bulk_upload_lettings_resume_path(@bulk_upload, page: "fix-choice"), method: :patch do |f| %>
<%= f.govuk_error_summary %> <%= f.govuk_error_summary %>
<span class="govuk-caption-l">Bulk upload for lettings (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload lettings logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">How would you like to fix the errors?</h1> <h1 class="govuk-heading-l">How would you like to fix the errors?</h1>
<div class="govuk-body-l"> <div class="govuk-body-l">

2
app/views/bulk_upload_lettings_soft_validations_check/chosen.html.erb

@ -4,7 +4,7 @@
<div class="govuk-grid-row"> <div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<span class="govuk-caption-l">Bulk upload for lettings (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload lettings logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">These logs are complete</h1> <h1 class="govuk-heading-l">These logs are complete</h1>
<p class="govuk-body">You have created logs from your bulk upload, and the logs are complete. Return to lettings logs to view them.</p> <p class="govuk-body">You have created logs from your bulk upload, and the logs are complete. Return to lettings logs to view them.</p>

2
app/views/bulk_upload_lettings_soft_validations_check/confirm.html.erb

@ -4,7 +4,7 @@
<div class="govuk-grid-row"> <div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<span class="govuk-caption-l">Bulk upload for lettings (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload lettings logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">You have chosen to upload all logs from this bulk upload.</h1> <h1 class="govuk-heading-l">You have chosen to upload all logs from this bulk upload.</h1>
<p class="govuk-body"><%= logs_and_soft_validations_warning(@bulk_upload) %></p> <p class="govuk-body"><%= logs_and_soft_validations_warning(@bulk_upload) %></p>

2
app/views/bulk_upload_lettings_soft_validations_check/confirm_soft_errors.html.erb

@ -3,7 +3,7 @@
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<%= f.govuk_error_summary %> <%= f.govuk_error_summary %>
<span class="govuk-caption-l">Bulk upload for lettings (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload lettings logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">Check these <%= pluralize(@bulk_upload.bulk_upload_errors.count, "answer") %> </h1> <h1 class="govuk-heading-l">Check these <%= pluralize(@bulk_upload.bulk_upload_errors.count, "answer") %> </h1>
<p class="govuk-body-l">Some data from your bulk upload might not be right. Check your file for any errors in the fields below.</p> <p class="govuk-body-l">Some data from your bulk upload might not be right. Check your file for any errors in the fields below.</p>

2
app/views/bulk_upload_sales_results/show.html.erb

@ -6,7 +6,7 @@
<div class="govuk-grid-row"> <div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<span class="govuk-caption-l">Bulk Upload for sales (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload sales logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">We found <%= pluralize(@bulk_upload.bulk_upload_errors.count, "error") %> in your file</h1> <h1 class="govuk-heading-l">We found <%= pluralize(@bulk_upload.bulk_upload_errors.count, "error") %> in your file</h1>
<div class="govuk-body"> <div class="govuk-body">

2
app/views/bulk_upload_sales_results/summary.html.erb

@ -2,7 +2,7 @@
<div class="govuk-grid-row"> <div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<span class="govuk-caption-l">Bulk upload for sales (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload sales logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">Fix <%= pluralize(@bulk_upload.bulk_upload_errors.count, "error") %> and upload file again</h1> <h1 class="govuk-heading-l">Fix <%= pluralize(@bulk_upload.bulk_upload_errors.count, "error") %> and upload file again</h1>
<p class="govuk-body"> <p class="govuk-body">

2
app/views/bulk_upload_sales_resume/chosen.html.erb

@ -4,7 +4,7 @@
<div class="govuk-grid-row"> <div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<span class="govuk-caption-l">Bulk upload for sales (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload sales logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">You need to fix logs from your bulk upload</h1> <h1 class="govuk-heading-l">You need to fix logs from your bulk upload</h1>
<p class="govuk-body">You have chosen to create logs from your recent bulk upload. To view and complete these logs, return to the list of sales logs.</p> <p class="govuk-body">You have chosen to create logs from your recent bulk upload. To view and complete these logs, return to the list of sales logs.</p>

2
app/views/bulk_upload_sales_resume/completed.html.erb

@ -4,7 +4,7 @@
<div class="govuk-grid-row"> <div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<span class="govuk-caption-l">Bulk upload for sales (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload sales logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">These logs are complete</h1> <h1 class="govuk-heading-l">These logs are complete</h1>
<p class="govuk-body">You have created logs from your bulk upload, and the logs are complete. Return to sales logs to view them.</p> <p class="govuk-body">You have created logs from your bulk upload, and the logs are complete. Return to sales logs to view them.</p>

2
app/views/bulk_upload_sales_resume/confirm.html.erb

@ -4,7 +4,7 @@
<div class="govuk-grid-row"> <div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<span class="govuk-caption-l">Bulk upload for sales (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload sales logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">Are you sure you want to upload all logs from this bulk upload?</h1> <h1 class="govuk-heading-l">Are you sure you want to upload all logs from this bulk upload?</h1>
<p class="govuk-body"> <p class="govuk-body">

2
app/views/bulk_upload_sales_resume/deletion_report.html.erb

@ -4,7 +4,7 @@
<div class="govuk-grid-row"> <div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<span class="govuk-caption-l">Bulk upload for sales (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload sales logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l"><%= answers_to_be_deleted_title_text(@bulk_upload) %></h1> <h1 class="govuk-heading-l"><%= answers_to_be_deleted_title_text(@bulk_upload) %></h1>
<p>The following cells contain data this is incorrect.</p> <p>The following cells contain data this is incorrect.</p>

2
app/views/bulk_upload_sales_resume/fix_choice.html.erb

@ -3,7 +3,7 @@
<%= form_with model: @form, scope: :form, url: page_bulk_upload_sales_resume_path(@bulk_upload, page: "fix-choice"), method: :patch do |f| %> <%= form_with model: @form, scope: :form, url: page_bulk_upload_sales_resume_path(@bulk_upload, page: "fix-choice"), method: :patch do |f| %>
<%= f.govuk_error_summary %> <%= f.govuk_error_summary %>
<span class="govuk-caption-l">Bulk upload for sales (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload sales logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">How would you like to fix the errors?</h1> <h1 class="govuk-heading-l">How would you like to fix the errors?</h1>
<div class="govuk-body-l"> <div class="govuk-body-l">

2
app/views/bulk_upload_sales_soft_validations_check/chosen.html.erb

@ -4,7 +4,7 @@
<div class="govuk-grid-row"> <div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<span class="govuk-caption-l">Bulk upload for sales (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload sales logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">These logs are complete</h1> <h1 class="govuk-heading-l">These logs are complete</h1>
<p class="govuk-body">You have created logs from your bulk upload, and the logs are complete. Return to sales logs to view them.</p> <p class="govuk-body">You have created logs from your bulk upload, and the logs are complete. Return to sales logs to view them.</p>

2
app/views/bulk_upload_sales_soft_validations_check/confirm.html.erb

@ -4,7 +4,7 @@
<div class="govuk-grid-row"> <div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<span class="govuk-caption-l">Bulk upload for sales (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload sales logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">You have chosen to upload all logs from this bulk upload.</h1> <h1 class="govuk-heading-l">You have chosen to upload all logs from this bulk upload.</h1>
<p class="govuk-body"><%= logs_and_soft_validations_warning(@bulk_upload) %></p> <p class="govuk-body"><%= logs_and_soft_validations_warning(@bulk_upload) %></p>

2
app/views/bulk_upload_sales_soft_validations_check/confirm_soft_errors.html.erb

@ -3,7 +3,7 @@
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<%= f.govuk_error_summary %> <%= f.govuk_error_summary %>
<span class="govuk-caption-l">Bulk upload for sales (<%= @bulk_upload.year_combo %>)</span> <span class="govuk-caption-l">Upload sales logs in bulk (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">Check these <%= pluralize(@bulk_upload.bulk_upload_errors.count, "answer") %> </h1> <h1 class="govuk-heading-l">Check these <%= pluralize(@bulk_upload.bulk_upload_errors.count, "answer") %> </h1>
<p class="govuk-body-l">Some data from your bulk upload might not be right. Check your file for any errors in the fields below.</p> <p class="govuk-body-l">Some data from your bulk upload might not be right. Check your file for any errors in the fields below.</p>

2
app/views/logs/edit.html.erb

@ -38,6 +38,6 @@
<%= render "tasklist" %> <%= render "tasklist" %>
<%= edit_actions_for_log(@log) %> <%= edit_actions_for_log(@log, bulk_upload_filter_applied) %>
</div> </div>
</div> </div>

6
config/locales/en.yml

@ -290,9 +290,9 @@ en:
startdate: startdate:
current_collection_year: current_collection_year:
"Enter a date within the %{current_start_year_short}/%{current_end_year_short} collection year, which is between %{current_start_year_long} and %{current_end_year_long}." "Enter a date within the %{current_start_year_short} to %{current_end_year_short} collection year, which is between %{current_start_year_long} and %{current_end_year_long}."
previous_and_current_collection_year: previous_and_current_collection_year:
"Enter a date within the %{previous_start_year_short}/%{previous_end_year_short} or %{previous_end_year_short}/%{current_end_year_short} collection years, which is between %{previous_start_year_long} and %{current_end_year_long}." "Enter a date within the %{previous_start_year_short} to %{previous_end_year_short} or %{previous_end_year_short} to %{current_end_year_short} collection years, which is between %{previous_start_year_long} and %{current_end_year_long}."
later_than_14_days_after: "The tenancy start date must not be later than 14 days from today’s date." later_than_14_days_after: "The tenancy start date must not be later than 14 days from today’s date."
before_scheme_end_date: "The tenancy start date must be before the end date for this supported housing scheme." before_scheme_end_date: "The tenancy start date must be before the end date for this supported housing scheme."
after_void_date: "Enter a tenancy start date that is after the void date." after_void_date: "Enter a tenancy start date that is after the void date."
@ -745,8 +745,6 @@ Make sure these answers are correct."
grant: grant:
title_text: "You told us that the grant amount is %{grant}." title_text: "You told us that the grant amount is %{grant}."
hint_text: "Loans, grants and subsidies are usually between £9,000 and £16,000." hint_text: "Loans, grants and subsidies are usually between £9,000 and £16,000."
wheelchair:
title_text: "You told us that someone in the household uses a wheelchair."
referral: referral:
title_text: "Are you sure?" title_text: "Are you sure?"
hint_text: "This is a general needs log, and this referral type is for supported housing." hint_text: "This is a general needs log, and this referral type is for supported housing."

34
config/locales/forms/2023/sales/household_needs.en.yml

@ -0,0 +1,34 @@
en:
forms:
2023:
sales:
household_needs:
hhregres:
page_header: ""
check_answer_label: "Have any of the buyers ever served as a regular in the UK armed forces?"
hint_text: "A regular is somebody who has served in the Royal Navy, the Royal Marines, the Royal Airforce or Army full time and does not include reserve forces"
question_text: "Have any of the buyers ever served as a regular in the UK armed forces?"
hhregresstill:
page_header: ""
check_answer_label: "Are they still serving in the UK armed forces?"
hint_text: ""
question_text: "Is the buyer still serving in the UK armed forces?"
armedforcesspouse:
page_header: ""
check_answer_label: "Are any of the buyers a spouse or civil partner of a UK armed forces regular who died in service within the last 2 years?"
hint_text: ""
question_text: "Are any of the buyers a spouse or civil partner of a UK armed forces regular who died in service within the last 2 years?"
disabled:
page_header: ""
check_answer_label: "Does anyone in the household have a disability?"
hint_text: "This includes any long-term health condition that has an impact on the person's day-to-day life"
question_text: "Does anyone in the household consider themselves to have a disability?"
wheel:
page_header: ""
check_answer_label: "Does anyone in the household use a wheelchair?"
hint_text: "This can be inside or outside the home"
question_text: "Does anyone in the household use a wheelchair?"

6
config/locales/forms/2023/sales/soft_validations.en.yml

@ -87,3 +87,9 @@ en:
not_joint_purchase: not_joint_purchase:
title_text: "You told us the buyer’s deposit was %{deposit} and their savings were %{savings}." title_text: "You told us the buyer’s deposit was %{deposit} and their savings were %{savings}."
informative_text: "The deposit amount is higher than we would expect for the amount of savings they have." informative_text: "The deposit amount is higher than we would expect for the amount of savings they have."
wheel_value_check:
page_header: ""
check_answer_label: "Does anyone in the household use a wheelchair?"
hint_text: ""
question_text: "You told us that someone in the household uses a wheelchair."
title_text: "You told us that someone in the household uses a wheelchair."

34
config/locales/forms/2024/sales/household_needs.en.yml

@ -0,0 +1,34 @@
en:
forms:
2024:
sales:
household_needs:
hhregres:
page_header: ""
check_answer_label: "Have any of the buyers ever served as a regular in the UK armed forces?"
hint_text: "A regular is somebody who has served in the Royal Navy, the Royal Marines, the Royal Airforce or Army full time and does not include reserve forces"
question_text: "Have any of the buyers ever served as a regular in the UK armed forces?"
hhregresstill:
page_header: ""
check_answer_label: "Are they still serving in the UK armed forces?"
hint_text: ""
question_text: "Is the buyer still serving in the UK armed forces?"
armedforcesspouse:
page_header: ""
check_answer_label: "Are any of the buyers a spouse or civil partner of a UK armed forces regular who died in service within the last 2 years?"
hint_text: ""
question_text: "Are any of the buyers a spouse or civil partner of a UK armed forces regular who died in service within the last 2 years?"
disabled:
page_header: ""
check_answer_label: "Does anyone in the household have a disability?"
hint_text: "This includes any long-term health condition that has an impact on the person's day-to-day life"
question_text: "Does anyone in the household consider themselves to have a disability?"
wheel:
page_header: ""
check_answer_label: "Does anyone in the household use a wheelchair?"
hint_text: "This can be inside or outside the home"
question_text: "Does anyone in the household use a wheelchair?"

7
config/locales/forms/2024/sales/soft_validations.en.yml

@ -96,3 +96,10 @@ en:
question_text: "" question_text: ""
title_text: "No address found." title_text: "No address found."
informative_text: "We could not find an address that matches your search. You can search again or continue to enter the address manually." informative_text: "We could not find an address that matches your search. You can search again or continue to enter the address manually."
wheel_value_check:
page_header: ""
check_answer_label: "Does anyone in the household use a wheelchair?"
hint_text: ""
question_text: "You told us that someone in the household uses a wheelchair."
title_text: "You told us that someone in the household uses a wheelchair."

4
config/locales/validations/sales/setup.en.yml

@ -7,9 +7,9 @@ en:
next_two_weeks: "Sale completion date must not be later than 14 days from today’s date." next_two_weeks: "Sale completion date must not be later than 14 days from today’s date."
must_be_within: must_be_within:
current_collection_year: current_collection_year:
"Enter a date within the %{current_start_year_short}/%{current_end_year_short} collection year, which is between %{current_start_year_long} and %{current_end_year_long}." "Enter a date within the %{current_start_year_short} to %{current_end_year_short} collection year, which is between %{current_start_year_long} and %{current_end_year_long}."
previous_and_current_collection_year: previous_and_current_collection_year:
"Enter a date within the %{previous_start_year_short}/%{previous_end_year_short} or %{previous_end_year_short}/%{current_end_year_short} collection years, which is between %{previous_start_year_long} and %{current_end_year_long}." "Enter a date within the %{previous_start_year_short} to %{previous_end_year_short} or %{previous_end_year_short} to %{current_end_year_short} collection years, which is between %{previous_start_year_long} and %{current_end_year_long}."
invalid: invalid:
merged_organisations: merged_organisations:
"Enter a date when the owning organisation was active. %{owning_organisation} became inactive on %{merge_date} and was replaced by %{absorbing_organisation}." "Enter a date when the owning organisation was active. %{owning_organisation} became inactive on %{merge_date} and was replaced by %{absorbing_organisation}."

4
docs/Gemfile.lock

@ -226,8 +226,7 @@ GEM
rb-fsevent (0.11.2) rb-fsevent (0.11.2)
rb-inotify (0.10.1) rb-inotify (0.10.1)
ffi (~> 1.0) ffi (~> 1.0)
rexml (3.3.6) rexml (3.3.9)
strscan
rouge (3.26.0) rouge (3.26.0)
ruby2_keywords (0.0.5) ruby2_keywords (0.0.5)
rubyzip (2.3.2) rubyzip (2.3.2)
@ -242,7 +241,6 @@ GEM
faraday (>= 0.17.3, < 3) faraday (>= 0.17.3, < 3)
simpleidn (0.2.1) simpleidn (0.2.1)
unf (~> 0.1.4) unf (~> 0.1.4)
strscan (3.1.0)
terminal-table (1.8.0) terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1) unicode-display_width (~> 1.1, >= 1.1.1)
typhoeus (1.4.0) typhoeus (1.4.0)

2
spec/components/bulk_upload_summary_component_spec.rb

@ -12,7 +12,7 @@ RSpec.describe BulkUploadSummaryComponent, type: :component do
it "shows the collection year" do it "shows the collection year" do
result = render_inline(described_class.new(bulk_upload:)) result = render_inline(described_class.new(bulk_upload:))
expect(result).to have_content("2024/2025") expect(result).to have_content("2024 to 2025")
end end
it "includes a download file link" do it "includes a download file link" do

11
spec/features/bulk_upload_lettings_logs_spec.rb

@ -5,8 +5,7 @@ RSpec.describe "Bulk upload lettings log" do
let(:user) { create(:user) } let(:user) { create(:user) }
let(:current_year) { current_collection_start_year } let(:current_year) { current_collection_start_year }
let(:current_formatted_year) { "#{current_year}/#{current_year + 1}" } let(:current_formatted_year) { "#{current_year} to #{current_year + 1}" }
let(:current_formatted_short_year) { "#{current_year}/#{current_year - 2000 + 1}" }
let(:stub_file_upload) do let(:stub_file_upload) do
vcap_services = { "aws-s3-bucket" => {} } vcap_services = { "aws-s3-bucket" => {} }
@ -47,12 +46,12 @@ RSpec.describe "Bulk upload lettings log" do
expect(page.find_field("form-year-#{current_year}-field")).to be_checked expect(page.find_field("form-year-#{current_year}-field")).to be_checked
click_button("Continue") click_button("Continue")
expect(page).to have_content("Upload lettings logs in bulk (#{current_formatted_short_year})") expect(page).to have_content("Upload lettings logs in bulk (#{current_formatted_year})")
click_button("Continue") click_button("Continue")
expect(page).not_to have_content("What is the needs type?") expect(page).not_to have_content("What is the needs type?")
expect(page).to have_content("Upload lettings logs in bulk (#{current_formatted_short_year})") expect(page).to have_content("Upload lettings logs in bulk (#{current_formatted_year})")
expect(page).to have_content("Upload your file") expect(page).to have_content("Upload your file")
click_button("Upload") click_button("Upload")
@ -88,7 +87,7 @@ RSpec.describe "Bulk upload lettings log" do
expect(page).to have_link("Upload lettings logs in bulk") expect(page).to have_link("Upload lettings logs in bulk")
click_link("Upload lettings logs in bulk") click_link("Upload lettings logs in bulk")
expect(page).to have_content("Upload lettings logs in bulk (#{current_formatted_short_year})") expect(page).to have_content("Upload lettings logs in bulk (#{current_formatted_year})")
click_button("Continue") click_button("Continue")
expect(page).to have_content("Upload your file") expect(page).to have_content("Upload your file")
@ -107,7 +106,7 @@ RSpec.describe "Bulk upload lettings log" do
expect(page).to have_content("Prepare your file") expect(page).to have_content("Prepare your file")
click_button("Continue") click_button("Continue")
expect(page).to have_content("Upload lettings logs in bulk (#{current_formatted_short_year})") expect(page).to have_content("Upload lettings logs in bulk (#{current_formatted_year})")
expect(page).to have_content("Upload your file") expect(page).to have_content("Upload your file")
click_button("Upload") click_button("Upload")

6
spec/features/bulk_upload_sales_logs_spec.rb

@ -38,7 +38,7 @@ RSpec.describe "Bulk upload sales log" do
click_button("Continue") click_button("Continue")
expect(page).to have_content("You must select a collection period to upload for") expect(page).to have_content("You must select a collection period to upload for")
choose("2023/2024") choose("2023 to 2024")
click_button("Continue") click_button("Continue")
click_link("Back") click_link("Back")
@ -46,7 +46,7 @@ RSpec.describe "Bulk upload sales log" do
expect(page.find_field("form-year-2023-field")).to be_checked expect(page.find_field("form-year-2023-field")).to be_checked
click_button("Continue") click_button("Continue")
expect(page).to have_content("Upload sales logs in bulk (2023/24)") expect(page).to have_content("Upload sales logs in bulk (2023 to 2024)")
click_button("Continue") click_button("Continue")
expect(page).to have_content("Upload your file") expect(page).to have_content("Upload your file")
@ -88,7 +88,7 @@ RSpec.describe "Bulk upload sales log" do
expect(page).to have_link("Upload sales logs in bulk") expect(page).to have_link("Upload sales logs in bulk")
click_link("Upload sales logs in bulk") click_link("Upload sales logs in bulk")
expect(page).to have_content("Upload sales logs in bulk (2023/24)") expect(page).to have_content("Upload sales logs in bulk (2023 to 2024)")
click_button("Continue") click_button("Continue")
expect(page).to have_content("Upload your file") expect(page).to have_content("Upload your file")

2
spec/features/sales_log_spec.rb

@ -191,7 +191,7 @@ RSpec.describe "Sales Log Features" do
context "when one year filter is selected" do context "when one year filter is selected" do
before do before do
check("2024") check("2024 to 2025")
click_button("Apply filters") click_button("Apply filters")
end end

12
spec/helpers/filters_helper_spec.rb

@ -491,7 +491,7 @@ RSpec.describe FiltersHelper do
it "has the correct options" do it "has the correct options" do
expect(collection_year_options).to eq( expect(collection_year_options).to eq(
{ {
"2023" => "2023/24", "2022" => "2022/23", "2021" => "2021/22" "2023" => "2023 to 2024", "2022" => "2022 to 2023", "2021" => "2021 to 2022"
}, },
) )
end end
@ -505,7 +505,7 @@ RSpec.describe FiltersHelper do
it "has the correct options" do it "has the correct options" do
expect(collection_year_options).to eq( expect(collection_year_options).to eq(
{ {
"2023" => "2023/24", "2022" => "2022/23" "2023" => "2023 to 2024", "2022" => "2022 to 2023"
}, },
) )
end end
@ -520,7 +520,7 @@ RSpec.describe FiltersHelper do
it "has the correct options" do it "has the correct options" do
expect(collection_year_options).to eq( expect(collection_year_options).to eq(
{ {
"2024" => "2024/25", "2023" => "2023/24", "2022" => "2022/23" "2024" => "2024 to 2025", "2023" => "2023 to 2024", "2022" => "2022 to 2023"
}, },
) )
end end
@ -541,7 +541,7 @@ RSpec.describe FiltersHelper do
it "has the correct options" do it "has the correct options" do
expect(collection_year_radio_options).to eq( expect(collection_year_radio_options).to eq(
{ {
"2023" => { label: "2023/24" }, "2022" => { label: "2022/23" }, "2021" => { label: "2021/22" } "2023" => { label: "2023 to 2024" }, "2022" => { label: "2022 to 2023" }, "2021" => { label: "2021 to 2022" }
}, },
) )
end end
@ -555,7 +555,7 @@ RSpec.describe FiltersHelper do
it "has the correct options" do it "has the correct options" do
expect(collection_year_radio_options).to eq( expect(collection_year_radio_options).to eq(
{ {
"2023" => { label: "2023/24" }, "2022" => { label: "2022/23" } "2023" => { label: "2023 to 2024" }, "2022" => { label: "2022 to 2023" }
}, },
) )
end end
@ -570,7 +570,7 @@ RSpec.describe FiltersHelper do
it "has the correct options" do it "has the correct options" do
expect(collection_year_radio_options).to eq( expect(collection_year_radio_options).to eq(
{ {
"2024" => { label: "2024/25" }, "2023" => { label: "2023/24" }, "2022" => { label: "2022/23" } "2024" => { label: "2024 to 2025" }, "2023" => { label: "2023 to 2024" }, "2022" => { label: "2022 to 2023" }
}, },
) )
end end

8
spec/helpers/tasklist_helper_spec.rb

@ -143,7 +143,7 @@ RSpec.describe TasklistHelper do
end end
it "returns relevant text" do it "returns relevant text" do
expect(review_log_text(sales_log)).to eq("This log is from the 2022/2023 collection window, which is now closed.") expect(review_log_text(sales_log)).to eq("This log is from the 2022 to 2023 collection window, which is now closed.")
end end
end end
@ -156,7 +156,7 @@ RSpec.describe TasklistHelper do
end end
it "returns relevant text" do it "returns relevant text" do
expect(review_log_text(sales_log)).to eq("This log is from the 2021/2022 collection window, which is now closed.") expect(review_log_text(sales_log)).to eq("This log is from the 2021 to 2022 collection window, which is now closed.")
end end
end end
end end
@ -186,7 +186,7 @@ RSpec.describe TasklistHelper do
end end
it "returns relevant text" do it "returns relevant text" do
expect(review_log_text(lettings_log)).to eq("This log is from the 2022/2023 collection window, which is now closed.") expect(review_log_text(lettings_log)).to eq("This log is from the 2022 to 2023 collection window, which is now closed.")
end end
end end
@ -199,7 +199,7 @@ RSpec.describe TasklistHelper do
end end
it "returns relevant text" do it "returns relevant text" do
expect(review_log_text(lettings_log)).to eq("This log is from the 2021/2022 collection window, which is now closed.") expect(review_log_text(lettings_log)).to eq("This log is from the 2021 to 2022 collection window, which is now closed.")
end end
end end
end end

4
spec/models/bulk_upload_spec.rb

@ -39,8 +39,8 @@ RSpec.describe BulkUpload, type: :model do
describe "year_combo" do describe "year_combo" do
[ [
{ year: 2023, expected_value: "2023/24" }, { year: 2023, expected_value: "2023 to 2024" },
{ year: 2024, expected_value: "2024/25" }, { year: 2024, expected_value: "2024 to 2025" },
].each do |test_case| ].each do |test_case|
context "when the bulk upload year is #{test_case[:year]}" do context "when the bulk upload year is #{test_case[:year]}" do
let(:bulk_upload) { build(:bulk_upload, year: test_case[:year]) } let(:bulk_upload) { build(:bulk_upload, year: test_case[:year]) }

3
spec/models/form/sales/pages/household_wheelchair_check_spec.rb

@ -5,7 +5,8 @@ RSpec.describe Form::Sales::Pages::HouseholdWheelchairCheck, type: :model do
let(:page_id) { "buyer_1_income_mortgage_value_check" } let(:page_id) { "buyer_1_income_mortgage_value_check" }
let(:page_definition) { nil } let(:page_definition) { nil }
let(:subsection) { instance_double(Form::Subsection) } let(:form) { instance_double(Form, start_date: Time.zone.local(2024, 4, 1)) }
let(:subsection) { instance_double(Form::Subsection, form:) }
it "has correct subsection" do it "has correct subsection" do
expect(page.subsection).to eq(subsection) expect(page.subsection).to eq(subsection)

3
spec/models/form/sales/subsections/household_needs_spec.rb

@ -5,7 +5,8 @@ RSpec.describe Form::Sales::Subsections::HouseholdNeeds, type: :model do
let(:subsection_id) { nil } let(:subsection_id) { nil }
let(:subsection_definition) { nil } let(:subsection_definition) { nil }
let(:section) { instance_double(Form::Sales::Sections::Household) } let(:form) { instance_double(Form, start_date: Time.zone.local(2024, 4, 1)) }
let(:section) { instance_double(Form::Sales::Sections::Household, form:) }
it "has correct section" do it "has correct section" do
expect(household_characteristics.section).to eq(section) expect(household_characteristics.section).to eq(section)

6
spec/models/forms/bulk_upload_lettings/year_spec.rb

@ -17,7 +17,7 @@ RSpec.describe Forms::BulkUploadLettings::Year do
it "returns current and previous years" do it "returns current and previous years" do
expect(form.options.map(&:id)).to eql([2024, 2023]) expect(form.options.map(&:id)).to eql([2024, 2023])
expect(form.options.map(&:name)).to eql(%w[2024/2025 2023/2024]) expect(form.options.map(&:name)).to eql(["2024 to 2025", "2023 to 2024"])
end end
end end
@ -28,7 +28,7 @@ RSpec.describe Forms::BulkUploadLettings::Year do
it "returns the current year" do it "returns the current year" do
expect(form.options.map(&:id)).to eql([2024]) expect(form.options.map(&:id)).to eql([2024])
expect(form.options.map(&:name)).to eql(%w[2024/2025]) expect(form.options.map(&:name)).to eql(["2024 to 2025"])
end end
end end
@ -40,7 +40,7 @@ RSpec.describe Forms::BulkUploadLettings::Year do
it "returns current and next years" do it "returns current and next years" do
expect(form.options.map(&:id)).to eql([2024, 2025]) expect(form.options.map(&:id)).to eql([2024, 2025])
expect(form.options.map(&:name)).to eql(%w[2024/2025 2025/2026]) expect(form.options.map(&:name)).to eql(["2024 to 2025", "2025 to 2026"])
end end
end end
end end

6
spec/models/forms/bulk_upload_sales/year_spec.rb

@ -17,7 +17,7 @@ RSpec.describe Forms::BulkUploadSales::Year do
it "returns current and previous years" do it "returns current and previous years" do
expect(form.options.map(&:id)).to eql([2024, 2023]) expect(form.options.map(&:id)).to eql([2024, 2023])
expect(form.options.map(&:name)).to eql(%w[2024/2025 2023/2024]) expect(form.options.map(&:name)).to eql(["2024 to 2025", "2023 to 2024"])
end end
end end
@ -28,7 +28,7 @@ RSpec.describe Forms::BulkUploadSales::Year do
it "returns the current year" do it "returns the current year" do
expect(form.options.map(&:id)).to eql([2024]) expect(form.options.map(&:id)).to eql([2024])
expect(form.options.map(&:name)).to eql(%w[2024/2025]) expect(form.options.map(&:name)).to eql(["2024 to 2025"])
end end
end end
@ -44,7 +44,7 @@ RSpec.describe Forms::BulkUploadSales::Year do
it "returns current and next years" do it "returns current and next years" do
expect(form.options.map(&:id)).to eql([2024, 2025]) expect(form.options.map(&:id)).to eql([2024, 2025])
expect(form.options.map(&:name)).to eql(%w[2024/2025 2025/2026]) expect(form.options.map(&:name)).to eql(["2024 to 2025", "2025 to 2026"])
end end
end end
end end

16
spec/models/validations/sales/setup_validations_spec.rb

@ -37,7 +37,7 @@ RSpec.describe Validations::Sales::SetupValidations do
it "adds error" do it "adds error" do
setup_validator.validate_saledate_collection_year(record) setup_validator.validate_saledate_collection_year(record)
expect(record.errors[:saledate]).to include(/Enter a date within the \d{2}\/\d{2} collection year, which is between 1st April \d{4} and 31st March \d{4}/) expect(record.errors[:saledate]).to include(/Enter a date within the \d{4} to \d{4} collection year, which is between 1st April \d{4} and 31st March \d{4}/)
end end
end end
@ -47,7 +47,7 @@ RSpec.describe Validations::Sales::SetupValidations do
it "adds error" do it "adds error" do
setup_validator.validate_saledate_collection_year(record) setup_validator.validate_saledate_collection_year(record)
expect(record.errors[:saledate]).to include(/Enter a date within the \d{2}\/\d{2} collection year, which is between 1st April \d{4} and 31st March \d{4}/) expect(record.errors[:saledate]).to include(/Enter a date within the \d{4} to \d{4} collection year, which is between 1st April \d{4} and 31st March \d{4}/)
end end
end end
end end
@ -91,7 +91,7 @@ RSpec.describe Validations::Sales::SetupValidations do
it "adds error" do it "adds error" do
setup_validator.validate_saledate_collection_year(record) setup_validator.validate_saledate_collection_year(record)
expect(record.errors[:saledate]).to include("Enter a date within the 23/24 or 24/25 collection years, which is between 1st April 2023 and 31st March 2025.") expect(record.errors[:saledate]).to include("Enter a date within the 2023 to 2024 or 2024 to 2025 collection years, which is between 1st April 2023 and 31st March 2025.")
end end
end end
@ -105,7 +105,7 @@ RSpec.describe Validations::Sales::SetupValidations do
it "adds error" do it "adds error" do
setup_validator.validate_saledate_collection_year(record) setup_validator.validate_saledate_collection_year(record)
expect(record.errors[:saledate]).to include("Enter a date within the 23/24 or 24/25 collection years, which is between 1st April 2023 and 31st March 2025.") expect(record.errors[:saledate]).to include("Enter a date within the 2023 to 2024 or 2024 to 2025 collection years, which is between 1st April 2023 and 31st March 2025.")
end end
end end
@ -119,7 +119,7 @@ RSpec.describe Validations::Sales::SetupValidations do
it "cannot create new logs for the archived collection year" do it "cannot create new logs for the archived collection year" do
record.saledate = Time.zone.local(2023, 1, 1) record.saledate = Time.zone.local(2023, 1, 1)
setup_validator.validate_saledate_collection_year(record) setup_validator.validate_saledate_collection_year(record)
expect(record.errors["saledate"]).to include(match "Enter a date within the 23/24 or 24/25 collection years, which is between 1st April 2023 and 31st March 2025.") expect(record.errors["saledate"]).to include(match "Enter a date within the 2023 to 2024 or 2024 to 2025 collection years, which is between 1st April 2023 and 31st March 2025.")
end end
it "can edit already created logs for the previous collection year" do it "can edit already created logs for the previous collection year" do
@ -127,7 +127,7 @@ RSpec.describe Validations::Sales::SetupValidations do
record.save!(validate: false) record.save!(validate: false)
record.saledate = Time.zone.local(2024, 1, 1) record.saledate = Time.zone.local(2024, 1, 1)
setup_validator.validate_saledate_collection_year(record) setup_validator.validate_saledate_collection_year(record)
expect(record.errors["saledate"]).not_to include(match "Enter a date within the 24/25 collection year, which is between 1st April 2024 and 31st March 2025.") expect(record.errors["saledate"]).not_to include(match "Enter a date within the 2024 to 2025 collection year, which is between 1st April 2024 and 31st March 2025.")
end end
end end
@ -142,7 +142,7 @@ RSpec.describe Validations::Sales::SetupValidations do
record.update!(saledate: nil) record.update!(saledate: nil)
record.saledate = Time.zone.local(2023, 1, 1) record.saledate = Time.zone.local(2023, 1, 1)
setup_validator.validate_saledate_collection_year(record) setup_validator.validate_saledate_collection_year(record)
expect(record.errors["saledate"]).to include(match "Enter a date within the 23/24 or 24/25 collection years, which is between 1st April 2023 and 31st March 2025.") expect(record.errors["saledate"]).to include(match "Enter a date within the 2023 to 2024 or 2024 to 2025 collection years, which is between 1st April 2023 and 31st March 2025.")
end end
it "cannot edit already created logs for the archived collection year" do it "cannot edit already created logs for the archived collection year" do
@ -150,7 +150,7 @@ RSpec.describe Validations::Sales::SetupValidations do
record.save!(validate: false) record.save!(validate: false)
record.saledate = Time.zone.local(2023, 1, 1) record.saledate = Time.zone.local(2023, 1, 1)
setup_validator.validate_saledate_collection_year(record) setup_validator.validate_saledate_collection_year(record)
expect(record.errors["saledate"]).to include(match "Enter a date within the 23/24 or 24/25 collection years, which is between 1st April 2023 and 31st March 2025.") expect(record.errors["saledate"]).to include(match "Enter a date within the 2023 to 2024 or 2024 to 2025 collection years, which is between 1st April 2023 and 31st March 2025.")
end end
end end
end end

30
spec/models/validations/setup_validations_spec.rb

@ -7,7 +7,7 @@ RSpec.describe Validations::SetupValidations do
let(:record) { build(:lettings_log) } let(:record) { build(:lettings_log) }
describe "tenancy start date" do describe "tenancy start date" do
context "when in 22/23 collection" do context "when in 2022 to 2023 collection" do
context "when in the crossover period" do context "when in the crossover period" do
before do before do
allow(Time).to receive(:now).and_return(Time.zone.local(2022, 4, 1)) allow(Time).to receive(:now).and_return(Time.zone.local(2022, 4, 1))
@ -18,14 +18,14 @@ RSpec.describe Validations::SetupValidations do
record.startdate = Time.zone.local(2021, 1, 1) record.startdate = Time.zone.local(2021, 1, 1)
setup_validator.validate_startdate_setup(record) setup_validator.validate_startdate_setup(record)
setup_validator.validate_merged_organisations_start_date(record) setup_validator.validate_merged_organisations_start_date(record)
expect(record.errors["startdate"]).to include(match "Enter a date within the 21/22 or 22/23 collection years, which is between 1st April 2021 and 31st March 2023") expect(record.errors["startdate"]).to include(match "Enter a date within the 2021 to 2022 or 2022 to 2023 collection years, which is between 1st April 2021 and 31st March 2023")
end end
it "cannot be after the second collection window end date" do it "cannot be after the second collection window end date" do
record.startdate = Time.zone.local(2023, 7, 1, 6) record.startdate = Time.zone.local(2023, 7, 1, 6)
setup_validator.validate_startdate_setup(record) setup_validator.validate_startdate_setup(record)
setup_validator.validate_merged_organisations_start_date(record) setup_validator.validate_merged_organisations_start_date(record)
expect(record.errors["startdate"]).to include(match "Enter a date within the 21/22 or 22/23 collection years, which is between 1st April 2021 and 31st March 2023") expect(record.errors["startdate"]).to include(match "Enter a date within the 2021 to 2022 or 2022 to 2023 collection years, which is between 1st April 2021 and 31st March 2023")
end end
end end
@ -39,19 +39,19 @@ RSpec.describe Validations::SetupValidations do
record.startdate = Time.zone.local(2022, 1, 1) record.startdate = Time.zone.local(2022, 1, 1)
setup_validator.validate_startdate_setup(record) setup_validator.validate_startdate_setup(record)
setup_validator.validate_merged_organisations_start_date(record) setup_validator.validate_merged_organisations_start_date(record)
expect(record.errors["startdate"]).to include(match "Enter a date within the 22/23 collection year, which is between 1st April 2022 and 31st March 2023") expect(record.errors["startdate"]).to include(match "Enter a date within the 2022 to 2023 collection year, which is between 1st April 2022 and 31st March 2023")
end end
it "cannot be after the second collection window end date" do it "cannot be after the second collection window end date" do
record.startdate = Time.zone.local(2023, 7, 1, 6) record.startdate = Time.zone.local(2023, 7, 1, 6)
setup_validator.validate_startdate_setup(record) setup_validator.validate_startdate_setup(record)
setup_validator.validate_merged_organisations_start_date(record) setup_validator.validate_merged_organisations_start_date(record)
expect(record.errors["startdate"]).to include(match "Enter a date within the 22/23 collection year, which is between 1st April 2022 and 31st March 2023") expect(record.errors["startdate"]).to include(match "Enter a date within the 2022 to 2023 collection year, which is between 1st April 2022 and 31st March 2023")
end end
end end
end end
context "when in 23/24 collection" do context "when in 2023 to 2024 collection" do
context "when in the crossover period" do context "when in the crossover period" do
before do before do
allow(Time).to receive(:now).and_return(Time.zone.local(2023, 4, 1)) allow(Time).to receive(:now).and_return(Time.zone.local(2023, 4, 1))
@ -62,14 +62,14 @@ RSpec.describe Validations::SetupValidations do
record.startdate = Time.zone.local(2022, 1, 1) record.startdate = Time.zone.local(2022, 1, 1)
setup_validator.validate_startdate_setup(record) setup_validator.validate_startdate_setup(record)
setup_validator.validate_merged_organisations_start_date(record) setup_validator.validate_merged_organisations_start_date(record)
expect(record.errors["startdate"]).to include(match "Enter a date within the 22/23 or 23/24 collection years, which is between 1st April 2022 and 31st March 2024") expect(record.errors["startdate"]).to include(match "Enter a date within the 2022 to 2023 or 2023 to 2024 collection years, which is between 1st April 2022 and 31st March 2024")
end end
it "cannot be after the second collection window end date" do it "cannot be after the second collection window end date" do
record.startdate = Time.zone.local(2024, 7, 1, 6) record.startdate = Time.zone.local(2024, 7, 1, 6)
setup_validator.validate_startdate_setup(record) setup_validator.validate_startdate_setup(record)
setup_validator.validate_merged_organisations_start_date(record) setup_validator.validate_merged_organisations_start_date(record)
expect(record.errors["startdate"]).to include(match "Enter a date within the 22/23 or 23/24 collection years, which is between 1st April 2022 and 31st March 2024") expect(record.errors["startdate"]).to include(match "Enter a date within the 2022 to 2023 or 2023 to 2024 collection years, which is between 1st April 2022 and 31st March 2024")
end end
end end
@ -83,14 +83,14 @@ RSpec.describe Validations::SetupValidations do
record.startdate = Time.zone.local(2023, 1, 1) record.startdate = Time.zone.local(2023, 1, 1)
setup_validator.validate_startdate_setup(record) setup_validator.validate_startdate_setup(record)
setup_validator.validate_merged_organisations_start_date(record) setup_validator.validate_merged_organisations_start_date(record)
expect(record.errors["startdate"]).to include(match "Enter a date within the 23/24 collection year, which is between 1st April 2023 and 31st March 2024") expect(record.errors["startdate"]).to include(match "Enter a date within the 2023 to 2024 collection year, which is between 1st April 2023 and 31st March 2024")
end end
it "cannot be after the second collection window end date" do it "cannot be after the second collection window end date" do
record.startdate = Time.zone.local(2024, 7, 1, 6) record.startdate = Time.zone.local(2024, 7, 1, 6)
setup_validator.validate_startdate_setup(record) setup_validator.validate_startdate_setup(record)
setup_validator.validate_merged_organisations_start_date(record) setup_validator.validate_merged_organisations_start_date(record)
expect(record.errors["startdate"]).to include(match "Enter a date within the 23/24 collection year, which is between 1st April 2023 and 31st March 2024") expect(record.errors["startdate"]).to include(match "Enter a date within the 2023 to 2024 collection year, which is between 1st April 2023 and 31st March 2024")
end end
end end
@ -104,7 +104,7 @@ RSpec.describe Validations::SetupValidations do
record.startdate = Time.zone.local(2023, 1, 1) record.startdate = Time.zone.local(2023, 1, 1)
setup_validator.validate_startdate_setup(record) setup_validator.validate_startdate_setup(record)
setup_validator.validate_merged_organisations_start_date(record) setup_validator.validate_merged_organisations_start_date(record)
expect(record.errors["startdate"]).to include(match "Enter a date within the 23/24 collection year, which is between 1st April 2023 and 31st March 2024") expect(record.errors["startdate"]).to include(match "Enter a date within the 2023 to 2024 collection year, which is between 1st April 2023 and 31st March 2024")
end end
xit "can edit already created logs for the previous collection year" do xit "can edit already created logs for the previous collection year" do
@ -113,7 +113,7 @@ RSpec.describe Validations::SetupValidations do
record.startdate = Time.zone.local(2023, 1, 1) record.startdate = Time.zone.local(2023, 1, 1)
setup_validator.validate_startdate_setup(record) setup_validator.validate_startdate_setup(record)
setup_validator.validate_merged_organisations_start_date(record) setup_validator.validate_merged_organisations_start_date(record)
expect(record.errors["startdate"]).not_to include(match "Enter a date within the 23/24 collection year, which is between 1st April 2023 and 31st March 2024") expect(record.errors["startdate"]).not_to include(match "Enter a date within the 2023 to 2024 collection year, which is between 1st April 2023 and 31st March 2024")
end end
end end
@ -127,7 +127,7 @@ RSpec.describe Validations::SetupValidations do
record.startdate = Time.zone.local(2023, 1, 1) record.startdate = Time.zone.local(2023, 1, 1)
setup_validator.validate_startdate_setup(record) setup_validator.validate_startdate_setup(record)
setup_validator.validate_merged_organisations_start_date(record) setup_validator.validate_merged_organisations_start_date(record)
expect(record.errors["startdate"]).to include(match "Enter a date within the 23/24 collection year, which is between 1st April 2023 and 31st March 2024") expect(record.errors["startdate"]).to include(match "Enter a date within the 2023 to 2024 collection year, which is between 1st April 2023 and 31st March 2024")
end end
it "cannot edit already created logs for the previous collection year" do it "cannot edit already created logs for the previous collection year" do
@ -136,7 +136,7 @@ RSpec.describe Validations::SetupValidations do
record.startdate = Time.zone.local(2023, 1, 1) record.startdate = Time.zone.local(2023, 1, 1)
setup_validator.validate_startdate_setup(record) setup_validator.validate_startdate_setup(record)
setup_validator.validate_merged_organisations_start_date(record) setup_validator.validate_merged_organisations_start_date(record)
expect(record.errors["startdate"]).to include(match "Enter a date within the 23/24 collection year, which is between 1st April 2023 and 31st March 2024") expect(record.errors["startdate"]).to include(match "Enter a date within the 2023 to 2024 collection year, which is between 1st April 2023 and 31st March 2024")
end end
end end
end end
@ -157,7 +157,7 @@ RSpec.describe Validations::SetupValidations do
record.startdate = Time.zone.local(2024, 4, 1) record.startdate = Time.zone.local(2024, 4, 1)
setup_validator.validate_startdate_setup(record) setup_validator.validate_startdate_setup(record)
expect(record.errors["startdate"].length).to be >= 2 expect(record.errors["startdate"].length).to be >= 2
expect(record.errors["startdate"][0]).to eq("Enter a date within the 23/24 collection year, which is between 1st April 2023 and 31st March 2024.") expect(record.errors["startdate"][0]).to eq("Enter a date within the 2023 to 2024 collection year, which is between 1st April 2023 and 31st March 2024.")
expect(record.errors["startdate"][1]).to eq(I18n.t("validations.setup.startdate.later_than_14_days_after")) expect(record.errors["startdate"][1]).to eq(I18n.t("validations.setup.startdate.later_than_14_days_after"))
end end
end end

4
spec/requests/bulk_upload_lettings_results_controller_spec.rb

@ -16,7 +16,7 @@ RSpec.describe BulkUploadLettingsResultsController, type: :request do
get "/lettings-logs/bulk-upload-results/#{bulk_upload.id}/summary" get "/lettings-logs/bulk-upload-results/#{bulk_upload.id}/summary"
expect(response).to be_successful expect(response).to be_successful
expect(response.body).to include("Bulk upload for lettings (#{bulk_upload.year_combo})") expect(response.body).to include("Upload lettings logs in bulk (#{bulk_upload.year_combo})")
end end
it "renders the bulk upload filename" do it "renders the bulk upload filename" do
@ -90,7 +90,7 @@ RSpec.describe BulkUploadLettingsResultsController, type: :request do
get "/lettings-logs/bulk-upload-results/#{bulk_upload.id}" get "/lettings-logs/bulk-upload-results/#{bulk_upload.id}"
expect(response).to be_successful expect(response).to be_successful
expect(response.body).to include("Bulk upload for lettings (#{bulk_upload.year_combo})") expect(response.body).to include("Upload lettings logs in bulk (#{bulk_upload.year_combo})")
end end
it "renders correct number of errors" do it "renders correct number of errors" do

8
spec/requests/bulk_upload_lettings_resume_controller_spec.rb

@ -60,7 +60,7 @@ RSpec.describe BulkUploadLettingsResumeController, type: :request do
expect(response).to be_successful expect(response).to be_successful
expect(response.body).to include("Bulk upload for lettings") expect(response.body).to include("Upload lettings logs in bulk")
expect(response.body).to include(bulk_upload.year_combo) expect(response.body).to include(bulk_upload.year_combo)
expect(response.body).to include("View the error report") expect(response.body).to include("View the error report")
expect(response.body).to include("How would you like to fix the errors?") expect(response.body).to include("How would you like to fix the errors?")
@ -120,7 +120,7 @@ RSpec.describe BulkUploadLettingsResumeController, type: :request do
expect(response).to be_successful expect(response).to be_successful
expect(response.body).to include("Bulk upload for lettings") expect(response.body).to include("Upload lettings logs in bulk")
expect(response.body).to include("Cancel") expect(response.body).to include("Cancel")
end end
end end
@ -218,7 +218,7 @@ RSpec.describe BulkUploadLettingsResumeController, type: :request do
expect(response).to be_successful expect(response).to be_successful
expect(response.body).to include("Bulk upload for lettings") expect(response.body).to include("Upload lettings logs in bulk")
expect(response.body).to include(bulk_upload.year_combo) expect(response.body).to include(bulk_upload.year_combo)
expect(response.body).to include("These 2 answers will be deleted if you upload the log") expect(response.body).to include("These 2 answers will be deleted if you upload the log")
expect(response.body).to include(bulk_upload.filename) expect(response.body).to include(bulk_upload.filename)
@ -260,7 +260,7 @@ RSpec.describe BulkUploadLettingsResumeController, type: :request do
expect(response).to be_successful expect(response).to be_successful
expect(response.body).to include("Bulk upload for lettings") expect(response.body).to include("Upload lettings logs in bulk")
expect(response.body).to include(bulk_upload.year_combo) expect(response.body).to include(bulk_upload.year_combo)
expect(response.body).to include("These 2 answers will be deleted if you upload the log") expect(response.body).to include("These 2 answers will be deleted if you upload the log")
expect(response.body).to include(bulk_upload.filename) expect(response.body).to include(bulk_upload.filename)

2
spec/requests/bulk_upload_lettings_soft_validations_check_controller_spec.rb

@ -14,7 +14,7 @@ RSpec.describe BulkUploadLettingsSoftValidationsCheckController, type: :request
it "shows the soft validation errors with confirmation question" do it "shows the soft validation errors with confirmation question" do
get "/lettings-logs/bulk-upload-soft-validations-check/#{bulk_upload.id}/confirm-soft-errors" get "/lettings-logs/bulk-upload-soft-validations-check/#{bulk_upload.id}/confirm-soft-errors"
expect(response.body).to include("Bulk upload for lettings") expect(response.body).to include("Upload lettings logs in bulk")
expect(response.body).to include(bulk_upload.year_combo) expect(response.body).to include(bulk_upload.year_combo)
expect(response.body).to include("Check these 2 answers") expect(response.body).to include("Check these 2 answers")
expect(response.body).to include(bulk_upload.filename) expect(response.body).to include(bulk_upload.filename)

2
spec/requests/bulk_upload_sales_results_controller_spec.rb

@ -52,7 +52,7 @@ RSpec.describe BulkUploadSalesResultsController, type: :request do
get "/sales-logs/bulk-upload-results/#{bulk_upload.id}" get "/sales-logs/bulk-upload-results/#{bulk_upload.id}"
expect(response).to be_successful expect(response).to be_successful
expect(response.body).to include("Bulk Upload for sales (#{bulk_upload.year_combo})") expect(response.body).to include("Upload sales logs in bulk (#{bulk_upload.year_combo})")
end end
it "renders correct number of errors" do it "renders correct number of errors" do

8
spec/requests/bulk_upload_sales_resume_controller_spec.rb

@ -60,7 +60,7 @@ RSpec.describe BulkUploadSalesResumeController, type: :request do
expect(response).to be_successful expect(response).to be_successful
expect(response.body).to include("Bulk upload for sales") expect(response.body).to include("Upload sales logs in bulk")
expect(response.body).to include(bulk_upload.year_combo) expect(response.body).to include(bulk_upload.year_combo)
expect(response.body).to include("View the error report") expect(response.body).to include("View the error report")
expect(response.body).to include("How would you like to fix the errors?") expect(response.body).to include("How would you like to fix the errors?")
@ -120,7 +120,7 @@ RSpec.describe BulkUploadSalesResumeController, type: :request do
expect(response).to be_successful expect(response).to be_successful
expect(response.body).to include("Bulk upload for sales") expect(response.body).to include("Upload sales logs in bulk")
expect(response.body).to include("Cancel") expect(response.body).to include("Cancel")
end end
end end
@ -218,7 +218,7 @@ RSpec.describe BulkUploadSalesResumeController, type: :request do
expect(response).to be_successful expect(response).to be_successful
expect(response.body).to include("Bulk upload for sales") expect(response.body).to include("Upload sales logs in bulk")
expect(response.body).to include(bulk_upload.year_combo) expect(response.body).to include(bulk_upload.year_combo)
expect(response.body).to include("These 2 answers will be deleted if you upload the log") expect(response.body).to include("These 2 answers will be deleted if you upload the log")
expect(response.body).to include(bulk_upload.filename) expect(response.body).to include(bulk_upload.filename)
@ -260,7 +260,7 @@ RSpec.describe BulkUploadSalesResumeController, type: :request do
expect(response).to be_successful expect(response).to be_successful
expect(response.body).to include("Bulk upload for sales") expect(response.body).to include("Upload sales logs in bulk")
expect(response.body).to include(bulk_upload.year_combo) expect(response.body).to include(bulk_upload.year_combo)
expect(response.body).to include("These 2 answers will be deleted if you upload the log") expect(response.body).to include("These 2 answers will be deleted if you upload the log")
expect(response.body).to include(bulk_upload.filename) expect(response.body).to include(bulk_upload.filename)

2
spec/requests/bulk_upload_sales_soft_validations_check_controller_spec.rb

@ -14,7 +14,7 @@ RSpec.describe BulkUploadSalesSoftValidationsCheckController, type: :request do
it "shows the soft validation errors with confirmation question" do it "shows the soft validation errors with confirmation question" do
get "/sales-logs/bulk-upload-soft-validations-check/#{bulk_upload.id}/confirm-soft-errors" get "/sales-logs/bulk-upload-soft-validations-check/#{bulk_upload.id}/confirm-soft-errors"
expect(response.body).to include("Bulk upload for sales") expect(response.body).to include("Upload sales logs in bulk")
expect(response.body).to include(bulk_upload.year_combo) expect(response.body).to include(bulk_upload.year_combo)
expect(response.body).to include("Check these 2 answers") expect(response.body).to include("Check these 2 answers")
expect(response.body).to include(bulk_upload.filename) expect(response.body).to include(bulk_upload.filename)

27
spec/requests/lettings_logs_controller_spec.rb

@ -1158,6 +1158,31 @@ RSpec.describe LettingsLogsController, type: :request do
expect(page).to have_link("review and make changes to this log", href: "/lettings-logs/#{lettings_log.id}/review") expect(page).to have_link("review and make changes to this log", href: "/lettings-logs/#{lettings_log.id}/review")
end end
end end
context "with bulk_upload_id filter" do
let(:bulk_upload) { create(:bulk_upload, :lettings, user:) }
let(:lettings_log) { create(:lettings_log, :completed, age1: nil, bulk_upload:, assigned_to: user, creation_method: "bulk upload") }
before do
lettings_log.status = "completed"
lettings_log.skip_update_status = true
lettings_log.save!(validate: false)
end
context "with bulk_upload_id filter in session" do
it "displays back to uploaded logs link" do
get "/lettings-logs/#{lettings_log.id}?bulk_upload_id[]=#{bulk_upload.id}"
expect(page).to have_link("Back to uploaded logs")
end
end
context "without bulk_upload_id filter in session" do
it "does not display back to uploaded logs link" do
get "/lettings-logs/#{lettings_log.id}"
expect(page).not_to have_link("Back to uploaded logs")
end
end
end
end end
context "with lettings logs from a closed collection period before the previous collection" do context "with lettings logs from a closed collection period before the previous collection" do
@ -1177,7 +1202,7 @@ RSpec.describe LettingsLogsController, type: :request do
it "displays a closed collection window message for previous collection year logs" do it "displays a closed collection window message for previous collection year logs" do
follow_redirect! follow_redirect!
expect(page).to have_content(/This log is from the \d{4}\/\d{4} collection window, which is now closed\./) expect(page).to have_content(/This log is from the \d{4} to \d{4} collection window, which is now closed\./)
end end
end end

2
spec/requests/sales_logs_controller_spec.rb

@ -954,7 +954,7 @@ RSpec.describe SalesLogsController, type: :request do
expect(completed_sales_log.form.new_logs_end_date).to eq(Time.zone.local(2022, 12, 31)) expect(completed_sales_log.form.new_logs_end_date).to eq(Time.zone.local(2022, 12, 31))
expect(completed_sales_log.status).to eq("completed") expect(completed_sales_log.status).to eq("completed")
follow_redirect! follow_redirect!
expect(page).to have_content("This log is from the 2021/2022 collection window, which is now closed.") expect(page).to have_content("This log is from the 2021 to 2022 collection window, which is now closed.")
end end
end end
end end

26
spec/views/logs/edit.html.erb_spec.rb

@ -1,11 +1,13 @@
require "rails_helper" require "rails_helper"
RSpec.describe "logs/edit.html.erb" do RSpec.describe "logs/edit.html.erb" do
let(:current_user) { create(:user, :support) }
before do before do
Timecop.freeze(Time.zone.local(2024, 3, 1)) Timecop.freeze(Time.zone.local(2024, 3, 1))
Singleton.__init__(FormHandler) Singleton.__init__(FormHandler)
assign(:log, log) assign(:log, log)
sign_in create(:user, :support) sign_in current_user
end end
after do after do
@ -17,7 +19,7 @@ RSpec.describe "logs/edit.html.erb" do
let(:log) { create(:lettings_log, :in_progress) } let(:log) { create(:lettings_log, :in_progress) }
it "there is no link back to log type root" do it "there is no link back to log type root" do
render render template: "logs/edit", locals: { current_user:, bulk_upload_filter_applied: false }
fragment = Capybara::Node::Simple.new(rendered) fragment = Capybara::Node::Simple.new(rendered)
@ -25,7 +27,7 @@ RSpec.describe "logs/edit.html.erb" do
end end
it "has link 'Delete log'" do it "has link 'Delete log'" do
render render template: "logs/edit", locals: { current_user:, bulk_upload_filter_applied: false }
fragment = Capybara::Node::Simple.new(rendered) fragment = Capybara::Node::Simple.new(rendered)
@ -38,7 +40,7 @@ RSpec.describe "logs/edit.html.erb" do
let(:log) { create(:lettings_log, :completed) } let(:log) { create(:lettings_log, :completed) }
it "has link 'Back to lettings logs'" do it "has link 'Back to lettings logs'" do
render render template: "logs/edit", locals: { current_user:, bulk_upload_filter_applied: false }
fragment = Capybara::Node::Simple.new(rendered) fragment = Capybara::Node::Simple.new(rendered)
@ -46,7 +48,7 @@ RSpec.describe "logs/edit.html.erb" do
end end
it "has link 'Delete log'" do it "has link 'Delete log'" do
render render template: "logs/edit", locals: { current_user:, bulk_upload_filter_applied: false }
fragment = Capybara::Node::Simple.new(rendered) fragment = Capybara::Node::Simple.new(rendered)
@ -58,7 +60,7 @@ RSpec.describe "logs/edit.html.erb" do
let(:log) { create(:sales_log, :completed) } let(:log) { create(:sales_log, :completed) }
it "has link 'Back to sales logs'" do it "has link 'Back to sales logs'" do
render render template: "logs/edit", locals: { current_user:, bulk_upload_filter_applied: false }
fragment = Capybara::Node::Simple.new(rendered) fragment = Capybara::Node::Simple.new(rendered)
@ -66,7 +68,7 @@ RSpec.describe "logs/edit.html.erb" do
end end
it "has link 'Delete log'" do it "has link 'Delete log'" do
render render template: "logs/edit", locals: { current_user:, bulk_upload_filter_applied: false }
fragment = Capybara::Node::Simple.new(rendered) fragment = Capybara::Node::Simple.new(rendered)
@ -79,7 +81,7 @@ RSpec.describe "logs/edit.html.erb" do
let(:log) { create(:lettings_log, :completed, bulk_upload:, creation_method: "bulk upload") } let(:log) { create(:lettings_log, :completed, bulk_upload:, creation_method: "bulk upload") }
it "has link 'Back to uploaded logs'" do it "has link 'Back to uploaded logs'" do
render render template: "logs/edit", locals: { current_user:, bulk_upload_filter_applied: true }
fragment = Capybara::Node::Simple.new(rendered) fragment = Capybara::Node::Simple.new(rendered)
@ -87,7 +89,7 @@ RSpec.describe "logs/edit.html.erb" do
end end
it "has link 'Delete log'" do it "has link 'Delete log'" do
render render template: "logs/edit", locals: { current_user:, bulk_upload_filter_applied: true }
fragment = Capybara::Node::Simple.new(rendered) fragment = Capybara::Node::Simple.new(rendered)
@ -99,7 +101,7 @@ RSpec.describe "logs/edit.html.erb" do
let(:log) { create(:lettings_log, :completed, bulk_upload: nil, creation_method: "bulk upload") } let(:log) { create(:lettings_log, :completed, bulk_upload: nil, creation_method: "bulk upload") }
it "does not have link 'Back to uploaded logs'" do it "does not have link 'Back to uploaded logs'" do
render render template: "logs/edit", locals: { current_user:, bulk_upload_filter_applied: false }
fragment = Capybara::Node::Simple.new(rendered) fragment = Capybara::Node::Simple.new(rendered)
@ -112,7 +114,7 @@ RSpec.describe "logs/edit.html.erb" do
let(:log) { create(:sales_log, :completed, bulk_upload:, creation_method: "bulk upload") } let(:log) { create(:sales_log, :completed, bulk_upload:, creation_method: "bulk upload") }
it "has link 'Back to uploaded logs'" do it "has link 'Back to uploaded logs'" do
render render template: "logs/edit", locals: { current_user:, bulk_upload_filter_applied: true }
fragment = Capybara::Node::Simple.new(rendered) fragment = Capybara::Node::Simple.new(rendered)
@ -120,7 +122,7 @@ RSpec.describe "logs/edit.html.erb" do
end end
it "has link 'Delete log'" do it "has link 'Delete log'" do
render render template: "logs/edit", locals: { current_user:, bulk_upload_filter_applied: true }
fragment = Capybara::Node::Simple.new(rendered) fragment = Capybara::Node::Simple.new(rendered)

Loading…
Cancel
Save