say_when 2.2.0 → 2.2.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a15986d3be49bd5a4df5bfba2efb10a6e87bb385dae3db7302a26998f6cc784
4
- data.tar.gz: fd26b203f07e779d0f663c0650efe525f337ceb3567fdcc73aa8512bca42247f
3
+ metadata.gz: e4684a6afb159599fe11378e88e25603cfd413755d394f3ee42e026cb4aa33f4
4
+ data.tar.gz: 3f75b45a4c7ccb1fd73ccadad6130d6ab76abcc304d18215024cef43cefe9f7c
5
5
  SHA512:
6
- metadata.gz: 25b2394bb39c4ed8fcd0955ecc17dba6c1c45caabfb5b3c0703e58f941adc7661356c2a103a315d5baa740fa6142ac6519eacda35ac062b9f4498607de9eeef4
7
- data.tar.gz: 128ca1ff31b19f594075e1a671f321f8f62aad440d2708afeb6d727179b6909eaac085acbcac6129c7e5f2f3e59632b167577699aefacd0f5d87b38a86f554cc
6
+ metadata.gz: 20be0b65e7e8536266c9ce8db6fd5b0795c2b38f2bd34802026d446e1d7ea0c0943b936c46b3214af72b0f3afeb3e2580b84773bfaccf5e0678a0c45f746de52
7
+ data.tar.gz: d93ce5845a287e45f97edb54ef4ec8723495710b009567c340eec8ebeb9fe3ee047f163c341661641e8ae5f6f0c389e1ca5f842f0d2c4510f7b21b098e2349bb
data/.gitignore CHANGED
@@ -13,5 +13,5 @@
13
13
  *.gem
14
14
  *.DS_Store
15
15
  .ruby-version
16
- test/db/test.db
16
+ test/db/*
17
17
  notes.md
@@ -44,10 +44,10 @@ module SayWhen
44
44
 
45
45
  self.table_name = "#{SayWhen.options[:table_prefix]}say_when_jobs"
46
46
 
47
- serialize :trigger_options
48
- serialize :data
47
+ serialize :trigger_options, coder: YAML
48
+ serialize :data, coder: YAML
49
49
 
50
- belongs_to :scheduled, polymorphic: true
50
+ belongs_to :scheduled, polymorphic: true, optional: true
51
51
  has_many :job_executions, class_name: 'SayWhen::Storage::ActiveRecordStrategy::JobExecution'
52
52
 
53
53
  before_create :set_defaults
@@ -73,10 +73,10 @@ module SayWhen
73
73
  SayWhen::Storage::ActiveRecordStrategy::Job.transaction do
74
74
  # select and lock the next job that needs executing (status waiting, and after no_later_than)
75
75
  next_job = where(status: STATE_WAITING)
76
- .where('next_fire_at < ?', no_later_than)
77
- .order(next_fire_at: 'asc')
78
- .lock(true)
79
- .first
76
+ .where('next_fire_at < ?', no_later_than)
77
+ .order(next_fire_at: 'asc')
78
+ .lock(true)
79
+ .first
80
80
 
81
81
  # set status to acquired to take it out of rotation
82
82
  next_job&.update_attribute(:status, STATE_ACQUIRED)
@@ -93,7 +93,9 @@ module SayWhen
93
93
  end
94
94
 
95
95
  def self.check_connection
96
- if ActiveRecord::Base.respond_to?(:clear_active_connections!)
96
+ if ActiveRecord::Base.respond_to?(:connection_handler) && ActiveRecord::Base.connection_handler
97
+ ActiveRecord::Base.connection_handler.clear_active_connections!
98
+ elsif ActiveRecord::Base.respond_to?(:clear_active_connections!)
97
99
  ActiveRecord::Base.clear_active_connections!
98
100
  elsif ActiveRecord::Base.respond_to?(:verify_active_connections!)
99
101
  ActiveRecord::Base.verify_active_connections!
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SayWhen
4
- VERSION = '2.2.0'
4
+ VERSION = '2.2.2'
5
5
  end
data/say_when.gemspec CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ['lib']
20
20
 
21
21
  spec.add_runtime_dependency('activesupport')
22
+ spec.add_runtime_dependency('sorted_set')
22
23
 
23
24
  spec.add_development_dependency('bundler')
24
25
  spec.add_development_dependency('rake')
@@ -28,7 +29,7 @@ Gem::Specification.new do |spec|
28
29
  spec.add_development_dependency('simplecov')
29
30
  spec.add_development_dependency('coveralls')
30
31
 
31
- spec.add_development_dependency('sqlite3')
32
+ spec.add_development_dependency('sqlite3', '~> 1.4')
32
33
  spec.add_development_dependency('activerecord')
33
34
  spec.add_development_dependency('celluloid')
34
35
  spec.add_development_dependency('concurrent-ruby')
@@ -1,8 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'active_record'
4
- require 'sqlite3'
5
-
6
3
  ActiveRecord::Base.logger = Logger.new('/dev/null')
7
4
 
8
5
  ActiveRecord::Base.establish_connection(
@@ -5,10 +5,10 @@ require 'minitest_helper'
5
5
  describe SayWhen::Configuration do
6
6
  it 'has default values' do
7
7
  dos = SayWhen::Configuration.default_options
8
- dos.wont_be_nil
9
- dos[:processor_strategy].must_equal :simple
10
- dos[:storage_strategy].must_equal :memory
11
- dos[:tick_length].must_equal 5
12
- dos[:queue].must_equal "default"
8
+ expect(dos).wont_be_nil
9
+ expect(dos[:processor_strategy]).must_equal :simple
10
+ expect(dos[:storage_strategy]).must_equal :memory
11
+ expect(dos[:tick_length]).must_equal 5
12
+ expect(dos[:queue]).must_equal "default"
13
13
  end
14
14
  end
@@ -8,71 +8,71 @@ describe SayWhen::CronExpression do
8
8
 
9
9
  it 'should create with defaults' do
10
10
  ce = SayWhen::CronExpression.new
11
- ce.expression.must_equal "* * * ? * ? *"
12
- ce.time_zone.must_equal Time.zone.try(:name) || "UTC"
11
+ expect(ce.expression).must_equal "* * * ? * ? *"
12
+ expect(ce.time_zone).must_equal Time.zone.try(:name) || "UTC"
13
13
  end
14
14
 
15
15
  it 'should set the time_zone' do
16
16
  ce = SayWhen::CronExpression.new("0 0 12 ? * 1#1 *", 'Pacific Time (US & Canada)')
17
- ce.time_zone.must_equal 'Pacific Time (US & Canada)'
17
+ expect(ce.time_zone).must_equal 'Pacific Time (US & Canada)'
18
18
  end
19
19
 
20
20
  it 'has a pretty to_s' do
21
21
  ce = SayWhen::CronExpression.new("1 1 1 1 1 ? 2000")
22
- ce.to_s.must_match(/s:.*/)
22
+ expect(ce.to_s).must_match(/s:.*/)
23
23
  end
