Files
fizzy/test/models/webhook/delinquency_tracker_test.rb
2025-09-16 20:08:03 +02:00

40 lines
1.2 KiB
Ruby

require "test_helper"
class Webhook::DelinquencyTrackerTest < ActiveSupport::TestCase
test "record_delivery_of" do
tracker = webhook_delinquency_trackers(:active_webhook_tracker)
webhook = tracker.webhook
successful_delivery = webhook_deliveries(:successfully_completed)
failed_delivery = webhook_deliveries(:errored)
tracker.update!(consecutive_failures_count: 5)
tracker.record_delivery_of(successful_delivery)
tracker.reload
assert_equal 0, tracker.consecutive_failures_count
assert_nil tracker.first_failure_at
assert_difference -> { tracker.reload.consecutive_failures_count }, +1 do
tracker.record_delivery_of(failed_delivery)
end
tracker.reload
assert_not_nil tracker.first_failure_at
assert_difference -> { tracker.reload.consecutive_failures_count }, +1 do
assert_no_difference -> { tracker.reload.first_failure_at } do
tracker.record_delivery_of(failed_delivery)
end
end
travel_to 2.hours.from_now do
tracker.update!(consecutive_failures_count: 9)
webhook.activate
assert_changes -> { webhook.reload.active? }, from: true, to: false do
tracker.record_delivery_of(failed_delivery)
end
end
end
end