Skip to content

Commit af778b3

Browse files
authored
Support before_enqueue for bulk delivery methods (#463)
1 parent 27b853a commit af778b3

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

app/jobs/noticed/event_job.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class EventJob < ApplicationJob
55
def perform(event)
66
# Enqueue bulk deliveries
77
event.bulk_delivery_methods.each_value do |deliver_by|
8-
deliver_by.perform_later(event)
8+
deliver_by.perform_later(event) if deliver_by.perform?(event)
99
end
1010

1111
# Enqueue individual deliveries

test/jobs/event_job_test.rb

+21
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ module ::Noticed
55
class DeliveryMethods::Test1 < DeliveryMethod; end
66

77
class DeliveryMethods::Test2 < DeliveryMethod; end
8+
9+
class BulkDeliveryMethods::Test1 < BulkDeliveryMethod; end
10+
11+
class BulkDeliveryMethods::Test2 < BulkDeliveryMethod; end
812
end
913

1014
test "enqueues jobs for each notification and delivery method" do
@@ -28,4 +32,21 @@ class DeliveryMethods::Test2 < DeliveryMethod; end
2832
event.class.delivery_methods.delete(:test1)
2933
event.class.delivery_methods.delete(:test2)
3034
end
35+
36+
test "skips enqueueing bulk delivery job if before_enqueue raises an error" do
37+
notification = noticed_notifications(:one)
38+
event = notification.event
39+
event.class.bulk_deliver_by :test1 do |config|
40+
config.before_enqueue = -> { false }
41+
end
42+
event.class.bulk_deliver_by :test2 do |config|
43+
config.before_enqueue = -> { throw :abort }
44+
end
45+
46+
Noticed::EventJob.perform_now(event)
47+
assert_enqueued_jobs 4
48+
49+
event.class.bulk_delivery_methods.delete(:test1)
50+
event.class.bulk_delivery_methods.delete(:test2)
51+
end
3152
end

0 commit comments

Comments
 (0)