24
24
 
25
25
  it 'handles #/# numbers' do
26
26
  ce = SayWhen::CronExpression.new("*/10 1 1 1 1 ? 2000")
27
- ce.seconds.values.must_equal([0, 10, 20, 30, 40, 50])
27
+ expect(ce.seconds.values).must_equal([0, 10, 20, 30, 40, 50])
28
28
  end
29
29
 
30
30
  it 'handles #,# numbers' do
31
31
  ce = SayWhen::CronExpression.new("1,2 1 1 1 1 ? 2000")
32
- ce.seconds.values.must_equal([1, 2])
32
+ expect(ce.seconds.values).must_equal([1, 2])
33
33
  end
34
34
 
35
35
  it 'handles #-# numbers' do
36
36
  ce = SayWhen::CronExpression.new("1-3 1 1 1 1 ? 2000")
37
- ce.seconds.values.must_equal([1, 2, 3])
37
+ expect(ce.seconds.values).must_equal([1, 2, 3])
38
38
  end
39
39
 
40
40
  it 'no values when no match' do
41
41
  ce = SayWhen::CronExpression.new("na 1 1 1 1 ? 2000")
42
- ce.seconds.values.must_equal([])
42
+ expect(ce.seconds.values).must_equal([])
43
43
  end
44
44
 
45
45
  it 'handles changes in seconds' do
46
46
  ce = SayWhen::CronExpression.new("1-3 1 1 1 1 ? 2000", "UTC")
47
47
  n = ce.next_fire_at(Time.utc(1999,1,1))
48
- n.must_equal Time.parse("Sat, 01 Jan 2000 01:01:01 UTC")
48
+ expect(n).must_equal Time.parse("Sat, 01 Jan 2000 01:01:01 UTC")
49
49
 
50
50
  n = ce.next_fire_at(Time.parse("Sat, 01 Jan 2000 01:00:59 UTC"))
51
- n.must_equal(Time.parse("Sat, 01 Jan 2000 01:01:01 UTC"))
51
+ expect(n).must_equal(Time.parse("Sat, 01 Jan 2000 01:01:01 UTC"))
52
52
  end
53
53
 
54
54
  describe "Day of the month" do
55
55
  it "gets the last day of the month" do
56
56
  ce = SayWhen::CronExpression.new("0 0 0 L 1 ? 2004", 'UTC')
