From 44574cea55c97faf20c0da20ae1a9b0ec0fe1134 Mon Sep 17 00:00:00 2001 From: Kat Date: Wed, 5 Jul 2023 11:35:02 +0100 Subject: [PATCH] Add delete duplicates page --- app/controllers/lettings_logs_controller.rb | 6 ++++ app/views/logs/delete_duplicates.html.erb | 33 +++++++++++++++++ config/routes.rb | 1 + .../requests/lettings_logs_controller_spec.rb | 35 +++++++++++++++++++ 4 files changed, 75 insertions(+) create mode 100644 app/views/logs/delete_duplicates.html.erb diff --git a/app/controllers/lettings_logs_controller.rb b/app/controllers/lettings_logs_controller.rb index b29e72b5d..a98dbccba 100644 --- a/app/controllers/lettings_logs_controller.rb +++ b/app/controllers/lettings_logs_controller.rb @@ -88,6 +88,12 @@ class LettingsLogsController < LogsController render "logs/delete_confirmation" end + def delete_duplicates + @log = LettingsLog.visible.find(params[:lettings_log_id]) + @duplicate_logs = LettingsLog.duplicate_logs_for_organisation(current_user.organisation, @log) + render "logs/delete_duplicates" + end + def download_csv unpaginated_filtered_logs = filter_manager.filtered_logs(current_user.lettings_logs, search_term, session_filters) diff --git a/app/views/logs/delete_duplicates.html.erb b/app/views/logs/delete_duplicates.html.erb new file mode 100644 index 000000000..f9cfddb63 --- /dev/null +++ b/app/views/logs/delete_duplicates.html.erb @@ -0,0 +1,33 @@ +<% content_for :before_content do %> + <% content_for :title, "Are you sure you want to delete this duplicate log?" %> + <%= govuk_back_link href: @log.lettings? ? lettings_logs_path(@log) : sales_logs_path(@log) %> +<% end %> + +
+
+

+ <%= content_for(:title) %> +

+ + <%= govuk_warning_text(text: "You will not be able to undo this action.") %> + +

+ This log will be deleted: +

+ + <% @duplicate_logs.each do |duplicate_log| %> + <%= govuk_link_to "Log #{duplicate_log.id}", lettings_log_path(duplicate_log)%> + <% end %> + +
+ <%= govuk_button_to( + "Delete this log" + ) %> + <%= govuk_button_link_to( + "Cancel", + @log.lettings? ? lettings_log_path(@log) : sales_log_path(@log), + secondary: true, + ) %> +
+
+
diff --git a/config/routes.rb b/config/routes.rb index 707e8e942..e8faaea4c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -171,6 +171,7 @@ Rails.application.routes.draw do resources :lettings_logs, path: "/lettings-logs" do get "delete-confirmation", to: "lettings_logs#delete_confirmation" get "duplicate-logs", to: "duplicate_logs#show" + get "delete-duplicates", to: "duplicate_logs#delete_duplicates" collection do post "bulk-upload", to: "bulk_upload#bulk_upload" diff --git a/spec/requests/lettings_logs_controller_spec.rb b/spec/requests/lettings_logs_controller_spec.rb index 2fc1ef461..fa152d593 100644 --- a/spec/requests/lettings_logs_controller_spec.rb +++ b/spec/requests/lettings_logs_controller_spec.rb @@ -1667,4 +1667,39 @@ RSpec.describe LettingsLogsController, type: :request do end end end + + describe "GET delete-duplicates" do + let(:headers) { { "Accept" => "text/html" } } + let(:page) { Capybara::Node::Simple.new(response.body) } + let(:user) { create(:user, :data_coordinator) } + let!(:lettings_log) do + create(:lettings_log, :completed, owning_organisation: user.organisation) + end + let(:id) { lettings_log.id } + let!(:duplicate_log) do + duplicate = lettings_log.dup + duplicate.id = nil + duplicate.save! + duplicate + end + let(:request) { get "/lettings-logs/#{id}/delete-duplicates", headers: } + + before do + allow(user).to receive(:need_two_factor_authentication?).and_return(false) + sign_in user + end + + context "when there is 1 duplicate log being deleted" do + it "renders page" do + request + expect(response).to have_http_status(:ok) + + expect(page).to have_content("Are you sure you want to delete this duplicate log?") + expect(page).to have_button(text: "Delete this log") + expect(page).to have_link(text: "Log #{duplicate_log.id}", href: lettings_log_path(duplicate_log.id)) + expect(page).not_to have_link(text: "Log #{id}", href: lettings_log_path(id)) + expect(page).to have_link(text: "Cancel", href: lettings_log_path(id)) # update with correct path when known + end + end + end end