2014-01-30 16:21:38 +11:00
# encoding: utf-8
2015-10-11 10:41:23 +01:00
require 'rails_helper'
2014-01-30 16:21:38 +11:00
require 'scheduler/scheduler'
describe Scheduler :: ScheduleInfo do
2014-03-14 13:02:21 -04:00
let ( :manager ) { Scheduler :: Manager . new }
context " every " do
class RandomJob
extend :: Scheduler :: Schedule
2014-01-30 16:21:38 +11:00
2014-03-14 13:02:21 -04:00
every 1 . hour
2014-01-30 16:21:38 +11:00
2014-03-14 13:02:21 -04:00
def perform
# work_it
end
2014-01-30 16:21:38 +11:00
end
2014-03-14 13:02:21 -04:00
before do
@info = manager . schedule_info ( RandomJob )
@info . del!
$redis . del manager . class . queue_key
end
2014-01-30 16:21:38 +11:00
2014-03-14 13:02:21 -04:00
after do
manager . stop!
end
2014-01-30 16:21:38 +11:00
2014-03-14 13:02:21 -04:00
it " is a scheduled job " do
2015-01-09 13:34:37 -03:00
expect ( RandomJob ) . to be_scheduled
2014-03-14 13:02:21 -04:00
end
2014-01-30 16:21:38 +11:00
2014-03-14 13:02:21 -04:00
it 'starts off invalid' do
2015-01-09 13:34:37 -03:00
expect ( @info . valid? ) . to eq ( false )
2014-03-14 13:02:21 -04:00
end
2014-01-30 16:21:38 +11:00
2014-03-14 13:02:21 -04:00
it 'will have a due date in the next 5 minutes if it was blank' do
@info . schedule!
2015-01-09 13:34:37 -03:00
expect ( @info . valid? ) . to eq ( true )
expect ( @info . next_run ) . to be_within ( 5 . minutes ) . of ( Time . now . to_i )
2014-03-14 13:02:21 -04:00
end
it 'will have a due date within the next hour if it just ran' do
@info . prev_run = Time . now . to_i
@info . schedule!
2015-01-09 13:34:37 -03:00
expect ( @info . valid? ) . to eq ( true )
expect ( @info . next_run ) . to be_within ( 1 . hour * manager . random_ratio ) . of ( Time . now . to_i + 1 . hour )
2014-03-14 13:02:21 -04:00
end
2014-01-30 16:21:38 +11:00
2014-03-14 13:02:21 -04:00
it 'is invalid if way in the future' do
@info . next_run = Time . now . to_i + 1 . year
2015-01-09 13:34:37 -03:00
expect ( @info . valid? ) . to eq ( false )
2014-03-14 13:02:21 -04:00
end
2014-01-30 16:21:38 +11:00
end
2014-03-14 13:02:21 -04:00
context " daily " do
class DailyJob
extend :: Scheduler :: Schedule
daily at : 2 . hours
def perform
end
end
before do
@info = manager . schedule_info ( DailyJob )
@info . del!
$redis . del manager . class . queue_key
end
after do
manager . stop!
end
it " is a scheduled job " do
2015-01-09 13:34:37 -03:00
expect ( DailyJob ) . to be_scheduled
2014-03-14 13:02:21 -04:00
end
it " starts off invalid " do
2015-01-09 13:34:37 -03:00
expect ( @info . valid? ) . to eq ( false )
2014-03-14 13:02:21 -04:00
end
2014-09-25 17:44:48 +02:00
skip " will have a due date at the appropriate time if blank " do
2015-01-09 13:34:37 -03:00
expect ( @info . next_run ) . to eq ( nil )
2014-03-14 13:02:21 -04:00
@info . schedule!
2015-01-09 13:34:37 -03:00
expect ( @info . valid? ) . to eq ( true )
2014-03-14 13:02:21 -04:00
end
it 'is invalid if way in the future' do
@info . next_run = Time . now . to_i + 1 . year
2015-01-09 13:34:37 -03:00
expect ( @info . valid? ) . to eq ( false )
2014-03-14 13:02:21 -04:00
end
2014-01-30 16:21:38 +11:00
end
end