57
- ce.next_fire_at(Time.utc(1999,1,1)).must_equal(Time.parse('Sat, 31 Jan 2004 00:00:00 UTC +00:00'))
57
+ expect(ce.next_fire_at(Time.utc(1999,1,1))).must_equal(Time.parse('Sat, 31 Jan 2004 00:00:00 UTC +00:00'))
58
58
  end
59
59
 
60
60
  it "gets the last weekday of the month" do
61
61
  ce = SayWhen::CronExpression.new("0 0 0 LW 1 ? 2004", 'UTC')
62
- ce.next_fire_at(Time.utc(1999,1,1)).must_equal(Time.parse('Fri, 30 Jan 2004 00:00:00 UTC +00:00'))
62
+ expect(ce.next_fire_at(Time.utc(1999,1,1))).must_equal(Time.parse('Fri, 30 Jan 2004 00:00:00 UTC +00:00'))
63
63
  end
64
64
 
65
65
  it "gets a weekday in the month" do
66
66
  ce = SayWhen::CronExpression.new("0 0 0 W 1 ? 2000", 'UTC')
67
- ce.next_fire_at(Time.utc(1999,1,1)).must_equal(Time.parse('Mon, 03 Jan 2000 00:00:00 UTC +00:00'))
67
+ expect(ce.next_fire_at(Time.utc(1999,1,1))).must_equal(Time.parse('Mon, 03 Jan 2000 00:00:00 UTC +00:00'))
68
68
  end
69
69
 
70
70
  it "gets the closest weekday in the month" do
71
71
  ce = SayWhen::CronExpression.new("0 0 0 1W 1 ? 2000", 'UTC')
72
- ce.next_fire_at(Time.utc(1999,1,1)).must_equal(Time.parse('Tue, 03 Jan 2000 00:00:00 UTC +00:00'))
72
+ expect(ce.next_fire_at(Time.utc(1999,1,1))).must_equal(Time.parse('Tue, 03 Jan 2000 00:00:00 UTC +00:00'))
73
73
 
74
74
  ce = SayWhen::CronExpression.new("0 0 0 10W 1 ? 2000", 'UTC')
75
- ce.next_fire_at(Time.utc(1999,1,1)).must_equal(Time.parse('Mon, 10 Jan 2000 00:00:00 UTC +00:00'))
75
+ expect(ce.next_fire_at(Time.utc(1999,1,1))).must_equal(Time.parse('Mon, 10 Jan 2000 00:00:00 UTC +00:00'))
76
76
  end
77
77
  end
78
78
 
@@ -83,23 +83,23 @@ describe SayWhen::CronExpression do
83
83
  end
84
84
 
85
85
  it 'finds first sunday in the same month' do
86
- @ce.next_fire_at(Time.utc(2008,1,1)).must_equal(Time.parse('2008-01-06 12:00:00 -0800'))
86
+ expect(@ce.next_fire_at(Time.utc(2008,1,1))).must_equal(Time.parse('2008-01-06 12:00:00 -0800'))
87
87
  end
88
88
 
89
89
 
90
90
  it 'finds first sunday in the next month' do
91
- @ce.next_fire_at(Time.utc(2008,1,7)).must_equal(Time.parse('2008-02-03 12:00:00 -0800'))
91
+ expect(@ce.next_fire_at(Time.utc(2008,1,7))).must_equal(Time.parse('2008-02-03 12:00:00 -0800'))
92
92
  end
93
93
 
94
94
  it 'finds last sunday in the same month' do
95
- @ce.last_fire_at(Time.utc(2008,1,10)).must_equal(Time.parse('2008-01-06 12:00:00 -0800'))
95
+ expect(@ce.last_fire_at(Time.utc(2008,1,10))).must_equal(Time.parse('2008-01-06 12:00:00 -0800'))
96
96
  end
97
97
 
98
98
  it 'finds sundays in the prior months and years' do
99
- @ce.last_fire_at(Time.utc(2008,1,5)).must_equal Time.parse('2007-12-02 12:00:00 -0800')
100
- @ce.last_fire_at(Time.parse('2007-12-02 12:00:00 -0800') - 1.second).must_equal(Time.parse('2007-11-04 12:00:00 -0800'))
101
- @ce.last_fire_at(Time.parse('2007-11-04 12:00:00 -0800') - 1.second).must_equal(Time.parse('2007-10-07 12:00:00 -0700'))
102
- @ce.next_fire_at(Time.parse('2007-10-07 12:00:00 -0700') + 1.second).must_equal(Time.parse('2007-11-04 12:00:00 -0800'))
99
+ expect(@ce.last_fire_at(Time.utc(2008,1,5))).must_equal Time.parse('2007-12-02 12:00:00 -0800')
100
+ expect(@ce.last_fire_at(Time.parse('2007-12-02 12:00:00 -0800') - 1.second)).must_equal(Time.parse('2007-11-04 12:00:00 -0800'))
101
+ expect(@ce.last_fire_at(Time.parse('2007-11-04 12:00:00 -0800') - 1.second)).must_equal(Time.parse('2007-10-07 12:00:00 -0700'))
102
+ expect(@ce.next_fire_at(Time.parse('2007-10-07 12:00:00 -0700') + 1.second)).must_equal(Time.parse('2007-11-04 12:00:00 -0800'))
103
103
  end
