Skip to content

Commit 596d580

Browse files
committed
Add create and destroy recurring task helpers
1 parent 367ebc9 commit 596d580

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

lib/solid_queue.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,15 @@ module SolidQueue
4343

4444
delegate :on_start, :on_stop, :on_exit, to: Supervisor
4545

46+
47+
def create_recurring_task(key, **attributes)
48+
RecurringTask.create!(**attributes, key:, static: false)
49+
end
50+
51+
def destroy_recurring_task(id)
52+
RecurringTask.dynamic.find(id).destroy!
53+
end
54+
4655
[ Dispatcher, Scheduler, Worker ].each do |process|
4756
define_singleton_method(:"on_#{process.name.demodulize.downcase}_start") do |&block|
4857
process.on_start(&block)

test/solid_queue_test.rb

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,31 @@ class SolidQueueTest < ActiveSupport::TestCase
44
test "it has a version number" do
55
assert SolidQueue::VERSION
66
end
7+
8+
test "creates recurring tasks" do
9+
SolidQueue.create_recurring_task("test 1", command: "puts 1", schedule: "every hour")
10+
SolidQueue.create_recurring_task("test 2", command: "puts 2", schedule: "every minute", static: true)
11+
12+
assert SolidQueue::RecurringTask.exists?(key: "test 1", command: "puts 1", schedule: "every hour", static: false)
13+
assert SolidQueue::RecurringTask.exists?(key: "test 2", command: "puts 2", schedule: "every minute", static: false)
14+
end
15+
16+
test "destroys recurring tasks" do
17+
dynamic_task = SolidQueue::RecurringTask.create!(
18+
key: "dynamic", command: "puts 'd'", schedule: "every day", static: false
19+
)
20+
21+
static_task = SolidQueue::RecurringTask.create!(
22+
key: "static", command: "puts 's'", schedule: "every week", static: true
23+
)
24+
25+
SolidQueue.destroy_recurring_task(dynamic_task.id)
26+
27+
assert_raises(ActiveRecord::RecordNotFound) do
28+
SolidQueue.destroy_recurring_task(static_task.id)
29+
end
30+
31+
assert_not SolidQueue::RecurringTask.exists?(key: "dynamic", static: false)
32+
assert SolidQueue::RecurringTask.exists?(key: "static", static: true)
33+
end
734
end

0 commit comments

Comments
 (0)