Add postpone and auto-postpone as Webhook triggers
This commit is contained in:
@@ -87,6 +87,12 @@ module EventsHelper
|
||||
"#{h event_creator_name(event) } moved <span style='color: var(--card-color)'>\"#{h title }\"</span> to done".html_safe
|
||||
when "card_reopened"
|
||||
"#{h event_creator_name(event) } reopened <span style='color: var(--card-color)'>\"#{h title }\"</span>".html_safe
|
||||
when "card_postponed"
|
||||
"#{h event_creator_name(event) } postponed <span style='color: var(--card-color)'>\"#{h title }\"</span>".html_safe
|
||||
when "card_auto_postponed"
|
||||
"<span style='color: var(--card-color)'>\"#{h title }\"</span> was postponed due to inactivity".html_safe
|
||||
when "card_resumed"
|
||||
"#{h event_creator_name(event) } resumed <span style='color: var(--card-color)'>\"#{h title }\"</span>".html_safe
|
||||
when "card_due_date_added"
|
||||
"#{h event_creator_name(event)} set the date to #{h event.particulars.dig('particulars', 'due_date').to_date.strftime('%B %-d')} on <span style='color: var(--card-color)'>\"#{h title }\"</span>".html_safe
|
||||
when "card_due_date_changed"
|
||||
|
||||
@@ -2,6 +2,8 @@ module WebhooksHelper
|
||||
ACTION_LABELS = {
|
||||
card_assigned: "Card assigned",
|
||||
card_closed: "Card moved to Done",
|
||||
card_postponed: "Card postponed",
|
||||
card_auto_postponed: "Card auto-postponed",
|
||||
card_collection_changed: "Card collection changed",
|
||||
card_due_date_added: "Card due date added",
|
||||
card_due_date_changed: "Card due date changed",
|
||||
|
||||
@@ -22,7 +22,7 @@ module Card::Entropic
|
||||
class_methods do
|
||||
def auto_postpone_all_due
|
||||
due_to_be_postponed.find_each do |card|
|
||||
card.postpone(user: User.system)
|
||||
card.auto_postpone(user: User.system)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -24,16 +24,21 @@ module Card::Postponable
|
||||
open? && published? && !postponed?
|
||||
end
|
||||
|
||||
def postpone(user: Current.user)
|
||||
def auto_postpone(**args)
|
||||
postpone(**args, event_name: :auto_postponed)
|
||||
end
|
||||
|
||||
def postpone(user: Current.user, event_name: :postponed)
|
||||
transaction do
|
||||
send_back_to_triage
|
||||
reopen
|
||||
activity_spike&.destroy
|
||||
create_not_now!(user: user) unless postponed?
|
||||
track_event event_name, creator: user
|
||||
end
|
||||
end
|
||||
|
||||
def resume
|
||||
def resume(user: Current.user)
|
||||
transaction do
|
||||
reopen
|
||||
activity_spike&.destroy
|
||||
|
||||
@@ -9,6 +9,8 @@ class Webhook < ApplicationRecord
|
||||
PERMITTED_ACTIONS = %w[
|
||||
card_assigned
|
||||
card_closed
|
||||
card_postponed
|
||||
card_auto_postponed
|
||||
card_collection_changed
|
||||
card_due_date_added
|
||||
card_due_date_changed
|
||||
|
||||
@@ -20,10 +20,29 @@ class Card::PostponableTest < ActiveSupport::TestCase
|
||||
card = cards(:text)
|
||||
|
||||
assert_changes -> { card.reload.postponed? }, to: true do
|
||||
card.postpone
|
||||
assert_difference -> { card.events.count }, +1 do
|
||||
card.postpone(user: users(:kevin))
|
||||
end
|
||||
end
|
||||
|
||||
assert_equal users(:david), card.not_now.user
|
||||
assert_equal users(:kevin), card.not_now.user
|
||||
assert card.events.last.action.card_postponed?
|
||||
|
||||
assert_changes -> { card.reload.postponed? }, to: false do
|
||||
card.resume(user: users(:kevin))
|
||||
end
|
||||
end
|
||||
|
||||
test "auto_postpone a card" do
|
||||
card = cards(:text)
|
||||
|
||||
assert_changes -> { card.reload.postponed? }, to: true do
|
||||
assert_difference -> { card.events.count }, +1 do
|
||||
card.auto_postpone(user: users(:kevin))
|
||||
end
|
||||
end
|
||||
|
||||
assert card.events.last.action.card_auto_postponed?
|
||||
end
|
||||
|
||||
test "scopes" do
|
||||
|
||||
Reference in New Issue
Block a user