Add postpone and auto-postpone as Webhook triggers

This commit is contained in:
Stanko K.R.
2025-10-03 17:30:42 +02:00
parent 880ad7ff12
commit 2ac2d4e0da
6 changed files with 39 additions and 5 deletions
+6
View File
@@ -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
View File
@@ -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",
+1 -1
View File
@@ -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
+7 -2
View File
@@ -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
+2
View File
@@ -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
+21 -2
View File
@@ -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