delayed 2.0.3 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,6 +13,7 @@ describe Delayed::Job do
13
13
  Delayed::Worker.max_claims = 1 # disable multithreading because SimpleJob is not threadsafe
14
14
  Delayed::Worker.default_priority = 99
15
15
  Delayed::Worker.delay_jobs = true
16
+ Delayed::Worker.deny_stale_enqueues = false
16
17
  Delayed::Worker.default_queue_name = 'default_tracking'
17
18
  SimpleJob.runs = 0
18
19
  described_class.delete_all
@@ -133,6 +134,42 @@ describe Delayed::Job do
133
134
  expect(described_class.enqueue(SimpleJob.new)).to be_instance_of(described_class)
134
135
  end
135
136
  end
137
+
138
+ context 'with deny_stale_enqueues = true' do
139
+ before { Delayed::Worker.deny_stale_enqueues = true }
140
+
141
+ it 'raises StaleEnqueueError when run_at is beyond lock_timeout in the past' do
142
+ stale_time = described_class.db_time_now - described_class.lock_timeout - 1.minute
143
+ expect {
144
+ described_class.enqueue SimpleJob.new, run_at: stale_time
145
+ }.to raise_error(Delayed::StaleEnqueueError, /Cannot enqueue a job in the distant past/)
146
+ end
147
+
148
+ it 'allows run_at within lock_timeout of now' do
149
+ recent_past = described_class.db_time_now - described_class.lock_timeout + 1.minute
150
+ job = described_class.enqueue SimpleJob.new, run_at: recent_past
151
+ expect(job).to be_persisted
152
+ end
153
+
154
+ it 'allows run_at in the future' do
155
+ future = described_class.db_time_now + 5.minutes
156
+ job = described_class.enqueue SimpleJob.new, run_at: future
157
+ expect(job).to be_persisted
158
+ end
159
+
160
+ it 'allows enqueue without run_at' do
161
+ job = described_class.enqueue SimpleJob.new
162
+ expect(job).to be_persisted
163
+ end
164
+ end
165
+
166
+ context 'with deny_stale_enqueues = false (default)' do
167
+ it 'allows run_at far in the past' do
168
+ stale_time = described_class.db_time_now - 1.day
169
+ job = described_class.enqueue SimpleJob.new, run_at: stale_time
170
+ expect(job).to be_persisted
171
+ end
172
+ end
136
173
  end
137
174
 
138
175
  describe 'callbacks' do
@@ -1006,12 +1043,6 @@ describe Delayed::Job do
1006
1043
  end
1007
1044
  end
1008
1045
 
1009
- if ActiveRecord::VERSION::MAJOR >= 7
1010
- delegate :default_timezone=, to: ActiveRecord
1011
- else
1012
- delegate :default_timezone=, to: ActiveRecord::Base
1013
- end
1014
-
1015
1046
  context "db_time_now" do
1016
1047
  after do
1017
1048
  Time.zone = nil