104
104
  end
105
105
 
@@ -109,32 +109,32 @@ describe SayWhen::CronExpression do
109
109
  end
110
110
 
111
111
  it 'gets next final sunday for same month' do
112
- @ce.next_fire_at(Time.utc(2008,1,1)).must_equal(Time.parse('2008-01-27 12:00:00 -0800'))
112
+ expect(@ce.next_fire_at(Time.utc(2008,1,1))).must_equal(Time.parse('2008-01-27 12:00:00 -0800'))
113
113
  end
114
114
 
115
115
 
116
116
  it 'gets next final sunday for next month' do
117
- @ce.next_fire_at(Time.utc(2008,1,28)).must_equal(Time.parse('2008-02-24 12:00:00 -0800'))
117
+ expect(@ce.next_fire_at(Time.utc(2008,1,28))).must_equal(Time.parse('2008-02-24 12:00:00 -0800'))
118
118
  end
119
119
 
120
120
  it 'gets last final sunday for same month' do
121
- @ce.last_fire_at(Time.utc(2008,1,28)).must_equal(Time.parse('2008-01-27 12:00:00 -0800'))
121
+ expect(@ce.last_fire_at(Time.utc(2008,1,28))).must_equal(Time.parse('2008-01-27 12:00:00 -0800'))
122
122
  end
123
123
 
124
124
  it 'gets last sunday for prior month and year' do
125
- @ce.last_fire_at(Time.utc(2008,1,1)).must_equal(Time.parse('2007-12-30 12:00:00 -0800'))
125
+ expect(@ce.last_fire_at(Time.utc(2008,1,1))).must_equal(Time.parse('2007-12-30 12:00:00 -0800'))
126
126
  end
127
127
 
128
128
 
129
129
  it 'gets last sunday for prior month and year' do
130
130
  nfa = @ce.last_fire_at(Time.utc(2007,12,1))
131
- nfa.must_equal(Time.parse('2007-11-25 12:00:00 -0800'))
131
+ expect(nfa).must_equal(Time.parse('2007-11-25 12:00:00 -0800'))
132
132
 
133
133
  nfa = @ce.last_fire_at(nfa - 1.second)
134
- nfa.must_equal(Time.parse('2007-10-28 12:00:00 -0700'))
134
+ expect(nfa).must_equal(Time.parse('2007-10-28 12:00:00 -0700'))
135
135
 
136
136
  nfa = @ce.next_fire_at(nfa + 1.second)
137
- nfa.must_equal(Time.parse('2007-11-25 12:00:00 -0800'))
137
+ expect(nfa).must_equal(Time.parse('2007-11-25 12:00:00 -0800'))
138
138
  end
139
139
  end
140
140
  end
@@ -37,6 +37,6 @@ describe SayWhen::Poller::BasePoller do
37
37
  end
38
38
 
39
39
  it "defines an error tick length" do
40
- poller.error_tick_length.must_equal 0
40
+ expect(poller.error_tick_length).must_equal 0
41
41
  end
42
42
  end
@@ -6,7 +6,7 @@ describe SayWhen::Poller::CelluloidPoller do
6
6
  let (:poller) { SayWhen::Poller::CelluloidPoller.new(100) }
7
7
 
8
8
  it 'should instantiate the poller' do
9
- poller.tick_length.must_equal 100
9
+ expect(poller.tick_length).must_equal 100
10
10
  end
11
11
 
12
12
  it 'should start the poller running, and can stop it' do
@@ -8,7 +8,7 @@ describe SayWhen::Poller::ConcurrentPoller do
8
8
  let (:poller) { SayWhen::Poller::ConcurrentPoller.new(100) }
9
9
 
10
10
  it 'should instantiate the poller' do
11
- poller.tick_length.must_equal 100
11
+ expect(poller.tick_length).must_equal 100
12
12
  end
13
13
 
14
14
  it 'should start the poller running, and can stop it' do
@@ -7,21 +7,21 @@ describe SayWhen::Poller::SimplePoller do
7
7
  let (:poller) { SayWhen::Poller::SimplePoller.new }
8
8
 
9
9
  it 'should instantiate the poller' do
10
- poller.wont_be_nil
10
+ expect(poller).wont_be_nil
11
11
  end
12
12
 
13
13
  it 'can check if poller is running' do
