Simplify delinquency tracking
This commit is contained in:
@@ -7,31 +7,28 @@ class Webhook::DelinquencyTrackerTest < ActiveSupport::TestCase
|
||||
successful_delivery = webhook_deliveries(:successfully_completed)
|
||||
failed_delivery = webhook_deliveries(:errored)
|
||||
|
||||
assert_difference -> { tracker.reload.total_count }, +1 do
|
||||
assert_no_difference -> { tracker.reload.failed_count } do
|
||||
tracker.record_delivery_of(successful_delivery)
|
||||
end
|
||||
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
|
||||
|
||||
assert_difference -> { tracker.reload.total_count }, +1 do
|
||||
assert_difference -> { tracker.reload.failed_count }, +1 do
|
||||
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 13.hours.from_now do
|
||||
tracker.update!(total_count: 11, failed_count: 5)
|
||||
|
||||
tracker.record_delivery_of(failed_delivery)
|
||||
tracker.reload
|
||||
|
||||
assert_equal 0, tracker.total_count
|
||||
assert_equal 0, tracker.failed_count
|
||||
assert tracker.last_reset_at > 1.minute.ago
|
||||
end
|
||||
|
||||
travel_to 26.hours.from_now do
|
||||
tracker.update!(total_count: 50, failed_count: 50)
|
||||
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
|
||||
|
||||
@@ -56,10 +56,10 @@ class Webhook::DeliveryTest < ActiveSupport::TestCase
|
||||
assert_equal "pending", delivery.state
|
||||
|
||||
tracker = delivery.webhook.delinquency_tracker
|
||||
assert_difference -> { tracker.reload.total_count }, 1 do
|
||||
assert_no_difference -> { tracker.reload.failed_count } do
|
||||
delivery.deliver
|
||||
end
|
||||
tracker.update!(consecutive_failures_count: 0)
|
||||
|
||||
assert_no_difference -> { tracker.reload.consecutive_failures_count } do
|
||||
delivery.deliver
|
||||
end
|
||||
|
||||
assert delivery.persisted?
|
||||
@@ -75,15 +75,13 @@ class Webhook::DeliveryTest < ActiveSupport::TestCase
|
||||
stub_request(:post, delivery.webhook.url).to_timeout
|
||||
|
||||
tracker = delivery.webhook.delinquency_tracker
|
||||
assert_difference -> { tracker.reload.total_count }, 1 do
|
||||
assert_difference -> { tracker.reload.failed_count }, 1 do
|
||||
delivery.deliver
|
||||
end
|
||||
assert_difference -> { tracker.reload.consecutive_failures_count }, 1 do
|
||||
delivery.deliver
|
||||
end
|
||||
|
||||
assert_equal "completed", delivery.state
|
||||
assert_equal "connection_timeout", delivery.response[:error]
|
||||
assert delivery.failed?
|
||||
assert_not delivery.succeeded?
|
||||
end
|
||||
|
||||
test "deliver when the connection is refused" do
|
||||
|
||||
Reference in New Issue
Block a user