From 92a96a9f3c3d261127458a52dbd5af9b6d839f45 Mon Sep 17 00:00:00 2001 From: Arthur Campbell Date: Mon, 22 May 2023 09:42:51 +0100 Subject: [PATCH] write a happy path feature test for the entire journey --- spec/features/lettings_log_spec.rb | 42 ++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/spec/features/lettings_log_spec.rb b/spec/features/lettings_log_spec.rb index 7f1e77d2a..9b848f3b6 100644 --- a/spec/features/lettings_log_spec.rb +++ b/spec/features/lettings_log_spec.rb @@ -220,6 +220,48 @@ RSpec.describe "Lettings Log Features" do end end end + + context "when deleting multiple logs" do + let!(:postcode) { "SW1A 1AA" } + let!(:lettings_log_1) { create(:lettings_log, :setup_completed, created_by: support_user, postcode_full: postcode) } + let!(:lettings_log_2) { create(:lettings_log, :in_progress, created_by: support_user, postcode_full: postcode) } + + it "is possible to delete multiple logs" do + create_list(:lettings_log, 5, :in_progress) + visit lettings_logs_path + expect(page).to have_selector "article.app-log-summary", count: 7 + expect(page).not_to have_link "Delete logs" + within ".app-filter" do + check "status-in-progress-field" + choose "user-yours-field" + click_button + end + expect(page).to have_selector "article.app-log-summary", count: 2 + expect(page).to have_link "Delete logs" + click_link "Delete logs" + + expect(page).to have_current_path delete_logs_lettings_logs_path + rows = page.find_all "tbody tr" + expect(rows.count).to be 2 + id_to_delete, id_to_keep = rows.map { |row| row.first("td").text.to_i } + expect([id_to_delete, id_to_keep]).to match_array [lettings_log_1.id, lettings_log_2.id] + check "forms-delete-logs-form-logs-to-delete-#{id_to_delete}-field" + uncheck "forms-delete-logs-form-logs-to-delete-#{id_to_keep}-field" + click_button "Continue" + + expect(page).to have_current_path delete_logs_confirmation_lettings_logs_path, ignore_query: true + expect(page.text).to include "You've selected 1 log to delete" + expect(page.find("input#ids", visible: false).value.to_i).to be id_to_delete + click_button "Delete logs" + + expect(page).to have_current_path lettings_logs_path + expect(page).to have_selector "article.app-log-summary", count: 1 + expect(page.find("article.app-log-summary h2").text).to eq "Log #{id_to_keep}" + deleted_log = LettingsLog.find(id_to_delete) + expect(deleted_log.status).to eq "deleted" + expect(deleted_log.discarded_at).not_to be nil + end + end end context "when the signed is user is not a Support user" do