sidekiq-cron 0.6.3 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -20,6 +20,23 @@ module Sidekiq
20
20
  end
21
21
  end
22
22
 
23
+ # display job detail + jid history
24
+ app.get '/cron/:name' do
25
+ view_path = File.join(File.expand_path("..", __FILE__), "views")
26
+
27
+ @job = Sidekiq::Cron::Job.find(route_params[:name])
28
+ if @job
29
+ #if Slim renderer exists and sidekiq has layout.slim in views
30
+ if defined?(Slim) && File.exists?(File.join(settings.views,"layout.slim"))
31
+ render(:slim, File.read(File.join(view_path, "cron_show.slim")))
32
+ else
33
+ render(:erb, File.read(File.join(view_path, "cron_show.erb")))
34
+ end
35
+ else
36
+ redirect "#{root_path}cron"
37
+ end
38
+ end
39
+
23
40
  #enque cron job
24
41
  app.post '/cron/:name/enque' do
25
42
  if route_params[:name] === '__all__'
@@ -27,7 +44,7 @@ module Sidekiq
27
44
  elsif job = Sidekiq::Cron::Job.find(route_params[:name])
28
45
  job.enque!
29
46
  end
30
- redirect "#{root_path}cron"
47
+ redirect params['redirect'] || "#{root_path}cron"
31
48
  end
32
49
 
33
50
  #delete schedule
@@ -47,7 +64,7 @@ module Sidekiq
47
64
  elsif job = Sidekiq::Cron::Job.find(route_params[:name])
48
65
  job.enable!
49
66
  end
50
- redirect "#{root_path}cron"
67
+ redirect params['redirect'] || "#{root_path}cron"
51
68
  end
52
69
 
53
70
  #disable job
@@ -57,7 +74,7 @@ module Sidekiq
57
74
  elsif job = Sidekiq::Cron::Job.find(route_params[:name])
58
75
  job.disable!
59
76
  end
60
- redirect "#{root_path}cron"
77
+ redirect params['redirect'] || "#{root_path}cron"
61
78
  end
62
79
 
63
80
  end
data/sidekiq-cron.gemspec CHANGED
@@ -2,18 +2,18 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: sidekiq-cron 0.6.3 ruby lib
5
+ # stub: sidekiq-cron 1.2.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
- s.name = "sidekiq-cron"
9
- s.version = "0.6.3"
8
+ s.name = "sidekiq-cron".freeze
9
+ s.version = "1.2.0"
10
10
 
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib"]
13
- s.authors = ["Ondrej Bartas"]
14
- s.date = "2017-06-20"
15
- s.description = "Enables to set jobs to be run in specified time (using CRON notation)"
16
- s.email = "ondrej@bartas.cz"
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib".freeze]
13
+ s.authors = ["Ondrej Bartas".freeze]
14
+ s.date = "2020-04-03"
15
+ s.description = "Enables to set jobs to be run in specified time (using CRON notation)".freeze
16
+ s.email = "ondrej@bartas.cz".freeze
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE.txt",
19
19
  "README.md"
@@ -37,11 +37,15 @@ Gem::Specification.new do |s|
37
37
  "lib/sidekiq/cron/launcher.rb",
38
38
  "lib/sidekiq/cron/locales/de.yml",
39
39
  "lib/sidekiq/cron/locales/en.yml",
40
+ "lib/sidekiq/cron/locales/ja.yml",
40
41
  "lib/sidekiq/cron/locales/ru.yml",
42
+ "lib/sidekiq/cron/locales/zh-CN.yml",
41
43
  "lib/sidekiq/cron/poller.rb",
42
44
  "lib/sidekiq/cron/support.rb",
43
45
  "lib/sidekiq/cron/views/cron.erb",
44
46
  "lib/sidekiq/cron/views/cron.slim",
47
+ "lib/sidekiq/cron/views/cron_show.erb",
48
+ "lib/sidekiq/cron/views/cron_show.slim",
45
49
  "lib/sidekiq/cron/web.rb",
46
50
  "lib/sidekiq/cron/web_extension.rb",
47
51
  "sidekiq-cron.gemspec",
@@ -51,75 +55,75 @@ Gem::Specification.new do |s|
51
55
  "test/unit/poller_test.rb",
52
56
  "test/unit/web_extension_test.rb"
53
57
  ]
