From ebbb7d19ac89d6cbf3449e49d88ebf0f3e339afb Mon Sep 17 00:00:00 2001 From: Risko986 Date: Tue, 28 Jan 2025 19:58:58 +0100 Subject: [PATCH 1/5] don't allow to delete message while being sent --- app/controllers/message_drafts_controller.rb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/controllers/message_drafts_controller.rb b/app/controllers/message_drafts_controller.rb index ecbaa9c2..41b16ca8 100644 --- a/app/controllers/message_drafts_controller.rb +++ b/app/controllers/message_drafts_controller.rb @@ -32,9 +32,12 @@ def destroy # redirect_path = @message.original_message.present? ? message_thread_path(@message.original_message.thread) : message_drafts_path redirect_path = @message.original_message.present? ? message_thread_path(@message.original_message.thread) : message_threads_path - @message.destroy - - redirect_to redirect_path, notice: "Správa bola zahodená" + if @message.not_yet_submitted? + @message.destroy + redirect_to redirect_path, notice: "Správa bola zahodená" + else + redirect_to redirect_path, alert: "Správu nie je možné zmazať po odoslaní" + end end def unlock From b86c6d3fd5f4d18d1431b05de47c8bcb4cddc842 Mon Sep 17 00:00:00 2001 From: Risko986 Date: Tue, 28 Jan 2025 20:32:30 +0100 Subject: [PATCH 2/5] don't delete submitted draft through bulk actions --- .../message_threads/bulk/message_drafts_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/message_threads/bulk/message_drafts_controller.rb b/app/controllers/message_threads/bulk/message_drafts_controller.rb index 9a1a5403..db4aa944 100644 --- a/app/controllers/message_threads/bulk/message_drafts_controller.rb +++ b/app/controllers/message_threads/bulk/message_drafts_controller.rb @@ -28,7 +28,7 @@ def destroy message_drafts_to_destroy_ids = message_threads.map(&:message_drafts).flatten.map(&:id) message_threads.transaction do - MessageDraft.where(id: message_drafts_to_destroy_ids).destroy_all + MessageDraft.not_in_submission_process.where(id: message_drafts_to_destroy_ids).destroy_all end if message_drafts_to_destroy_ids.present? From 287dfc4d5c52f5f4eed02f76976683aabd3b022c Mon Sep 17 00:00:00 2001 From: Richard Lences Date: Fri, 7 Feb 2025 20:31:59 +0100 Subject: [PATCH 3/5] edit delete notice --- app/controllers/message_drafts_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/message_drafts_controller.rb b/app/controllers/message_drafts_controller.rb index 41b16ca8..257b87be 100644 --- a/app/controllers/message_drafts_controller.rb +++ b/app/controllers/message_drafts_controller.rb @@ -34,9 +34,9 @@ def destroy if @message.not_yet_submitted? @message.destroy - redirect_to redirect_path, notice: "Správa bola zahodená" + redirect_to redirect_path, notice: "Správa bola zmazaná" else - redirect_to redirect_path, alert: "Správu nie je možné zmazať po odoslaní" + redirect_to redirect_path, alert: "Správu nie je možné zmazať po zaradení na odoslanie" end end From dc757c43aabae2aa6ae855b76afd28b3f0ef201c Mon Sep 17 00:00:00 2001 From: Risko986 Date: Wed, 12 Feb 2025 20:49:37 +0100 Subject: [PATCH 4/5] add tests --- .../message_drafts_controller_test.rb | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 test/controllers/message_drafts_controller_test.rb diff --git a/test/controllers/message_drafts_controller_test.rb b/test/controllers/message_drafts_controller_test.rb new file mode 100644 index 00000000..33d012f5 --- /dev/null +++ b/test/controllers/message_drafts_controller_test.rb @@ -0,0 +1,25 @@ +require 'test_helper' + +class MessageDraftsControllerTest < ActionController::TestCase + setup do + session[:login_expires_at] = Time.now + 1.day + Current.user = users(:basic) + session[:user_id] = Current.user.id + end + test "should destroy draft with status created" do + # draft should be destroyed if not yet submitted + message_draft = messages(:ssd_main_draft) + delete :destroy, params: { id: message_draft.id } + assert_raises(ActiveRecord::RecordNotFound) do + MessageDraft.find(message_draft.id) + end + end + test "should not destroy draft that is being submitted" do + message_draft = messages(:ssd_main_draft) + message_draft.metadata[:status] = "being_submitted" + message_draft.save! + delete :destroy, params: { id: message_draft.id } + assert_equal "Správu nie je možné zmazať po zaradení na odoslanie", flash[:alert] + assert MessageDraft.exists?(message_draft.id) + end +end From 2c523d44d1ac96e078f32054de8a47ab162eb708 Mon Sep 17 00:00:00 2001 From: Richard Lences Date: Thu, 13 Feb 2025 18:45:00 +0100 Subject: [PATCH 5/5] fix test name --- test/controllers/message_drafts_controller_test.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/controllers/message_drafts_controller_test.rb b/test/controllers/message_drafts_controller_test.rb index 33d012f5..7451ad43 100644 --- a/test/controllers/message_drafts_controller_test.rb +++ b/test/controllers/message_drafts_controller_test.rb @@ -6,14 +6,14 @@ class MessageDraftsControllerTest < ActionController::TestCase Current.user = users(:basic) session[:user_id] = Current.user.id end - test "should destroy draft with status created" do - # draft should be destroyed if not yet submitted + test "should destroy draft if it was not yet submitted" do message_draft = messages(:ssd_main_draft) delete :destroy, params: { id: message_draft.id } assert_raises(ActiveRecord::RecordNotFound) do MessageDraft.find(message_draft.id) end end + test "should not destroy draft that is being submitted" do message_draft = messages(:ssd_main_draft) message_draft.metadata[:status] = "being_submitted"