jam-cloud/ruby/spec/jam_ruby/models/lesson_booking_slot_spec.rb

174 lines
6.1 KiB
Ruby

=begin
require 'spec_helper'
# collissions with teacher's schedule?
describe LessonBookingSlot do
let(:user) { FactoryGirl.create(:user, stored_credit_card: false, remaining_free_lessons: 1, remaining_test_drives: 1) }
let(:lesson_booking_slot_single1) { FactoryGirl.build(:lesson_booking_slot_single, timezone: 'US/Pacific', hour: 12) }
let(:lesson_booking_slot_recurring1) { FactoryGirl.build(:lesson_booking_slot_recurring, timezone: 'US/Pacific', hour: 12) }
before do
end
after do
Timecop.return
end
describe "next_day" do
before do
# Set Time.now to September 1, 2008 10:05:00 AM (at this instant). This is Monday
@now = Time.local(2008, 9, 1, 10, 5, 0)
Timecop.freeze(@now)
end
it "same day of week" do
@now.wday.should eql 1
# let's make it match
lesson_booking_slot_recurring1.day_of_week = @now.wday
(@now.to_date).should eql lesson_booking_slot_recurring1.next_day
end
it "day of week is tomorrow" do
# make the slot be today + 1 (Tuesday in this case)
lesson_booking_slot_recurring1.day_of_week = @now.wday + 1
lesson_booking_slot_recurring1.next_day.should eql(@now.to_date + 1)
end
it "day of week is yesterday" do
# make the slot be today + 1 (Sunday in this case)
lesson_booking_slot_recurring1.day_of_week = @now.wday - 1
lesson_booking_slot_recurring1.next_day.should eql(@now.to_date + 6)
end
it "day of week is two day ago" do
# make the slot be today + 1 (Saturday in this case)
lesson_booking_slot_recurring1.day_of_week = 6
lesson_booking_slot_recurring1.next_day.should eql(@now.to_date + 5)
end
end
describe "scheduled_time" do
before do
# Set Time.now to September 1, 2008 10:05:00 AM (at this instant). This is Monday
@now = Time.local(2008, 9, 1, 10, 5, 0)
Timecop.freeze(@now)
end
it "creates a single time OK" do
time = lesson_booking_slot_single1.scheduled_time(0)
time.utc_offset.should eq 0
time.year.should eql lesson_booking_slot_single1.preferred_day.year
time.month.should eql lesson_booking_slot_single1.preferred_day.month
time.day.should eql lesson_booking_slot_single1.preferred_day.day
time.hour.should be > lesson_booking_slot_single1.hour
time.min.should eql lesson_booking_slot_single1.minute
time.sec.should eql 0
end
it "creates a recurring time OK" do
lesson_booking_slot_recurring1.day_of_week = @now.wday
time = lesson_booking_slot_recurring1.scheduled_time(0)
time.utc_offset.should eq 0
time.year.should eql @now.year
time.month.should eql @now.month
time.day.should eql @now.day
time.hour.should be > lesson_booking_slot_recurring1.hour
time.min.should eql lesson_booking_slot_recurring1.minute
time.sec.should eql 0
end
it "creates a recurring time OK 1 week out" do
lesson_booking_slot_recurring1.day_of_week = @now.wday
time = lesson_booking_slot_recurring1.scheduled_time(1)
time.utc_offset.should eq 0
time.year.should eql @now.year
time.month.should eql @now.month
time.day.should eql @now.day + 7
time.hour.should be > lesson_booking_slot_recurring1.hour
time.min.should eql lesson_booking_slot_recurring1.minute
time.sec.should eql 0
end
end
describe "scheduled_times" do
before do
# Set Time.now to September 1, 2008 10:05:00 AM (at this instant). This is Monday
@now = Time.local(2008, 9, 1, 10, 5, 0)
Timecop.freeze(@now)
end
it "creates a single time session OK" do
times = lesson_booking_slot_single1.scheduled_times(1, @now.to_date + 2)
times.length.should eq 1
time = times[0]
time.utc_offset.should eq 0
time.year.should eql lesson_booking_slot_single1.preferred_day.year
time.month.should eql lesson_booking_slot_single1.preferred_day.month
time.day.should eql lesson_booking_slot_single1.preferred_day.day
time.hour.should be > lesson_booking_slot_single1.hour
time.min.should eql lesson_booking_slot_single1.minute
time.sec.should eql 0
end
it "creates a recurring time session OK" do
lesson_booking_slot_recurring1.day_of_week = @now.wday + 3
times = lesson_booking_slot_recurring1.scheduled_times(1, @now.to_date + 2)
times.length.should eq 1
time = times[0]
time.utc_offset.should eq 0
time.year.should eql @now.year
time.month.should eql @now.month
time.day.should eql @now.day + 3
time.hour.should be > lesson_booking_slot_recurring1.hour
time.min.should eql lesson_booking_slot_recurring1.minute
time.sec.should eql 0
end
it "creates a recurring time session OK (minimum time hit)" do
lesson_booking_slot_recurring1.day_of_week = @now.wday
times = lesson_booking_slot_recurring1.scheduled_times(1, @now.to_date + 2)
times.length.should eq 1
time = times[0]
time.utc_offset.should eq 0
time.year.should eql @now.year
time.month.should eql @now.month
time.day.should eql @now.day + 7
time.hour.should be > lesson_booking_slot_recurring1.hour
time.min.should eql lesson_booking_slot_recurring1.minute
time.sec.should eql 0
end
it "creates 2 recurring times session OK" do
lesson_booking_slot_recurring1.day_of_week = @now.wday
times = lesson_booking_slot_recurring1.scheduled_times(2, @now.to_date + 2)
times.length.should eq 2
time = times[0]
time.utc_offset.should eq 0
time.year.should eql @now.year
time.month.should eql @now.month
time.day.should eql @now.day + 7
time.hour.should be > lesson_booking_slot_recurring1.hour
time.min.should eql lesson_booking_slot_recurring1.minute
time.sec.should eql 0
time = times[1]
time.utc_offset.should eq 0
time.year.should eql @now.year
time.month.should eql @now.month
time.day.should eql @now.day + 14
time.hour.should be > lesson_booking_slot_recurring1.hour
time.min.should eql lesson_booking_slot_recurring1.minute
time.sec.should eql 0
end
end
end
=end