54
- s.homepage = "http://github.com/ondrejbartas/sidekiq-cron"
55
- s.licenses = ["MIT"]
56
- s.rubygems_version = "2.5.1"
57
- s.summary = "Sidekiq Cron helps to add repeated scheduled jobs"
58
+ s.homepage = "http://github.com/ondrejbartas/sidekiq-cron".freeze
59
+ s.licenses = ["MIT".freeze]
60
+ s.rubygems_version = "2.5.2.3".freeze
61
+ s.summary = "Sidekiq Cron helps to add repeated scheduled jobs".freeze
58
62
 
59
63
  if s.respond_to? :specification_version then
60
64
  s.specification_version = 4
61
65
 
62
66
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
63
- s.add_runtime_dependency(%q<sidekiq>, [">= 4.2.1"])
64
- s.add_runtime_dependency(%q<rufus-scheduler>, [">= 3.3.0"])
65
- s.add_development_dependency(%q<bundler>, [">= 0"])
66
- s.add_development_dependency(%q<simplecov>, [">= 0"])
67
- s.add_development_dependency(%q<redis-namespace>, [">= 1.5.2"])
68
- s.add_development_dependency(%q<shoulda-context>, [">= 0"])
69
- s.add_development_dependency(%q<rack>, [">= 0"])
70
- s.add_development_dependency(%q<rack-test>, [">= 0"])
71
- s.add_development_dependency(%q<jeweler>, [">= 0"])
72
- s.add_development_dependency(%q<minitest>, [">= 0"])
73
- s.add_development_dependency(%q<test-unit>, [">= 0"])
74
- s.add_development_dependency(%q<sdoc>, [">= 0"])
75
- s.add_development_dependency(%q<slim>, [">= 0"])
76
- s.add_development_dependency(%q<sinatra>, [">= 0"])
77
- s.add_development_dependency(%q<mocha>, [">= 0"])
78
- s.add_development_dependency(%q<coveralls>, [">= 0"])
79
- s.add_development_dependency(%q<shotgun>, [">= 0"])
80
- s.add_development_dependency(%q<guard>, [">= 0"])
81
- s.add_development_dependency(%q<guard-minitest>, [">= 0"])
67
+ s.add_runtime_dependency(%q<sidekiq>.freeze, [">= 4.2.1"])
68
+ s.add_runtime_dependency(%q<fugit>.freeze, ["~> 1.1"])
69
+ s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
70
+ s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
71
+ s.add_development_dependency(%q<redis-namespace>.freeze, [">= 1.5.2"])
72
+ s.add_development_dependency(%q<shoulda-context>.freeze, [">= 0"])
73
+ s.add_development_dependency(%q<rack>.freeze, [">= 0"])
74
+ s.add_development_dependency(%q<rack-test>.freeze, [">= 0"])
75
+ s.add_development_dependency(%q<jeweler>.freeze, [">= 0"])
76
+ s.add_development_dependency(%q<minitest>.freeze, [">= 0"])
77
+ s.add_development_dependency(%q<test-unit>.freeze, [">= 0"])
78
+ s.add_development_dependency(%q<sdoc>.freeze, [">= 0"])
79
+ s.add_development_dependency(%q<slim>.freeze, [">= 0"])
80
+ s.add_development_dependency(%q<sinatra>.freeze, [">= 0"])
81
+ s.add_development_dependency(%q<mocha>.freeze, [">= 0"])
82
+ s.add_development_dependency(%q<coveralls>.freeze, [">= 0"])
83
+ s.add_development_dependency(%q<shotgun>.freeze, [">= 0"])
84
+ s.add_development_dependency(%q<guard>.freeze, [">= 0"])
85
+ s.add_development_dependency(%q<guard-minitest>.freeze, [">= 0"])
82
86
  else