14
- poller.wont_be :running?
14
+ expect(poller).wont_be :running?
15
15
  end
16
16
 
17
17
  it 'should start the poller running, and can stop it' do
18
- poller.wont_be :running
18
+ expect(poller).wont_be :running
19
19
 
20
20
  Thread.start{ poller.start }
21
21
  sleep(0.2)
22
- poller.must_be :running
22
+ expect(poller).must_be :running
23
23
 
24
24
  poller.stop
25
- poller.wont_be :running
25
+ expect(poller).wont_be :running
26
26
  end
27
27
  end
@@ -21,11 +21,11 @@ describe SayWhen::Processor::ActiveJobStrategy do
21
21
  job_method: 'execute'
22
22
  }
23
23
 
24
- SayWhen::Test::TestTask.wont_be :executed?
24
+ expect(SayWhen::Test::TestTask).wont_be :executed?
25
25
 
26
26
  job = SayWhen::Storage::MemoryStrategy.create(options)
27
27
  processor.process(job)
28
28
 
29
- SayWhen::Test::TestTask.must_be :executed?
29
+ expect(SayWhen::Test::TestTask).must_be :executed?
30
30
  end
31
31
  end
@@ -10,6 +10,6 @@ describe SayWhen::Processor::SimpleStrategy do
10
10
  it 'process a job by sending a message' do
11
11
  job = Minitest::Mock.new
12
12
  job.expect(:execute, 'done!')
13
- processor.process(job).must_equal 'done!'
13
+ expect(processor.process(job)).must_equal 'done!'
14
14
  end
15
15
  end
@@ -7,35 +7,35 @@ describe SayWhen::Scheduler do
7
7
  let (:scheduler) { SayWhen::Scheduler.new }
8
8
 
9
9
  it 'has a logger' do
10
- scheduler.logger.must_be_instance_of Logger
10
+ expect(scheduler.logger).must_be_instance_of Logger
11
11
  end
12
12
 
13
13
  it 'extracts data' do
14
- scheduler.extract_data({}).must_be_nil
15
- scheduler.extract_data(data: 'data').must_equal 'data'
14
+ expect(scheduler.extract_data({})).must_be_nil
15
+ expect(scheduler.extract_data(data: 'data')).must_equal 'data'
16
16
  end
17
17
 
18
18
  it 'extracts job method' do
19
- scheduler.extract_job_method({}).must_equal 'execute'
20
- scheduler.extract_job_method(job_method: 'just_doit').must_equal 'just_doit'
21
- scheduler.extract_job_method(method: 'doit').must_equal 'doit'
19
+ expect(scheduler.extract_job_method({})).must_equal 'execute'
20
+ expect(scheduler.extract_job_method(job_method: 'just_doit')).must_equal 'just_doit'
21
+ expect(scheduler.extract_job_method(method: 'doit')).must_equal 'doit'
22
22
  end
23
23
 
24
24
  it 'extracts job class' do
25
- scheduler.extract_job_class(job_class: 'foo').must_equal 'foo'
26
- scheduler.extract_job_class(class: 'foo').must_equal 'foo'
27
- scheduler.extract_job_class(SayWhen::Test::TestTask).must_equal 'SayWhen::Test::TestTask'
28
- scheduler.extract_job_class('SayWhen::Test::TestTask').must_equal 'SayWhen::Test::TestTask'
25
+ expect(scheduler.extract_job_class(job_class: 'foo')).must_equal 'foo'
26
+ expect(scheduler.extract_job_class(class: 'foo')).must_equal 'foo'
27
+ expect(scheduler.extract_job_class(SayWhen::Test::TestTask)).must_equal 'SayWhen::Test::TestTask'
28
+ expect(scheduler.extract_job_class('SayWhen::Test::TestTask')).must_equal 'SayWhen::Test::TestTask'
29
29
  end
30
30
 
31
31
  it 'gets job options' do
32
32
  keys = [:job_class, :job_method, :data]
33
33
  opts = scheduler.job_options(keys.inject({}) { |s, k| s[k] = k.to_s; s } )
34
- keys.each{|k| opts[k].must_equal k.to_s }
34
+ keys.each{|k| expect(opts[k]).must_equal k.to_s }
35
35
 
36
- lambda do
36
+ expect(lambda do
37
37
  scheduler.job_options(bar: 'foo')
38
- end.must_raise RuntimeError
38
+ end).must_raise RuntimeError
39
39
  end
40
40
 
41
41
  it 'can schedule a new job' do
@@ -45,15 +45,15 @@ describe SayWhen::Scheduler do
45
45
  job_class: 'SayWhen::Test::TestTask',
46
46
  job_method: 'execute'
47
47
  )
48
- job.wont_be_nil
48
+ expect(job).wont_be_nil
49
49
  end
