diff --git a/app/components/create_log_actions_component.html.erb b/app/components/create_log_actions_component.html.erb index a600f3290..4b74c8901 100644 --- a/app/components/create_log_actions_component.html.erb +++ b/app/components/create_log_actions_component.html.erb @@ -9,8 +9,9 @@ <% end %> <% if FeatureToggle.create_test_logs_enabled? %> - <%= govuk_button_link_to "Create test log", create_test_log_href, secondary: true %> - <%= govuk_button_link_to "Create test log (setup only)", create_setup_test_log_href, secondary: true %> + <%= govuk_link_to "Create test log", create_test_log_href %> + <%= govuk_link_to "Create test log (setup only)", create_setup_test_log_href %> + <%= govuk_link_to "Get test BU file (2024)", create_2024_test_bulk_upload_href %> <% end %> <% end %> diff --git a/app/components/create_log_actions_component.rb b/app/components/create_log_actions_component.rb index 896bfe97e..0abbfd385 100644 --- a/app/components/create_log_actions_component.rb +++ b/app/components/create_log_actions_component.rb @@ -42,6 +42,10 @@ class CreateLogActionsComponent < ViewComponent::Base send("create_setup_test_#{log_type}_log_path") end + def create_2024_test_bulk_upload_href + send("create_2024_test_#{log_type}_bulk_upload_path") + end + def view_uploads_button_copy "View #{log_type} bulk uploads" end diff --git a/app/controllers/lettings_logs_controller.rb b/app/controllers/lettings_logs_controller.rb index 7fef9499b..38a89b682 100644 --- a/app/controllers/lettings_logs_controller.rb +++ b/app/controllers/lettings_logs_controller.rb @@ -149,20 +149,6 @@ class LettingsLogsController < LogsController end end - def create_test_log - return render_not_found unless FeatureToggle.create_test_logs_enabled? - - log = FactoryBot.create(:lettings_log, :completed, assigned_to: current_user, ppostcode_full: "SW1A 1AA") - redirect_to lettings_log_path(log) - end - - def create_setup_test_log - return render_not_found unless FeatureToggle.create_test_logs_enabled? - - log = FactoryBot.create(:lettings_log, :setup_completed, assigned_to: current_user) - redirect_to lettings_log_path(log) - end - private def session_filters diff --git a/app/controllers/sales_logs_controller.rb b/app/controllers/sales_logs_controller.rb index 237fd94d7..3c389ccf1 100644 --- a/app/controllers/sales_logs_controller.rb +++ b/app/controllers/sales_logs_controller.rb @@ -119,20 +119,6 @@ class SalesLogsController < LogsController end end - def create_test_log - return render_not_found unless FeatureToggle.create_test_logs_enabled? - - log = FactoryBot.create(:sales_log, :completed, assigned_to: current_user) - redirect_to sales_log_path(log) - end - - def create_setup_test_log - return render_not_found unless FeatureToggle.create_test_logs_enabled? - - log = FactoryBot.create(:sales_log, :shared_ownership_setup_complete, assigned_to: current_user) - redirect_to sales_log_path(log) - end - private def session_filters diff --git a/app/controllers/test_data_controller.rb b/app/controllers/test_data_controller.rb new file mode 100644 index 000000000..2b049f176 --- /dev/null +++ b/app/controllers/test_data_controller.rb @@ -0,0 +1,68 @@ +class TestDataController < ApplicationController + rescue_from ActiveRecord::RecordNotFound, with: :render_not_found + + def create_test_lettings_log + return render_not_found unless FeatureToggle.create_test_logs_enabled? + + log = FactoryBot.create(:lettings_log, :completed, assigned_to: current_user, ppostcode_full: "SW1A 1AA") + redirect_to lettings_log_path(log) + end + + def create_setup_test_lettings_log + return render_not_found unless FeatureToggle.create_test_logs_enabled? + + log = FactoryBot.create(:lettings_log, :setup_completed, assigned_to: current_user) + redirect_to lettings_log_path(log) + end + + def create_2024_test_lettings_bulk_upload + return render_not_found unless FeatureToggle.create_test_logs_enabled? + + file = Tempfile.new("test_lettings_log.csv") + log = FactoryBot.create(:lettings_log, :completed, assigned_to: current_user, ppostcode_full: "SW1A 1AA") + log_to_csv = BulkUpload::LettingsLogToCsv.new(log:, line_ending: "\n", overrides: { organisation_id: "ORG#{log.owning_organisation_id}", managing_organisation_id: "ORG#{log.owning_organisation_id}" }) + file.write(log_to_csv.default_field_numbers_row) + file.write(log_to_csv.to_csv_row) + file.rewind + send_file file.path, type: "text/csv", + filename: "test_lettings_log.csv", + disposition: "attachment", + after_send: lambda { + file.close + file.unlink + } + end + + def create_test_sales_log + return render_not_found unless FeatureToggle.create_test_logs_enabled? + + log = FactoryBot.create(:sales_log, :completed, assigned_to: current_user) + redirect_to sales_log_path(log) + end + + def create_setup_test_sales_log + return render_not_found unless FeatureToggle.create_test_logs_enabled? + + log = FactoryBot.create(:sales_log, :shared_ownership_setup_complete, assigned_to: current_user) + redirect_to sales_log_path(log) + end + + def create_2024_test_sales_bulk_upload + return render_not_found unless FeatureToggle.create_test_logs_enabled? + + file = Tempfile.new("test_sales_log.csv") + + log = FactoryBot.create(:sales_log, :completed, assigned_to: current_user, value: 180_000, deposit: 150_000) + log_to_csv = BulkUpload::SalesLogToCsv.new(log:, line_ending: "\n", overrides: { organisation_id: "ORG#{log.owning_organisation_id}", managing_organisation_id: "ORG#{log.owning_organisation_id}" }) + file.write(log_to_csv.default_field_numbers_row) + file.write(log_to_csv.to_csv_row) + file.rewind + send_file file.path, type: "text/csv", + filename: "test_sales_log.csv", + disposition: "attachment", + after_send: lambda { + file.close + file.unlink + } + end +end diff --git a/spec/support/bulk_upload/lettings_log_to_csv.rb b/app/helpers/bulk_upload/lettings_log_to_csv.rb similarity index 96% rename from spec/support/bulk_upload/lettings_log_to_csv.rb rename to app/helpers/bulk_upload/lettings_log_to_csv.rb index 18c367ffc..cdf38db17 100644 --- a/spec/support/bulk_upload/lettings_log_to_csv.rb +++ b/app/helpers/bulk_upload/lettings_log_to_csv.rb @@ -2,10 +2,12 @@ class BulkUpload::LettingsLogToCsv attr_reader :log, :line_ending, :col_offset, :overrides def initialize(log:, line_ending: "\n", col_offset: 1, overrides: {}) + # rubocop:disable Rails/HelperInstanceVariable @log = log @line_ending = line_ending @col_offset = col_offset @overrides = overrides + # rubocop:enable Rails/HelperInstanceVariable end def row_prefix @@ -145,8 +147,8 @@ class BulkUpload::LettingsLogToCsv def to_2024_row [ - log.owning_organisation&.old_visible_id, # 1 - log.managing_organisation&.old_visible_id, + overrides[:organisation_id] || log.owning_organisation&.old_visible_id, # 1 + overrides[:managing_organisation_id] || log.managing_organisation&.old_visible_id, log.assigned_to&.email, log.needstype, log.scheme&.id ? "S#{log.scheme&.id}" : "", @@ -162,10 +164,10 @@ class BulkUpload::LettingsLogToCsv log.propcode, log.declaration, log.uprn, - log.address_line1, - log.address_line2, - log.town_or_city, - log.county, # 20 + log.address_line1&.tr(",", " "), + log.address_line2&.tr(",", " "), + log.town_or_city&.tr(",", " "), + log.county&.tr(",", " "), # 20 ((log.postcode_full || "").split(" ") || [""]).first, ((log.postcode_full || "").split(" ") || [""]).last, diff --git a/spec/support/bulk_upload/sales_log_to_csv.rb b/app/helpers/bulk_upload/sales_log_to_csv.rb similarity index 97% rename from spec/support/bulk_upload/sales_log_to_csv.rb rename to app/helpers/bulk_upload/sales_log_to_csv.rb index 8e2f1be0c..0d37fe344 100644 --- a/spec/support/bulk_upload/sales_log_to_csv.rb +++ b/app/helpers/bulk_upload/sales_log_to_csv.rb @@ -2,10 +2,12 @@ class BulkUpload::SalesLogToCsv attr_reader :log, :line_ending, :col_offset, :overrides def initialize(log:, line_ending: "\n", col_offset: 1, overrides: {}) + # rubocop:disable Rails/HelperInstanceVariable @log = log @line_ending = line_ending @col_offset = col_offset @overrides = overrides + # rubocop:enable Rails/HelperInstanceVariable end def row_prefix @@ -187,7 +189,7 @@ class BulkUpload::SalesLogToCsv log.prevloc, # 40 ((log.ppostcode_full || "").split(" ") || [""]).first, ((log.ppostcode_full || "").split(" ") || [""]).last, - log.ppcodenk == 0 ? 1 : nil, + log.ppcodenk&.zero? ? 1 : nil, log.pregyrha, log.pregla, @@ -311,10 +313,10 @@ class BulkUpload::SalesLogToCsv log.builtype, log.uprn, - log.address_line1, - log.address_line2, - log.town_or_city, - log.county, + log.address_line1&.tr(",", " "), + log.address_line2&.tr(",", " "), + log.town_or_city&.tr(",", " "), + log.county&.tr(",", " "), ((log.postcode_full || "").split(" ") || [""]).first, ((log.postcode_full || "").split(" ") || [""]).last, log.la, diff --git a/config/routes.rb b/config/routes.rb index 55d58b41b..ab31b6b1b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -389,15 +389,19 @@ Rails.application.routes.draw do end end - get "create-test-lettings-log", to: "lettings_logs#create_test_log" - get "create-test-sales-log", to: "sales_logs#create_test_log" - get "create-setup-test-lettings-log", to: "lettings_logs#create_setup_test_log" - get "create-setup-test-sales-log", to: "sales_logs#create_setup_test_log" - scope via: :all do match "/404", to: "errors#not_found" match "/429", to: "errors#too_many_requests", status: 429 match "/422", to: "errors#unprocessable_entity" match "/500", to: "errors#internal_server_error" end + + if FeatureToggle.create_test_logs_enabled? + get "create-test-lettings-log", to: "test_data#create_test_lettings_log" + get "create-setup-test-lettings-log", to: "test_data#create_setup_test_lettings_log" + get "create-2024-test-lettings-bulk-upload", to: "test_data#create_2024_test_lettings_bulk_upload" + get "create-test-sales-log", to: "test_data#create_test_sales_log" + get "create-setup-test-sales-log", to: "test_data#create_setup_test_sales_log" + get "create-2024-test-sales-bulk-upload", to: "test_data#create_2024_test_sales_bulk_upload" + end end