83
- s.add_dependency(%q<sidekiq>, [">= 4.2.1"])
84
- s.add_dependency(%q<rufus-scheduler>, [">= 3.3.0"])
85
- s.add_dependency(%q<bundler>, [">= 0"])
86
- s.add_dependency(%q<simplecov>, [">= 0"])
87
- s.add_dependency(%q<redis-namespace>, [">= 1.5.2"])
88
- s.add_dependency(%q<shoulda-context>, [">= 0"])
89
- s.add_dependency(%q<rack>, [">= 0"])
90
- s.add_dependency(%q<rack-test>, [">= 0"])
91
- s.add_dependency(%q<jeweler>, [">= 0"])
92
- s.add_dependency(%q<minitest>, [">= 0"])
93
- s.add_dependency(%q<test-unit>, [">= 0"])
94
- s.add_dependency(%q<sdoc>, [">= 0"])
95
- s.add_dependency(%q<slim>, [">= 0"])
96
- s.add_dependency(%q<sinatra>, [">= 0"])
97
- s.add_dependency(%q<mocha>, [">= 0"])
98
- s.add_dependency(%q<coveralls>, [">= 0"])
99
- s.add_dependency(%q<shotgun>, [">= 0"])
100
- s.add_dependency(%q<guard>, [">= 0"])
101
- s.add_dependency(%q<guard-minitest>, [">= 0"])
87
+ s.add_dependency(%q<sidekiq>.freeze, [">= 4.2.1"])
88
+ s.add_dependency(%q<fugit>.freeze, ["~> 1.1"])
89
+ s.add_dependency(%q<bundler>.freeze, [">= 0"])
90
+ s.add_dependency(%q<simplecov>.freeze, [">= 0"])
91
+ s.add_dependency(%q<redis-namespace>.freeze, [">= 1.5.2"])
92
+ s.add_dependency(%q<shoulda-context>.freeze, [">= 0"])
93
+ s.add_dependency(%q<rack>.freeze, [">= 0"])
94
+ s.add_dependency(%q<rack-test>.freeze, [">= 0"])
95
+ s.add_dependency(%q<jeweler>.freeze, [">= 0"])
96
+ s.add_dependency(%q<minitest>.freeze, [">= 0"])
97
+ s.add_dependency(%q<test-unit>.freeze, [">= 0"])
98
+ s.add_dependency(%q<sdoc>.freeze, [">= 0"])
99
+ s.add_dependency(%q<slim>.freeze, [">= 0"])
100
+ s.add_dependency(%q<sinatra>.freeze, [">= 0"])
101
+ s.add_dependency(%q<mocha>.freeze, [">= 0"])
102
+ s.add_dependency(%q<coveralls>.freeze, [">= 0"])
103
+ s.add_dependency(%q<shotgun>.freeze, [">= 0"])
104
+ s.add_dependency(%q<guard>.freeze, [">= 0"])
105
+ s.add_dependency(%q<guard-minitest>.freeze, [">= 0"])
102
106
  end
103
107
  else
104
- s.add_dependency(%q<sidekiq>, [">= 4.2.1"])
105
- s.add_dependency(%q<rufus-scheduler>, [">= 3.3.0"])
106
- s.add_dependency(%q<bundler>, [">= 0"])
107
- s.add_dependency(%q<simplecov>, [">= 0"])
108
- s.add_dependency(%q<redis-namespace>, [">= 1.5.2"])
109
- s.add_dependency(%q<shoulda-context>, [">= 0"])
110
- s.add_dependency(%q<rack>, [">= 0"])
111
- s.add_dependency(%q<rack-test>, [">= 0"])
112
- s.add_dependency(%q<jeweler>, [">= 0"])
113
- s.add_dependency(%q<minitest>, [">= 0"])
114
- s.add_dependency(%q<test-unit>, [">= 0"])
115
- s.add_dependency(%q<sdoc>, [">= 0"])
116
- s.add_dependency(%q<slim>, [">= 0"])
117
- s.add_dependency(%q<sinatra>, [">= 0"])
118
- s.add_dependency(%q<mocha>, [">= 0"])
119
- s.add_dependency(%q<coveralls>, [">= 0"])
120
- s.add_dependency(%q<shotgun>, [">= 0"])
121
- s.add_dependency(%q<guard>, [">= 0"])
122
- s.add_dependency(%q<guard-minitest>, [">= 0"])
108
+ s.add_dependency(%q<sidekiq>.freeze, [">= 4.2.1"])
109
+ s.add_dependency(%q<fugit>.freeze, ["~> 1.1"])
110
+ s.add_dependency(%q<bundler>.freeze, [">= 0"])
111
+ s.add_dependency(%q<simplecov>.freeze, [">= 0"])
112
+ s.add_dependency(%q<redis-namespace>.freeze, [">= 1.5.2"])
113
+ s.add_dependency(%q<shoulda-context>.freeze, [">= 0"])
114
+ s.add_dependency(%q<rack>.freeze, [">= 0"])
115
+ s.add_dependency(%q<rack-test>.freeze, [">= 0"])
116
+ s.add_dependency(%q<jeweler>.freeze, [">= 0"])
117
+ s.add_dependency(%q<minitest>.freeze, [">= 0"])
118
+ s.add_dependency(%q<test-unit>.freeze, [">= 0"])
119
+ s.add_dependency(%q<sdoc>.freeze, [">= 0"])
120
+ s.add_dependency(%q<slim>.freeze, [">= 0"])
121
+ s.add_dependency(%q<sinatra>.freeze, [">= 0"])
122
+ s.add_dependency(%q<mocha>.freeze, [">= 0"])
123
+ s.add_dependency(%q<coveralls>.freeze, [">= 0"])
124
+ s.add_dependency(%q<shotgun>.freeze, [">= 0"])
125
+ s.add_dependency(%q<guard>.freeze, [">= 0"])
126
+ s.add_dependency(%q<guard-minitest>.freeze, [">= 0"])
123
127
  end
