174 lines
6.1 KiB
Ruby
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 |