diff --git a/app/admin/support/ticket.rb b/app/admin/support/ticket.rb index 0c8899686..3c029af76 100644 --- a/app/admin/support/ticket.rb +++ b/app/admin/support/ticket.rb @@ -26,7 +26,7 @@ collection: -> { ticket_admins_collection(collection) }, label: -> { Support::Ticket.human_attribute_name(:admin) } filter :priority, as: :select, - collection: -> { ticket_priority_marks_collection } + collection: -> { ticket_priority_filter_collection } filter :last_activity_at, as: :date_range includes :admin, :last_message @@ -89,6 +89,7 @@ f.input :priority, collection: ticket_priority_marks_collection, include_blank: false, + required: false, label: false, wrapper_html: { class: "support-ticket-priority" }, input_html: { diff --git a/app/helpers/support_helper.rb b/app/helpers/support_helper.rb index 6e102079e..f5f98282d 100644 --- a/app/helpers/support_helper.rb +++ b/app/helpers/support_helper.rb @@ -12,12 +12,18 @@ def ticket_admins_collection(relation = nil) def ticket_priority_marks_collection [ - [ "", Support::Ticket.priorities[:normal] ], - [ Support::Ticket::PRIORITY_ICONS[:medium], Support::Ticket.priorities[:medium] ], - [ Support::Ticket::PRIORITY_ICONS[:high], Support::Ticket.priorities[:high] ] + [ "", :normal ], + [ Support::Ticket::PRIORITY_ICONS[:medium], :medium ], + [ Support::Ticket::PRIORITY_ICONS[:high], :high ] ] end + def ticket_priority_filter_collection + ticket_priority_marks_collection.map { |label, key| + [ label, Support::Ticket.priorities[key] ] + } + end + def support_message_html(message) html = if message.html.present? message.html.to_s diff --git a/app/models/support/ticket.rb b/app/models/support/ticket.rb index 10a2021e2..579d22b70 100644 --- a/app/models/support/ticket.rb +++ b/app/models/support/ticket.rb @@ -10,7 +10,7 @@ class Ticket < ApplicationRecord include HasAttachments has_rich_text :html - enum :priority, %i[normal medium high] + enum :priority, %i[normal medium high], validate: true belongs_to :admin, optional: true has_many :messages, class_name: "Support::Message", diff --git a/test/controllers/support_tickets_controller_test.rb b/test/controllers/support_tickets_controller_test.rb index 47b321621..c4cdae580 100644 --- a/test/controllers/support_tickets_controller_test.rb +++ b/test/controllers/support_tickets_controller_test.rb @@ -110,9 +110,9 @@ def login(admin) assert_select "label[for=support_ticket_priority]", count: 0 assert_select "#support_ticket_subject_input .inline-hints", count: 0 assert_select "select[name='support_ticket[priority]']" do - assert_select "option[value=?]", Support::Ticket.priorities[:normal], text: "" - assert_select "option[value=?]", Support::Ticket.priorities[:medium], text: Support::Ticket::PRIORITY_ICONS[:medium] - assert_select "option[value=?]", Support::Ticket.priorities[:high], text: Support::Ticket::PRIORITY_ICONS[:high] + assert_select "option[value=?]", "normal", text: "" + assert_select "option[value=?]", "medium", text: Support::Ticket::PRIORITY_ICONS[:medium] + assert_select "option[value=?]", "high", text: Support::Ticket::PRIORITY_ICONS[:high] end post support_tickets_path, params: { @@ -145,6 +145,40 @@ def login(admin) assert_equal "Checkout fails", ticket.messages.first.body end + test "create accepts high priority from the form enum name" do + login admins(:external) + + post support_tickets_path, params: { + support_ticket: { + priority: "high", + subject: "Broken shop", + html: "