124
128
  end
125
129
 
@@ -2,13 +2,11 @@
2
2
  require './test/test_helper'
3
3
  require 'benchmark'
4
4
 
5
- describe 'Perfromance Poller' do
5
+ describe 'Performance Poller' do
6
6
  X = 10000
7
7
  before do
8
8
  Sidekiq.redis = REDIS
9
- Sidekiq.redis do |conn|
10
- conn.flushdb
11
- end
9
+ Redis.current.flushdb
12
10
 
13
11
  #clear all previous saved data from redis
14
12
  Sidekiq.redis do |conn|
@@ -28,12 +26,12 @@ describe 'Perfromance Poller' do
28
26
  end
29
27
 
30
28
  @poller = Sidekiq::Cron::Poller.new
31
- now = Time.now.utc
32
- enqueued_time = Time.new(now.year, now.month, now.day, now.hour + 1, 10, 5)
29
+ now = Time.now.utc + 3600
30
+ enqueued_time = Time.new(now.year, now.month, now.day, now.hour, 10, 5)
33
31
  Time.stubs(:now).returns(enqueued_time)
34
32
  end
35
33
 
36
- it 'should enqueue 10000 jobs in less than 30s' do
34
+ it 'should enqueue 10000 jobs in less than 40s' do
37
35
  Sidekiq.redis do |conn|
38
36
  assert_equal 0, conn.llen("queue:default"), 'Queue should be empty'
39
37
  end
@@ -46,7 +44,7 @@ describe 'Perfromance Poller' do
46
44
  assert_equal X, conn.llen("queue:default"), 'Queue should be full'
47
45
  end
48
46
 
49
- puts "Perfomance test finished in #{bench.real}"
50
- assert_operator 30, :>, bench.real
47
+ puts "Performance test finished in #{bench.real}"
48
+ assert_operator bench.real, :<, 40
51
49
  end
52
50
  end
data/test/test_helper.rb CHANGED
@@ -20,7 +20,7 @@ Coveralls.wear!
20
20
  require "minitest/autorun"
21
21
  require 'shoulda-context'
22
22
  require "rack/test"
23
- require "mocha/setup"
23
+ require 'mocha/minitest'
24
24
 
25
25
  ENV['RACK_ENV'] = 'test'
26
26
 
@@ -66,6 +66,13 @@ end
66
66
 
67
67
  module ActiveJob
68
68
  class Base
69
+ attr_accessor *%i[job_class provider_job_id queue_name arguments]
70
+
71
+ def initialize
72
+ yield self if block_given?
73
+ self.provider_job_id ||= SecureRandom.hex(12)
74
+ end
75
+
69
76
  def self.queue_name_prefix
70
77
  @queue_name_prefix
71
78
  end
@@ -80,12 +87,16 @@ module ActiveJob
80
87
  self
81
88
  end
82
89
 
90
+ def try(method, *args, &block)
91
+ send method, *args, &block if respond_to? method
92
+ end
93
+
83
94
  def self.perform_later(*args)
84
- {
85
- "job_class" => self.class.name,
86
- "queue_name" => @queue,
87
- "args" => [*args],
88
- }
95
+ new do |instance|
96
+ instance.job_class = self.class.name
97
+ instance.queue_name = @queue
98
+ instance.arguments = [*args]
99
+ end
89
100
  end
