jam-cloud/ruby/spec/jam_ruby/resque/music_session_scheduler_spe...

70 lines
1.6 KiB
Ruby

require 'spec_helper'
describe "MusicSessionScheduler" do
before(:all) do
@scheduler = MusicSessionScheduler.new
end
describe "session scheduling" do
it "should reschedule sessions that meet criteria" do
ms = FactoryGirl.create(:recurring_music_session_weekly)
ms.next_session_scheduled.should == false
MusicSession.all.count.should == 1
@scheduler.run
MusicSession.all.count.should == 1
# move the session back more than 4 hours
ms.scheduled_start = Time.now - 5.hours
ms.save!
# run the scheduler again
@scheduler.run
MusicSession.all.count.should == 2
MusicSession.where(:next_session_scheduled => true).count.should == 1
end
it "should not reschedule session that does not meet criteria" do
# test non-recurring session
ms = FactoryGirl.create(:music_session)
MusicSession.all.count.should == 1
@scheduler.run
MusicSession.all.count.should == 1
ms.scheduled_start = Time.now - 3.hours
ms.save!
@scheduler.run
MusicSession.all.count.should == 1
# test canceled session
ms = FactoryGirl.create(:recurring_music_session_weekly)
MusicSession.all.count.should == 2
ms.canceled = true
ms.save!
@scheduler.run
MusicSession.all.count.should == 2
# test already rescheduled
ms = FactoryGirl.create(:recurring_music_session_weekly)
ms.next_session_scheduled = true
ms.save!
MusicSession.all.count.should == 3
@scheduler.run
MusicSession.all.count.should == 3
end
end
end