diff --git a/app/controllers/message_drafts_controller.rb b/app/controllers/message_drafts_controller.rb index ecbaa9c28..257b87bed 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 zmazaná" + else + redirect_to redirect_path, alert: "Správu nie je možné zmazať po zaradení na odoslanie" + end end def unlock diff --git a/app/controllers/message_threads/bulk/message_drafts_controller.rb b/app/controllers/message_threads/bulk/message_drafts_controller.rb index 9a1a54030..db4aa9442 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? diff --git a/test/controllers/message_drafts_controller_test.rb b/test/controllers/message_drafts_controller_test.rb new file mode 100644 index 000000000..7451ad437 --- /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 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" + 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