rekiq 0.9.3 → 1.0.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.
@@ -1,399 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Rekiq::Job do
4
- describe '.new' do
5
- context 'when no args' do
6
- before { @job = Rekiq::Job.new }
7
-
8
- it 'returns an instance of Job' do
9
- expect(@job).not_to be_nil
10
- end
11
-
12
- it 'sets attribute shift as nil' do
13
- expect(@job.shift).to eq(nil)
14
- end
15
-
16
- it 'sets schedule_post_work as nil' do
17
- expect(@job.schedule_post_work).to eq(nil)
18
- end
19
-
20
- it 'sets schedule_expired as nil' do
21
- expect(@job.schedule_expired).to eq(nil)
22
- end
23
- end
24
-
25
- context 'when shift passed as argument' do
26
- let(:shift) { 5 * 60 }
27
- before do
28
- @job = Rekiq::Job.new('shift' => shift)
29
- end
30
-
31
- it 'sets shift to passed value' do
32
- expect(@job.shift).to eq(shift)
33
- end
34
- end
35
-
36
- context 'when schedule_post_work and ' \
37
- 'schedule_expired passed as true' do
38
- let(:schedule_post_work) { true }
39
- let(:schedule_expired) { true }
40
- before do
41
- @job =
42
- Rekiq::Job.new \
43
- 'schedule_post_work' => schedule_post_work,
44
- 'schedule_expired' => schedule_expired
45
- end
46
-
47
- it 'sets schedule_post_work to true' do
48
- expect(@job.schedule_post_work).to eq(true)
49
- end
50
-
51
- it 'sets schedule_expired to true' do
52
- expect(@job.schedule_expired).to eq(true)
53
- end
54
- end
55
- end
56
-
57
- describe '.from_array' do
58
- context 'array returned from Job#to_array' do
59
- let(:job) { build(:job, :randomized_attributes) }
60
- let(:array) { job.to_array }
61
- before { @job = Rekiq::Job.from_array(array) }
62
-
63
- it 'returns job instance' do
64
- expect(@job.class).to eq(Rekiq::Job)
65
- end
66
-
67
- it 'returns job with shift value before serialization' do
68
- expect(@job.shift).to eq(job.shift)
69
- end
70
-
71
- it 'returns job with schedule_post_work value before serialization' do
72
- expect(@job.schedule_post_work).to eq(job.schedule_post_work)
73
- end
74
-
75
- it 'returns job with schedule_expired value before serialization' do
76
- expect(@job.schedule_expired).to eq(job.schedule_expired)
77
- end
78
-
79
- it 'returns job with expiration_margin value before serialization' do
80
- expect(@job.expiration_margin).to eq(job.expiration_margin)
81
- end
82
-
83
- it 'returns job with schedule value before serialization' do
84
- expect(@job.schedule.class).to eq(job.schedule.class)
85
- end
86
-
87
- it 'returns job with working schedule' do
88
- time = Time.now
89
- expect(@job.schedule.next_occurrence(time))
90
- .to eq(job.schedule.next_occurrence(time))
91
- end
92
- end
93
- end
94
-
95
- describe '#to_array' do
96
- context 'given job instance' do
97
- let(:job) { build(:job, :randomized_attributes) }
98
- before { @val = job.to_array }
99
-
100
- it 'returns an array' do
101
- expect(@val.class).to eq(Array)
102
- end
103
-
104
- it 'returns array with Marshalled object value at index 0' do
105
- # TODO: expect(@val[0]).to eq(Marshal.dump(job.schedule))
106
- end
107
-
108
- it 'returns array with shift value at index 1' do
109
- expect(@val[1]).to eq(job.shift)
110
- end
111
-
112
- it 'returns array with schedule_post_work value at index 2' do
113
- expect(@val[2]).to eq(job.schedule_post_work)
114
- end
115
-
116
- it 'returns array with schedule_expired value at index 3' do
117
- expect(@val[3]).to eq(job.schedule_expired)
118
- end
119
-
120
- it 'returns array with expiration_margin value at index 4' do
121
- expect(@val[4]).to eq(job.expiration_margin)
122
- end
123
- end
124
- end
125
-
126
- describe '#next_work_time' do
127
- context 'non recurring schedule in future' do
128
- let(:exceed_by) { 10 * 60 }
129
- let(:schedule_time) { Time.now + exceed_by }
130
- let(:schedule) { IceCube::Schedule.new(schedule_time) }
131
-
132
- context 'schedule expired as true' do
133
- let(:schedule_expired) { true }
134
-
135
- context 'calculating from current time' do
136
- let(:job) do
137
- build(:job, schedule: schedule, schedule_expired: schedule_expired)
138
- end
139
- before { @next_work_time = job.next_work_time }
140
-
141
- it 'return schedule time' do
142
- expect(@next_work_time).to eq(schedule_time)
143
- end
144
- end
145
-
146
- context 'shift to time between current and schedule time' do
147
- let(:shift) { - exceed_by / 2 }
148
-
149
- context 'calculating from current time' do
150
- let(:job) do
151
- build(:job,
152
- schedule: schedule,
153
- schedule_expired: schedule_expired,
154
- shift: shift)
155
- end
156
- before { @next_work_time = job.next_work_time }
157
-
158
- it 'returns shifted schedule time' do
159
- expect(@next_work_time).to eq(schedule_time + shift)
160
- end
161
- end
162
- end
163
-
164
- context 'shift to time after schedule time' do
165
- let(:shift) { 60 }
166
-
167
- context 'calculating from current time' do
168
- let(:job) do
169
- build(:job, schedule: schedule,
170
- schedule_expired: schedule_expired,
171
- shift: shift)
172
- end
173
- before { @next_work_time = job.next_work_time }
174
-
175
- it 'returns shifted schedule time' do
176
- expect(@next_work_time).to eq(schedule_time + shift)
177
- end
178
- end
179
- end
180
-
181
- context 'shift to time before current time' do
182
- let(:shift) { - (schedule_time - Time.now + 60) }
183
-
184
- context 'calculating from current time' do
185
- let(:job) do
186
- build(:job, schedule: schedule,
187
- schedule_expired: schedule_expired,
188
- shift: shift)
189
- end
190
- before { @next_work_time = job.next_work_time }
191
-
192
- it 'returns shifted schedule time' do
193
- expect(@next_work_time).to eq(schedule_time + shift)
194
- end
195
- end
196
- end
197
- end
198
-
199
- context 'schedule expired as false' do
200
- let(:schedule_expired) { false }
201
- let(:expiration_margin) { 10 * 60 }
202
-
203
- context 'calculating from current time' do
204
- let(:job) do
205
- build(:job, schedule: schedule,
206
- schedule_expired: schedule_expired,
207
- expiration_margin: expiration_margin)
208
- end
209
- before { @next_work_time = job.next_work_time }
210
-
211
- it 'returns schedule time' do
212
- expect(@next_work_time).to eq(schedule_time)
213
- end
214
- end
215
-
216
- context 'shift to time between current and schedule time' do
217
- let(:shift) { - exceed_by / 2 }
218
-
219
- context 'calculating from current time' do
220
- let(:job) do
221
- build(:job, schedule: schedule,
222
- schedule_expired: schedule_expired,
223
- expiration_margin: expiration_margin,
224
- shift: shift)
225
- end
226
- before { @next_work_time = job.next_work_time }
227
-
228
- it 'returns shifted schedule time' do
229
- expect(@next_work_time).to eq(schedule_time + shift)
230
- end
231
- end
232
- end
233
-
234
- context 'shift to time after schedule time' do
235
- let(:shift) { 60 }
236
-
237
- context 'calculating from current time' do
238
- let(:job) do
239
- build(:job, schedule: schedule,
240
- schedule_expired: schedule_expired,
241
- expiration_margin: expiration_margin,
242
- shift: shift)
243
- end
244
- before { @next_work_time = job.next_work_time }
245
-
246
- it 'returns shifted schedule time' do
247
- expect(@next_work_time).to eq(schedule_time + shift)
248
- end
249
- end
250
- end
251
-
252
- context 'shift to time inside expired margin' do
253
- let(:shift) { - (schedule_time - Time.now + expiration_margin / 2) }
254
-
255
- context 'calculating from current time' do
256
- let(:job) do
257
- build(:job, schedule: schedule,
258
- schedule_expired: schedule_expired,
259
- expiration_margin: expiration_margin,
260
- shift: shift)
261
- end
262
- before { @next_work_time = job.next_work_time }
263
-
264
- it 'returns shifted schedule time' do
265
- expect(@next_work_time).to eq(schedule_time + shift)
266
- end
267
- end
268
- end
269
-
270
- context 'shift to time before expired margin' do
271
- let(:shift) { - (schedule_time - Time.now + expiration_margin * 2) }
272
-
273
- context 'calculating from current time' do
274
- let(:job) do
275
- build(:job, schedule: schedule,
276
- schedule_expired: schedule_expired,
277
- expiration_margin: expiration_margin,
278
- shift: shift)
279
- end
280
- before { @next_work_time = job.next_work_time }
281
-
282
- it 'returns nil' do
283
- expect(@next_work_time).to be_nil
284
- end
285
- end
286
- end
287
- end
288
- end
289
-
290
- context 'non recurring expired schedule' do
291
- let(:expired_by) { 10 * 60 }
292
- let(:schedule_time) { Time.now - expired_by }
293
- let(:schedule) { IceCube::Schedule.new(schedule_time) }
294
-
295
- context 'schedule expired as true' do
296
- let(:schedule_expired) { true }
297
-
298
- context 'calculating from current time' do
299
- let(:job) do
300
- build(:job, schedule: schedule,
301
- schedule_expired: schedule_expired)
302
- end
303
- before { @next_work_time = job.next_work_time }
304
-
305
- it 'returns nil' do
306
- expect(@next_work_time).to be_nil
307
- end
308
- end
309
-
310
- context 'calculating from before schedule time' do
311
- let(:from) { schedule_time - 60 }
312
- let(:job) do
313
- build(:job, schedule: schedule,
314
- schedule_expired: schedule_expired)
315
- end
316
- before { @next_work_time = job.next_work_time(from) }
317
-
318
- it 'returns schedule time' do
319
- expect(@next_work_time).to eq(schedule_time)
320
- end
321
- end
322
-
323
- context 'shift to after current time' do
324
- let(:shift) { expired_by * 2 }
325
-
326
- context 'calculating from current time' do
327
- let(:job) do
328
- build(:job, schedule: schedule,
329
- schedule_expired: schedule_expired,
330
- shift: shift)
331
- end
332
- before { @next_work_time = job.next_work_time }
333
-
334
- it 'returns shifted schedule time' do
335
- expect(@next_work_time).to eq(schedule_time + shift)
336
- end
337
- end
338
- end
339
- end
340
-
341
- context 'schedule expired as false' do
342
- let(:schedule_expired) { false }
343
-
344
- context 'expiration margin as 0' do
345
- let(:expiration_margin) { 0 }
346
-
347
- context 'calculating from current time' do
348
- let(:job) do
349
- build(:job, schedule: schedule,
350
- schedule_expired: schedule_expired,
351
- expiration_margin: expiration_margin)
352
- end
353
- before { @next_work_time = job.next_work_time }
354
-
355
- it 'returns nil' do
356
- expect(@next_work_time).to be_nil
357
- end
358
- end
359
- end
360
-
361
- context 'expiration margin above expiration time' do
362
- let(:expiration_margin) { expired_by * 2 }
363
-
364
- context 'calculating from before schedule time' do
365
- let(:from) { schedule_time - expiration_margin - 60 }
366
- let(:job) do
367
- build(:job, schedule: schedule,
368
- expiration_margin: expiration_margin,
369
- schedule_expired: schedule_expired)
370
- end
371
- before { @next_work_time = job.next_work_time(from) }
372
-
373
- it 'returns schedule time' do
374
- expect(@next_work_time).to eq(schedule_time)
375
- end
376
- end
377
- end
378
-
379
- context 'expiration margin above expiration time' do
380
- let(:expiration_margin) { expired_by / 2 }
381
-
382
- context 'calculating from before schedule time' do
383
- let(:from) { schedule_time - expiration_margin - 60 }
384
- let(:job) do
385
- build(:job, schedule: schedule,
386
- expiration_margin: expiration_margin,
387
- schedule_expired: schedule_expired)
388
- end
389
- before { @next_work_time = job.next_work_time(from) }
390
-
391
- it 'returns nil' do
392
- expect(@next_work_time).to be_nil
393
- end
394
- end
395
- end
396
- end
397
- end
398
- end
399
- end