70 lines
1.6 KiB
Ruby
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 |