50
50
 
51
51
  it 'can schedule a cron job' do
52
52
  job = scheduler.schedule_cron("0 0 12 ? * * *", SayWhen::Test::TestTask)
53
- job.wont_be_nil
53
+ expect(job).wont_be_nil
54
54
  end
55
55
 
56
56
  it 'should provide the storage strategy' do
57
- scheduler.storage.must_equal SayWhen::Storage::MemoryStrategy
57
+ expect(scheduler.storage).must_equal SayWhen::Storage::MemoryStrategy
58
58
  end
59
59
  end
@@ -21,40 +21,40 @@ describe SayWhen::Storage::ActiveRecordStrategy do
21
21
 
22
22
  it 'job can be created' do
23
23
  j = strategy.create(valid_attributes)
24
- j.wont_be_nil
24
+ expect(j).wont_be_nil
25
25
  end
26
26
 
27
27
  it 'job can be serialized' do
28
- strategy.serialize(job).must_equal job
29
- strategy.deserialize(job).must_equal job
28
+ expect(strategy.serialize(job)).must_equal job
29
+ expect(strategy.deserialize(job)).must_equal job
30
30
  end
31
31
 
32
32
  it 'can execute the task for the job' do
33
- job.execute_job( { result: 1 } ).must_equal 1
33
+ expect(job.execute_job( { result: 1 } )).must_equal 1
34
34
  end
35
35
 
36
36
  it 'can execute the job' do
37
37
  j = strategy.create(valid_attributes)
38
- j.execute.must_equal 1
38
+ expect(j.execute).must_equal 1
39
39
  end
40
40
 
41
41
  it 'derives a trigger from the attributes' do
42
42
  t = strategy.create(valid_attributes)
43
- t.trigger.wont_be_nil
44
- t.trigger.must_be_instance_of SayWhen::Triggers::CronStrategy
43
+ expect(t.trigger).wont_be_nil
44
+ expect(t.trigger).must_be_instance_of SayWhen::Triggers::CronStrategy
45
45
  end
46
46
 
47
47
  it 'has a waiting state on create' do
48
48
  t = strategy.create(valid_attributes)
49
- t.status.must_equal SayWhen::Storage::BaseJob::STATE_WAITING
49
+ expect(t.status).must_equal SayWhen::Storage::BaseJob::STATE_WAITING
50
50
  end
51
51
 
52
52
  it 'has a next fire at set on create' do
53
53
  opts = valid_attributes[:trigger_options]
54
54
  ce = SayWhen::CronExpression.new(opts[:expression], opts[:time_zone])
55
55
  j = strategy.create(valid_attributes)
56
- j.status.must_equal SayWhen::Storage::BaseJob::STATE_WAITING
57
- j.next_fire_at.must_equal ce.next_fire_at
56
+ expect(j.status).must_equal SayWhen::Storage::BaseJob::STATE_WAITING
57
+ expect(j.next_fire_at).must_equal ce.next_fire_at
58
58
  end
59
59
 
60
60
  it 'can acquire and release the next job' do
@@ -71,14 +71,14 @@ describe SayWhen::Storage::ActiveRecordStrategy do
71
71
  now = Time.now.change(hour: 0)
72
72
  Time.stub(:now, now) do
73
73
  j1 = strategy.create(valid_attributes)
74
- j1.wont_be_nil
74
+ expect(j1).wont_be_nil
75
75
  j2 = strategy.create(j2_opts)
76
76
 
77
77
  next_job = strategy.acquire_next(2.days.since)
78
- next_job.status.must_equal "acquired"
79
- next_job.must_equal j2
78
+ expect(next_job.status).must_equal "acquired"
79
+ expect(next_job).must_equal j2
80
80
  strategy.release(next_job)
81
- next_job.status.must_equal "waiting"
81
+ expect(next_job.status).must_equal "waiting"
82
82
  end
83
83
  end
84
84
 
@@ -87,12 +87,12 @@ describe SayWhen::Storage::ActiveRecordStrategy do
87
87
  j = strategy.create(valid_attributes)
88
88
  j.update(status: 'acquired', updated_at: old, created_at: old)
89
89
 
90
- j.status.must_equal 'acquired'
90
+ expect(j.status).must_equal 'acquired'
91
91
 
92
92
  strategy.reset_acquired(3600)
93
93
 
94
94
  j.reload
95
- j.status.must_equal 'waiting'
95
+ expect(j.status).must_equal 'waiting'
96
96
  end
97
97
 
98
98
  it 'can be fired' do
@@ -107,28 +107,28 @@ describe SayWhen::Storage::ActiveRecordStrategy do
107
107
  now = Time.now
108
108
  Time.stub(:now, now) do
109
109
  strategy.fired(j, now)