90
101
  end
91
102
  end
@@ -131,6 +131,28 @@ describe "Cron Job" do
131
131
  end
132
132
  end
133
133
 
134
+ describe 'parse_enqueue_time' do
135
+ before do
136
+ @args = {
137
+ name: "Test",
138
+ cron: "* * * * *"
139
+ }
140
+ @job = Sidekiq::Cron::Job.new(@args)
141
+ end
142
+
143
+ it 'should correctly parse new format' do
144
+ assert_equal @job.send(:parse_enqueue_time, '2017-01-02 15:23:43 UTC'), Time.new(2017, 1, 2, 15, 23, 43, '+00:00')
145
+ end
146
+
147
+ it 'should correctly parse new format with different timezone' do
148
+ assert_equal @job.send(:parse_enqueue_time, '2017-01-02 15:23:43 +01:00'), Time.new(2017, 1, 2, 15, 23, 43, '+01:00')
149
+ end
150
+
151
+ it 'should correctly parse old format' do
152
+ assert_equal @job.send(:parse_enqueue_time, '2017-01-02 15:23:43'), Time.new(2017, 1, 2, 15, 23, 43, '+00:00')
153
+ end
154
+ end
155
+
134
156
  describe 'formatted time' do
135
157
  before do
136
158
  @args = {
@@ -201,6 +223,34 @@ describe "Cron Job" do
201
223
  "class"=>"CronTestClassWithQueue",
202
224
  "args"=>[]}
203
225
  end
226
+
227
+ it "be initialized with 'class' and date_as_argument" do
228
+ job = Sidekiq::Cron::Job.new('class' => 'CronTestClassWithQueue', "date_as_argument" => true)
229
+
230
+ job_message = job.message
231
+ job_args = job_message.delete("args")
232
+ assert_equal job_message, {"retry"=>false,
233
+ "queue"=>:super,
234
+ "backtrace"=>true,
235
+ "class"=>"CronTestClassWithQueue"}
236
+ assert job_args[-1].is_a?(Float)
237
+ assert job_args[-1].between?(Time.now.to_f - 1, Time.now.to_f)
238
+ end
239
+
240
+ it "be initialized with 'class', 2 arguments and date_as_argument" do
241
+ job = Sidekiq::Cron::Job.new('class' => 'CronTestClassWithQueue', "date_as_argument" => true, "args"=> ["arg1", :arg2])
242
+
243
+ job_message = job.message
244
+ job_args = job_message.delete("args")
245
+ assert_equal job_message, {"retry"=>false,
246
+ "queue"=>:super,
247
+ "backtrace"=>true,
248
+ "class"=>"CronTestClassWithQueue"}
249
+ assert job_args[-1].is_a?(Float)
250
+ assert job_args[-1].between?(Time.now.to_f - 1, Time.now.to_f)
251
+ assert_equal job_args[0..-2], ["arg1", :arg2]
252
+ end
253
+
204
254
  end
205
255
 
206
256
  describe "cron test" do
@@ -210,24 +260,24 @@ describe "Cron Job" do
210
260
 
211
261
  it "return previous minute" do
212
262
  @job.cron = "* * * * *"
213
- time = Time.now.utc
263
+ time = Time.new(2018, 8, 10, 13, 24, 56).utc
214
264
  assert_equal @job.last_time(time).strftime("%Y-%m-%d-%H-%M-%S"), time.strftime("%Y-%m-%d-%H-%M-00")
215
265
  end
216
266
 
217
267
  it "return previous hour" do
218
268
  @job.cron = "1 * * * *"
219
- time = Time.now.utc
269
+ time = Time.new(2018, 8, 10, 13, 24, 56).utc
220
270
  assert_equal @job.last_time(time).strftime("%Y-%m-%d-%H-%M-%S"), time.strftime("%Y-%m-%d-%H-01-00")
221
271
  end
222
272
 
223
273
  it "return previous day" do
224
274
  @job.cron = "1 2 * * * Etc/GMT"
225
- time = Time.now.utc
275
+ time = Time.new(2018, 8, 10, 13, 24, 56).utc
226
276
 
227
277
  if time.hour >= 2
228
278
  assert_equal @job.last_time(time).strftime("%Y-%m-%d-%H-%M-%S"), time.strftime("%Y-%m-%d-02-01-00")
229
279
  else
