diff --git a/app/controllers/lettings_logs_controller.rb b/app/controllers/lettings_logs_controller.rb index 582c0390e..1dc157086 100644 --- a/app/controllers/lettings_logs_controller.rb +++ b/app/controllers/lettings_logs_controller.rb @@ -80,14 +80,18 @@ class LettingsLogsController < LogsController def download_csv unpaginated_filtered_logs = filtered_logs(current_user.lettings_logs, search_term, @session_filters) - codes_only_export = params.require(:codes_only) == "true" + codes_only = codes_only_export?(params) + + render "download_csv", locals: { search_term:, count: unpaginated_filtered_logs.size, post_path: email_csv_lettings_logs_path, codes_only: } + end - render "download_csv", locals: { search_term:, count: unpaginated_filtered_logs.size, post_path: email_csv_lettings_logs_path, codes_only_export: } + def codes_only_export?(params) + params.require(:codes_only) == "true" end def email_csv all_orgs = params["organisation_select"] == "all" - codes_only_export = params.require(:codes_only_export) == "true" + codes_only_export = params.require(:codes_only) == "true" EmailCsvJob.perform_later(current_user, search_term, @session_filters, all_orgs, nil, codes_only_export) redirect_to csv_confirmation_lettings_logs_path end diff --git a/app/controllers/organisations_controller.rb b/app/controllers/organisations_controller.rb index 9a9fcbe47..418526960 100644 --- a/app/controllers/organisations_controller.rb +++ b/app/controllers/organisations_controller.rb @@ -107,13 +107,13 @@ class OrganisationsController < ApplicationController def download_csv organisation_logs = LettingsLog.all.where(owning_organisation_id: @organisation.id) unpaginated_filtered_logs = filtered_logs(organisation_logs, search_term, @session_filters) - codes_only_export = params.require(:codes_only) == "true" + codes_only = params.require(:codes_only) == "true" - render "logs/download_csv", locals: { search_term:, count: unpaginated_filtered_logs.size, post_path: logs_email_csv_organisation_path, codes_only_export: } + render "logs/download_csv", locals: { search_term:, count: unpaginated_filtered_logs.size, post_path: logs_email_csv_organisation_path, codes_only: } end def email_csv - codes_only_export = params.require(:codes_only_export) == "true" + codes_only_export = params.require(:codes_only) == "true" EmailCsvJob.perform_later(current_user, search_term, @session_filters, false, @organisation, codes_only_export) redirect_to logs_csv_confirmation_organisation_path end diff --git a/app/views/logs/download_csv.html.erb b/app/views/logs/download_csv.html.erb index fff55e933..5aeea8173 100644 --- a/app/views/logs/download_csv.html.erb +++ b/app/views/logs/download_csv.html.erb @@ -11,6 +11,6 @@
We'll send a secure download link to your email address <%= @current_user.email %>.
You've selected <%= count %> logs.
- <%= govuk_button_to "Send email", post_path, method: :post, params: { search: search_term, codes_only_export: } %> + <%= govuk_button_to "Send email", post_path, method: :post, params: { search: search_term, codes_only: } %> diff --git a/spec/models/lettings_log_spec.rb b/spec/models/lettings_log_spec.rb index c6f559aec..7ffab07fe 100644 --- a/spec/models/lettings_log_spec.rb +++ b/spec/models/lettings_log_spec.rb @@ -2745,7 +2745,7 @@ RSpec.describe LettingsLog do let(:csv_export_file) { File.open("spec/fixtures/files/lettings_logs_download_codes_only.csv", "r:UTF-8") } it "generates a correct csv from a lettings log" do - expect(described_class.to_csv(codes_only_export: true)).to eq(expected_content) + expect(described_class.to_csv(codes_only: true)).to eq(expected_content) end end end diff --git a/spec/requests/lettings_logs_controller_spec.rb b/spec/requests/lettings_logs_controller_spec.rb index c18dfae00..d4c3737a9 100644 --- a/spec/requests/lettings_logs_controller_spec.rb +++ b/spec/requests/lettings_logs_controller_spec.rb @@ -1343,33 +1343,33 @@ RSpec.describe LettingsLogsController, type: :request do it "creates an E-mail job" do expect { - post "/lettings-logs/email-csv?codes_only_export=true", headers:, params: {} + post "/lettings-logs/email-csv?codes_only=true", headers:, params: {} }.to enqueue_job(EmailCsvJob).with(user, nil, {}, false, nil, true) end it "redirects to the confirmation page" do - post "/lettings-logs/email-csv?codes_only_export=true", headers:, params: {} + post "/lettings-logs/email-csv?codes_only=true", headers:, params: {} expect(response).to redirect_to(csv_confirmation_lettings_logs_path) end it "passes the search term" do expect { - post "/lettings-logs/email-csv?search=#{lettings_log.id}&codes_only_export=false", headers:, params: {} + post "/lettings-logs/email-csv?search=#{lettings_log.id}&codes_only=false", headers:, params: {} }.to enqueue_job(EmailCsvJob).with(user, lettings_log.id.to_s, {}, false, nil, false) end it "passes filter parameters" do expect { - post "/lettings-logs/email-csv?status[]=completed&codes_only_export=true", headers:, params: {} + post "/lettings-logs/email-csv?status[]=completed&codes_only=true", headers:, params: {} }.to enqueue_job(EmailCsvJob).with(user, nil, { "status" => %w[completed] }, false, nil, true) end it "passes export type flag" do expect { - post "/lettings-logs/email-csv?codes_only_export=true", headers:, params: {} + post "/lettings-logs/email-csv?codes_only=true", headers:, params: {} }.to enqueue_job(EmailCsvJob).with(user, nil, {}, false, nil, true) expect { - post "/lettings-logs/email-csv?codes_only_export=false", headers:, params: {} + post "/lettings-logs/email-csv?codes_only=false", headers:, params: {} }.to enqueue_job(EmailCsvJob).with(user, nil, {}, false, nil, false) end @@ -1377,7 +1377,7 @@ RSpec.describe LettingsLogsController, type: :request do postcode = "XX1 1TG" expect { - post "/lettings-logs/email-csv?status[]=completed&search=#{postcode}&codes_only_export=false", headers:, params: {} + post "/lettings-logs/email-csv?status[]=completed&search=#{postcode}&codes_only=false", headers:, params: {} }.to enqueue_job(EmailCsvJob).with(user, postcode, { "status" => %w[completed] }, false, nil, false) end end diff --git a/spec/requests/organisations_controller_spec.rb b/spec/requests/organisations_controller_spec.rb index ce3b5049e..e7cb7fea3 100644 --- a/spec/requests/organisations_controller_spec.rb +++ b/spec/requests/organisations_controller_spec.rb @@ -1166,18 +1166,18 @@ RSpec.describe OrganisationsController, type: :request do it "provides the organisation to the mail job" do expect { - post "/organisations/#{organisation.id}/logs/email-csv?status[]=completed&codes_only_export=false", headers:, params: {} + post "/organisations/#{organisation.id}/logs/email-csv?status[]=completed&codes_only=false", headers:, params: {} }.to enqueue_job(EmailCsvJob).with(user, nil, { "status" => %w[completed] }, false, organisation, false) end it "provides the export type to the mail job" do codes_only_export_type = false expect { - post "/organisations/#{organisation.id}/logs/email-csv?codes_only_export=#{codes_only_export_type}", headers:, params: {} + post "/organisations/#{organisation.id}/logs/email-csv?codes_only=#{codes_only_export_type}", headers:, params: {} }.to enqueue_job(EmailCsvJob).with(user, nil, {}, false, organisation, codes_only_export_type) codes_only_export_type = true expect { - post "/organisations/#{organisation.id}/logs/email-csv?codes_only_export=#{codes_only_export_type}", headers:, params: {} + post "/organisations/#{organisation.id}/logs/email-csv?codes_only=#{codes_only_export_type}", headers:, params: {} }.to enqueue_job(EmailCsvJob).with(user, nil, {}, false, organisation, codes_only_export_type) end end @@ -1201,14 +1201,14 @@ RSpec.describe OrganisationsController, type: :request do it "when codes_only query parameter is false, form contains hidden field with correct value" do codes_only = false get "/organisations/#{organisation.id}/logs/csv-download?codes_only=#{codes_only}", headers:, params: {} - hidden_field = page.find("form.button_to").find_field("codes_only_export", type: "hidden") + hidden_field = page.find("form.button_to").find_field("codes_only", type: "hidden") expect(hidden_field.value).to eq(codes_only.to_s) end it "when codes_only query parameter is true, form contains hidden field with correct value" do codes_only = true get "/organisations/#{organisation.id}/logs/csv-download?codes_only=#{codes_only}", headers:, params: {} - hidden_field = page.find("form.button_to").find_field("codes_only_export", type: "hidden") + hidden_field = page.find("form.button_to").find_field("codes_only", type: "hidden") expect(hidden_field.value).to eq(codes_only.to_s) end