110
- j.next_fire_at.must_equal ce.next_fire_at(now)
111
- j.last_fire_at.must_equal now
112
- j.status.must_equal SayWhen::Storage::BaseJob::STATE_WAITING
110
+ expect(j.next_fire_at).must_equal ce.next_fire_at(now)
111
+ expect(j.last_fire_at).must_equal now
112
+ expect(j.status).must_equal SayWhen::Storage::BaseJob::STATE_WAITING
113
113
  end
114
114
  end
115
115
 
116
116
  describe "acts_as_scheduled" do
117
117
  it "acts_as_scheduled calls has_many" do
118
- SayWhen::Test::TestActsAsScheduled.must_be :has_many_called?
118
+ expect(SayWhen::Test::TestActsAsScheduled).must_be :has_many_called?
119
119
  end
120
120
 
121
121
  it "includes schedule methods" do
122
122
  taas = SayWhen::Test::TestActsAsScheduled.new
123
123
  [:schedule, :schedule_instance, :schedule_cron, :schedule_once, :schedule_in].each do |m|
124
- taas.respond_to?(m).must_equal true
124
+ expect(taas.respond_to?(m)).must_equal true
125
125
  end
126
126
  end
127
127
 
128
128
  it "sets the scheduled value" do
129
129
  taas = SayWhen::Test::TestActsAsScheduled.new
130
130
  job = taas.set_scheduled({})
131
- job[:scheduled].must_equal taas
131
+ expect(job[:scheduled]).must_equal taas
132
132
  end
133
133
  end
134
134
  end
@@ -23,31 +23,31 @@ describe SayWhen::Storage::MemoryStrategy do
23
23
 
24
24
  it 'job can be created' do
25
25
  j = strategy.create(valid_attributes)
26
- j.wont_be_nil
26
+ expect(j).wont_be_nil
27
27
  end
28
28
 
29
29
  it 'can execute the task for the job' do
30
- job.execute_job( { result: 1 } ).must_equal 1
30
+ expect(job.execute_job( { result: 1 } )).must_equal 1
31
31
  end
32
32
 
33
33
  it 'can execute the job' do
34
34
  j = strategy.create(valid_attributes)
35
- j.execute.must_equal 1
35
+ expect(j.execute).must_equal 1
36
36
  end
37
37
 
38
38
  it 'can serialize' do
39
39
  j = strategy.create(valid_attributes)
40
- j.to_hash[:job_class].must_equal 'SayWhen::Test::TestTask'
40
+ expect(j.to_hash[:job_class]).must_equal 'SayWhen::Test::TestTask'
41
41
  end
42
42
 
43
43
  it 'can acquire and release the next job' do
44
44
  j = strategy.create(valid_attributes)
45
- j.wont_be_nil
45
+ expect(j).wont_be_nil
46
46
  next_job = strategy.acquire_next(2.days.since)
47
- next_job.wont_be_nil
48
- next_job.status.must_equal "acquired"
47
+ expect(next_job).wont_be_nil
48
+ expect(next_job.status).must_equal "acquired"
49
49
  strategy.release(next_job)
50
- next_job.status.must_equal "waiting"
50
+ expect(next_job.status).must_equal "waiting"
51
51
  end
52
52
 
53
53
  it 'can reset acquired jobs' do
@@ -55,7 +55,7 @@ describe SayWhen::Storage::MemoryStrategy do
55
55
  j.status = 'acquired'
56
56
  j.updated_at = 2.hours.ago
57
57
  strategy.reset_acquired(3600)
58
- j.status.must_equal 'waiting'
58
+ expect(j.status).must_equal 'waiting'
59
59
  end
60
60
 
61
61
  it 'can be fired' do
@@ -70,20 +70,20 @@ describe SayWhen::Storage::MemoryStrategy do
70
70
  now = Time.now
71
71
  Time.stub(:now, now) do
72
72
  strategy.fired(j, now)
73
- j.next_fire_at.must_equal ce.next_fire_at(now)
74
- j.last_fire_at.must_equal now
75
- j.status.must_equal SayWhen::Storage::BaseJob::STATE_WAITING
73
+ expect(j.next_fire_at).must_equal ce.next_fire_at(now)
74
+ expect(j.last_fire_at).must_equal now
75
+ expect(j.status).must_equal SayWhen::Storage::BaseJob::STATE_WAITING
76
76
  end
77
77
  end
78
78
 
79
79
  it "can be serialized to a hash" do
80
80
  j = strategy.create(valid_attributes)
81
- strategy.serialize(j).class.must_equal Hash
81
+ expect(strategy.serialize(j).class).must_equal Hash
82
82
  end
83
83
 
84
84
  it "can be deserialized from a hash" do
85
85
  j = strategy.deserialize(valid_attributes)
