40 lines
1.2 KiB
Ruby
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
|