test/scheduler_test.rb in resque-scheduler-2.3.1 vs test/scheduler_test.rb in resque-scheduler-2.4.0
- old
+ new
@@ -1,43 +1,58 @@
-require File.dirname(__FILE__) + '/test_helper'
+require_relative 'test_helper'
-context "Resque::Scheduler" do
-
+context 'Resque::Scheduler' do
setup do
- Resque::Scheduler.dynamic = false
+ Resque::Scheduler.configure do |c|
+ c.dynamic = false
+ c.mute = true
+ c.env = nil
+ c.app_name = nil
+ end
Resque.redis.flushall
- Resque::Scheduler.mute = true
Resque::Scheduler.clear_schedule!
Resque::Scheduler.send(:class_variable_set, :@@scheduled_jobs, {})
end
- test "enqueue constantizes" do
- # The job should be loaded, since a missing rails_env means ALL envs.
- ENV['RAILS_ENV'] = 'production'
- config = {'cron' => "* * * * *", 'class' => 'SomeRealClass', 'args' => "/tmp"}
- Resque::Job.expects(:create).with(SomeRealClass.queue, SomeRealClass, '/tmp')
+ test 'enqueue constantizes' do
+ Resque::Scheduler.env = 'production'
+ config = {
+ 'cron' => '* * * * *',
+ 'class' => 'SomeRealClass',
+ 'args' => '/tmp'
+ }
+ Resque::Job.expects(:create).with(
+ SomeRealClass.queue, SomeRealClass, '/tmp'
+ )
Resque::Scheduler.enqueue_from_config(config)
end
- test "enqueue runs hooks" do
- # The job should be loaded, since a missing rails_env means ALL envs.
- ENV['RAILS_ENV'] = 'production'
- config = {'cron' => "* * * * *", 'class' => 'SomeRealClass', 'args' => "/tmp"}
+ test 'enqueue runs hooks' do
+ Resque::Scheduler.env = 'production'
+ config = {
+ 'cron' => '* * * * *',
+ 'class' => 'SomeRealClass',
+ 'args' => '/tmp'
+ }
- Resque::Job.expects(:create).with(SomeRealClass.queue, SomeRealClass, '/tmp')
- SomeRealClass.expects(:before_delayed_enqueue_example).with("/tmp")
- SomeRealClass.expects(:before_enqueue_example).with("/tmp")
- SomeRealClass.expects(:after_enqueue_example).with("/tmp")
+ Resque::Job.expects(:create).with(
+ SomeRealClass.queue, SomeRealClass, '/tmp'
+ )
+ SomeRealClass.expects(:before_delayed_enqueue_example).with('/tmp')
+ SomeRealClass.expects(:before_enqueue_example).with('/tmp')
+ SomeRealClass.expects(:after_enqueue_example).with('/tmp')
Resque::Scheduler.enqueue_from_config(config)
end
- test "enqueue_from_config respects queue params" do
- config = {'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'queue' => 'high'}
-
+ test 'enqueue_from_config respects queue params' do
+ config = {
+ 'cron' => '* * * * *',
+ 'class' => 'SomeIvarJob',
+ 'queue' => 'high'
+ }
Resque.expects(:enqueue_to).with('high', SomeIvarJob)
-
Resque::Scheduler.enqueue_from_config(config)
end
test "config makes it into the rufus_scheduler" do
assert_equal(0, Resque::Scheduler.rufus_scheduler.all_jobs.size)
@@ -69,50 +84,81 @@
assert_equal '/tmp/2', Resque.schedule["some_ivar_job2"]["args"]
assert Resque::Scheduler.scheduled_jobs.include?("some_ivar_job2")
end
- test "load_schedule_job loads a schedule" do
- Resque::Scheduler.load_schedule_job("some_ivar_job", {'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp"})
+ test 'load_schedule_job loads a schedule' do
+ Resque::Scheduler.load_schedule_job(
+ 'some_ivar_job', {
+ 'cron' => '* * * * *',
+ 'class' => 'SomeIvarJob',
+ 'args' => '/tmp'
+ }
+ )
assert_equal(1, Resque::Scheduler.rufus_scheduler.all_jobs.size)
assert_equal(1, Resque::Scheduler.scheduled_jobs.size)
- assert Resque::Scheduler.scheduled_jobs.keys.include?("some_ivar_job")
+ assert Resque::Scheduler.scheduled_jobs.keys.include?('some_ivar_job')
end
- test "load_schedule_job with every with options" do
- Resque::Scheduler.load_schedule_job("some_ivar_job", {'every' => ['30s', {'first_in' => '60s'}], 'class' => 'SomeIvarJob', 'args' => "/tmp"})
+ test 'load_schedule_job with every with options' do
+ Resque::Scheduler.load_schedule_job(
+ 'some_ivar_job', {
+ 'every' => ['30s', { 'first_in' => '60s' }],
+ 'class' => 'SomeIvarJob',
+ 'args' => '/tmp'
+ }
+ )
assert_equal(1, Resque::Scheduler.rufus_scheduler.all_jobs.size)
assert_equal(1, Resque::Scheduler.scheduled_jobs.size)
- assert Resque::Scheduler.scheduled_jobs.keys.include?("some_ivar_job")
- assert Resque::Scheduler.scheduled_jobs["some_ivar_job"].params.keys.include?(:first_in)
+ assert Resque::Scheduler.scheduled_jobs.keys.include?('some_ivar_job')
+ job = Resque::Scheduler.scheduled_jobs['some_ivar_job']
+ assert job.params.keys.include?(:first_in)
end
- test "load_schedule_job with cron with options" do
- Resque::Scheduler.load_schedule_job("some_ivar_job", {'cron' => ['* * * * *', {'allow_overlapping' => 'true'}], 'class' => 'SomeIvarJob', 'args' => "/tmp"})
+ test 'load_schedule_job with cron with options' do
+ Resque::Scheduler.load_schedule_job(
+ 'some_ivar_job', {
+ 'cron' => ['* * * * *', { 'allow_overlapping' => 'true' }],
+ 'class' => 'SomeIvarJob',
+ 'args' => '/tmp'
+ }
+ )
assert_equal(1, Resque::Scheduler.rufus_scheduler.all_jobs.size)
assert_equal(1, Resque::Scheduler.scheduled_jobs.size)
- assert Resque::Scheduler.scheduled_jobs.keys.include?("some_ivar_job")
- assert Resque::Scheduler.scheduled_jobs["some_ivar_job"].params.keys.include?(:allow_overlapping)
+ assert Resque::Scheduler.scheduled_jobs.keys.include?('some_ivar_job')
+ job = Resque::Scheduler.scheduled_jobs['some_ivar_job']
+ assert job.params.keys.include?(:allow_overlapping)
end
- test "load_schedule_job without cron" do
- Resque::Scheduler.load_schedule_job("some_ivar_job", {'class' => 'SomeIvarJob', 'args' => "/tmp"})
+ test 'load_schedule_job without cron' do
+ Resque::Scheduler.load_schedule_job(
+ 'some_ivar_job', {
+ 'class' => 'SomeIvarJob',
+ 'args' => '/tmp'
+ }
+ )
assert_equal(0, Resque::Scheduler.rufus_scheduler.all_jobs.size)
assert_equal(0, Resque::Scheduler.scheduled_jobs.size)
- assert !Resque::Scheduler.scheduled_jobs.keys.include?("some_ivar_job")
+ assert !Resque::Scheduler.scheduled_jobs.keys.include?('some_ivar_job')
end
- test "load_schedule_job with an empty cron" do
- Resque::Scheduler.load_schedule_job("some_ivar_job", {'cron' => '', 'class' => 'SomeIvarJob', 'args' => "/tmp"})
+ test 'load_schedule_job with an empty cron' do
+ Resque::Scheduler.load_schedule_job(
+ 'some_ivar_job', {
+ 'cron' => '',
+ 'class' => 'SomeIvarJob',
+ 'args' => '/tmp'
+ }
+ )
assert_equal(0, Resque::Scheduler.rufus_scheduler.all_jobs.size)
assert_equal(0, Resque::Scheduler.scheduled_jobs.size)
- assert !Resque::Scheduler.scheduled_jobs.keys.include?("some_ivar_job")
+ assert !Resque::Scheduler.scheduled_jobs.keys.include?('some_ivar_job')
end
test "update_schedule" do
Resque::Scheduler.dynamic = true
Resque.schedule = {
@@ -237,20 +283,62 @@
assert_equal({'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/33"},
Resque.get_schedule("some_ivar_job2"))
end
test "remove_schedule removes a schedule" do
- Resque.redis.hset(:schedules, "some_ivar_job3", Resque.encode(
- 'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/44"
- ))
+ Resque.set_schedule("some_ivar_job3",
+ {'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/44", 'persist' => true}
+ )
+ Resque::Scheduler.load_schedule!
Resque.remove_schedule("some_ivar_job3")
assert_equal nil, Resque.redis.hget(:schedules, "some_ivar_job3")
assert Resque.redis.sismember(:schedules_changed, "some_ivar_job3")
+ assert_equal [], Resque.redis.smembers(:persisted_schedules)
end
+ test "persisted schedules" do
+ Resque.set_schedule("some_ivar_job",
+ {'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/2", 'persist' => true}
+ )
+ Resque.set_schedule("new_ivar_job",
+ {'cron' => "* * * * *", 'class' => 'SomeJob', 'args' => "/tmp/3"}
+ )
+
+ Resque.schedule=({
+ 'a_schedule' => {'cron' => "* * * * *", 'class' => 'SomeOtherJob', 'args' => '/tmp'}
+ })
+ Resque::Scheduler.load_schedule!
+
+ assert_equal({'cron' => "* * * * *", 'class' => 'SomeIvarJob', 'args' => "/tmp/2"},
+ Resque.schedule['some_ivar_job'])
+ assert_equal(nil, Resque.schedule['some_job'])
+ end
+
test "adheres to lint" do
assert_nothing_raised do
Resque::Plugin.lint(Resque::Scheduler)
Resque::Plugin.lint(ResqueScheduler)
end
+ end
+
+ test 'procline contains app_name when present' do
+ Resque::Scheduler.app_name = 'foo'
+ assert Resque::Scheduler.send(:build_procline, 'bar') =~ /\[foo\]:/
+ end
+
+ test 'procline omits app_name when absent' do
+ Resque::Scheduler.app_name = nil
+ assert Resque::Scheduler.send(:build_procline, 'bar') =~
+ /#{Resque::Scheduler.send(:internal_name)}: bar/
+ end
+
+ test 'procline contains env when present' do
+ Resque::Scheduler.env = 'derp'
+ assert Resque::Scheduler.send(:build_procline, 'cage') =~ /\[derp\]: cage/
+ end
+
+ test 'procline omits env when absent' do
+ Resque::Scheduler.env = nil
+ assert Resque::Scheduler.send(:build_procline, 'cage') =~
+ /#{Resque::Scheduler.send(:internal_name)}: cage/
end
end