230
- yesterday = (Date.today - 1)
280
+ yesterday = time - 1.day
231
281
  assert_equal @job.last_time(time).strftime("%Y-%m-%d-%H-%M-%S"), yesterday.strftime("%Y-%m-%d-02-01-00")
232
282
  end
233
283
  end
@@ -299,6 +349,7 @@ describe "Cron Job" do
299
349
  it 'should return valid payload for Sidekiq::Client' do
300
350
  payload = {
301
351
  'class' => 'ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper',
352
+ 'wrapped' => 'ActiveJobCronTestClass',
302
353
  'queue' => 'super_queue',
303
354
  'description' => nil,
304
355
  'args' => [{
@@ -330,10 +381,11 @@ describe "Cron Job" do
330
381
 
331
382
  it 'should return valid payload for Sidekiq::Client' do
332
383
  payload = {
333
- 'class' => 'ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper',
334
- 'queue' => 'prefix_super_queue',
384
+ 'class' => 'ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper',
385
+ 'wrapped' => 'ActiveJobCronTestClass',
386
+ 'queue' => 'prefix_super_queue',
335
387
  'description' => nil,
336
- 'args' =>[{
388
+ 'args' => [{
337
389
  'job_class' => 'ActiveJobCronTestClass',
338
390
  'job_id' => 'XYZ',
339
391
  'queue_name' => 'prefix_super_queue',
@@ -357,7 +409,7 @@ describe "Cron Job" do
357
409
 
358
410
  it 'pushes to queue active jobs message' do
359
411
  @job.expects(:enqueue_active_job)
360
- .returns(true)
412
+ .returns(ActiveJobCronTestClass.new)
361
413
  @job.enque!
362
414
  end
363
415
  end
@@ -375,7 +427,7 @@ describe "Cron Job" do
375
427
 
376
428
  it 'pushes to queue active jobs message with queue_name_prefix' do
377
429
  @job.expects(:enqueue_active_job)
378
- .returns(true)
430
+ .returns(ActiveJobCronTestClass.new)
379
431
  @job.enque!
380
432
  end
381
433
  end
@@ -522,7 +574,6 @@ describe "Cron Job" do
522
574
  assert @job.save
523
575
  end
524
576
 
525
-
526
577
  it "be saved and found by name" do
527
578
  assert @job.save, "not saved"
528
579
  assert Sidekiq::Cron::Job.find("Test").is_a?(Sidekiq::Cron::Job)
@@ -599,14 +650,15 @@ describe "Cron Job" do
599
650
 
600
651
  it "last_enqueue_time shouldn't be rewritten after save" do
601
652
  #adding last_enqueue_time to initialize is only for test purpose
602
- last_enqueue_time = '2013-01-01 23:59:59'
653
+ last_enqueue_time = '2013-01-01 23:59:59 +0000'
654
+ expected_enqueue_time = DateTime.parse(last_enqueue_time).to_time.utc
603
655
  Sidekiq::Cron::Job.create(@args.merge('last_enqueue_time' => last_enqueue_time))
604
656
  job = Sidekiq::Cron::Job.find(@args)
605
- assert_equal job.last_enqueue_time, Time.parse(last_enqueue_time)
657
+ assert_equal job.last_enqueue_time, expected_enqueue_time
606
658
 
607
659
  Sidekiq::Cron::Job.create(@args)
608
660
  job = Sidekiq::Cron::Job.find(@args)
609
- assert_equal job.last_enqueue_time, Time.parse(last_enqueue_time), "after second create should have same time"
661
+ assert_equal job.last_enqueue_time, expected_enqueue_time, "after second create should have same time"
610
662
  end
611
663
  end
612
664
 
@@ -883,7 +935,8 @@ describe "Cron Job" do
883
935
  @jobs_hash['name_of_job']['cron'] = "bad cron"
884
936
  out = Sidekiq::Cron::Job.load_from_hash @jobs_hash
885
937
  assert_equal 1, out.size, "should have 1 error"
886
- assert_equal ({"name_of_job"=>["'cron' -> bad cron: not a valid cronline : 'bad cron'"]}), out
938
+ assert_includes out['name_of_job'].first, "bad cron"
939
+ assert_includes out['name_of_job'].first, "ArgumentError:"
887
940
  assert_equal 1, Sidekiq::Cron::Job.all.size, "Should have only 1 job after load"
888
941
  end
889
942