86
- j.class.must_equal SayWhen::Storage::MemoryStrategy::Job
86
+ expect(j.class).must_equal SayWhen::Storage::MemoryStrategy::Job
87
87
  end
88
88
 
89
89
  it "can reset acquired jobs" do
@@ -91,6 +91,6 @@ describe SayWhen::Storage::MemoryStrategy do
91
91
  j.status = 'acquired'
92
92
  j.updated_at = 2.hours.ago
93
93
  SayWhen::Storage::MemoryStrategy::Job.reset_acquired(3600)
94
- j.status.must_equal 'waiting'
94
+ expect(j.status).must_equal 'waiting'
95
95
  end
96
96
  end
@@ -6,6 +6,6 @@ require 'say_when/triggers/cron_strategy'
6
6
  describe SayWhen::Triggers::CronStrategy do
7
7
  it 'should be constucted with a cron expression' do
8
8
  t = SayWhen::Triggers::CronStrategy.new(expression: '0 0 * ? * * *', job: {})
9
- t.wont_be_nil
9
+ expect(t).wont_be_nil
10
10
  end
11
11
  end
@@ -8,6 +8,6 @@ describe SayWhen::Triggers::InstanceStrategy do
8
8
  job = Minitest::Mock.new
9
9
  job.expect(:scheduled, true)
10
10
  t = SayWhen::Triggers::InstanceStrategy.new(next_at_method: 'test_next_at_method', job: job)
11
- t.wont_be_nil
11
+ expect(t).wont_be_nil
12
12
  end
13
13
  end
@@ -8,16 +8,16 @@ describe SayWhen::Triggers::OnceStrategy do
8
8
  it 'should be constucted with at option' do
9
9
  time_at = 1.second.ago
10
10
  o = SayWhen::Triggers::OnceStrategy.new(at: time_at, job: {})
11
- o.wont_be_nil
12
- o.once_at.must_equal time_at
11
+ expect(o).wont_be_nil
12
+ expect(o.once_at).must_equal time_at
13
13
  end
14
14
 
15
15
  it 'should return once at only once' do
16
16
  time_at = 1.second.ago
17
17
  o = SayWhen::Triggers::OnceStrategy.new(at: time_at, job: {})
18
- o.wont_be_nil
19
- o.next_fire_at.must_equal time_at
20
- o.next_fire_at(time_at + 10.second).must_be_nil
21
- o.next_fire_at(time_at - 10.second).must_equal time_at
18
+ expect(o).wont_be_nil
19
+ expect(o.next_fire_at).must_equal time_at
20
+ expect(o.next_fire_at(time_at + 10.second)).must_be_nil
21
+ expect(o.next_fire_at(time_at - 10.second)).must_equal time_at
22
22
  end
23
23
  end
@@ -5,16 +5,16 @@ require 'minitest_helper'
5
5
  describe SayWhen do
6
6
 
7
7
  it 'provides a default logger' do
8
- SayWhen.logger.wont_be_nil
8
+ expect(SayWhen.logger).wont_be_nil
9
9
  end
10
10
 
11
11
  it 'can set a new logger' do
12
12
  l = Logger.new('/dev/null')
13
13
  SayWhen.logger = l
14
- l.must_equal l
14
+ expect(l).must_equal l
15
15
  end
16
16
 
17
17
  it 'provides the scheduler' do
18
- SayWhen.scheduler.wont_be_nil
18
+ expect(SayWhen.scheduler).wont_be_nil
19
19
  end
20
20
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: say_when
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kuklewicz
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-05 00:00:00.000000000 Z
11
+ date: 2024-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sorted_set
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -126,16 +140,16 @@ dependencies:
126
140
  name: sqlite3
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - ">="
143
+ - - "~>"
130
144
  - !ruby/object:Gem::Version
131
- version: '0'
145
+ version: '1.4'
132
146
  type: :development
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
- - - ">="
150
+ - - "~>"
137
151
  - !ruby/object:Gem::Version
138
- version: '0'
152
+ version: '1.4'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: activerecord
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -255,7 +269,7 @@ homepage: https://github.com/kookster/say_when
255
269
  licenses:
256
270
  - MIT
257
271
  metadata: {}
258
- post_install_message:
272
+ post_install_message:
259
273
  rdoc_options: []
260
274
  require_paths:
261
275
  - lib
@@ -270,8 +284,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
270
284
  - !ruby/object:Gem::Version
271
285
  version: '0'
272
286
  requirements: []
273
- rubygems_version: 3.1.4
274
- signing_key:
287
+ rubygems_version: 3.5.9
288
+ signing_key:
275
289
  specification_version: 4
276
290
  summary: Scheduling system for programmatically defined and stored jobs.
277
291
  test_files: