187 lines
5.6 KiB
Ruby
187 lines
5.6 KiB
Ruby
module StripeMock
|
|
class ErrorQueue
|
|
def clear
|
|
@queue = []
|
|
end
|
|
end
|
|
|
|
def self.clear_errors
|
|
instance.error_queue.clear if instance
|
|
client.error_queue.clear if client
|
|
end
|
|
end
|
|
|
|
def testdrive_lesson(user, teacher, options = {finish: false, accept: true, cancel: false, miss: false})
|
|
|
|
#if slots.nil?
|
|
slots = []
|
|
slots << FactoryGirl.build(:lesson_booking_slot_single)
|
|
slots << FactoryGirl.build(:lesson_booking_slot_single)
|
|
#end
|
|
|
|
if user.stored_credit_card == false
|
|
user.stored_credit_card = true
|
|
user.save!
|
|
end
|
|
|
|
booking = LessonBooking.book_test_drive(user, teacher, slots, "Hey I've heard of you before.")
|
|
if booking.errors.any?
|
|
puts "BOOKING #{booking.errors.inspect}"
|
|
end
|
|
|
|
booking.errors.any?.should be_false
|
|
lesson = booking.lesson_sessions[0]
|
|
start = lesson.scheduled_start
|
|
end_time = lesson.scheduled_start + (60 * lesson.duration)
|
|
|
|
booking.card_presumed_ok.should be_true
|
|
|
|
if user.most_recent_test_drive_purchase.nil?
|
|
LessonPackagePurchase.create(user, booking, LessonPackageType.test_drive_4)
|
|
end
|
|
|
|
if options[:accept]
|
|
lesson.accept({message: 'Yeah I got this', slot: slots[0]})
|
|
lesson.errors.any?.should be_false
|
|
lesson.reload
|
|
lesson.slot.should eql slots[0]
|
|
lesson.status.should eql LessonSession::STATUS_APPROVED
|
|
end
|
|
|
|
if options[:cancel]
|
|
lesson.cancel({canceler: options[:canceler] || user, message: "sorry about that"})
|
|
lesson.reload
|
|
lesson.status.should eql LessonSession::STATUS_CANCELED
|
|
end
|
|
|
|
if options[:miss]
|
|
# teacher & student get into session
|
|
|
|
Timecop.travel(end_time + 1)
|
|
|
|
|
|
lesson.analyse
|
|
lesson.session_completed
|
|
els if options[:finish]
|
|
# teacher & student get into session
|
|
uh2 = FactoryGirl.create(:music_session_user_history, user: teacher, history: lesson.music_session, created_at: start, session_removed_at: end_time)
|
|
# artificially end the session, which is covered by other background jobs
|
|
lesson.music_session.session_removed_at = end_time
|
|
lesson.music_session.save!
|
|
|
|
Timecop.travel(end_time + 1)
|
|
|
|
|
|
lesson.analyse
|
|
lesson.session_completed
|
|
end
|
|
|
|
lesson
|
|
end
|
|
|
|
|
|
def normal_lesson(user, teacher, finish = false)
|
|
|
|
#if slots.nil?
|
|
slots = []
|
|
slots << FactoryGirl.build(:lesson_booking_slot_single)
|
|
slots << FactoryGirl.build(:lesson_booking_slot_single)
|
|
#end
|
|
|
|
if user.stored_credit_card == false
|
|
token = create_stripe_token
|
|
result = user.payment_update({token: token, zip: '78759', normal: true})
|
|
#user.stored_credit_card = true
|
|
#user.save!
|
|
end
|
|
|
|
booking = LessonBooking.book_normal(user, teacher, slots, "Hey I've heard of you before.", false, LessonBooking::PAYMENT_STYLE_SINGLE, 60)
|
|
# puts "NORMAL BOOKING #{booking.errors.inspect}"
|
|
booking.errors.any?.should be_false
|
|
lesson = booking.lesson_sessions[0]
|
|
booking.card_presumed_ok.should be_true
|
|
|
|
#if user.most_recent_test_drive_purchase.nil?
|
|
# LessonPackagePurchase.create(user, booking, LessonPackageType.test_drive_4)
|
|
#end
|
|
|
|
lesson.accept({message: 'Yeah I got this', slot: slots[0]})
|
|
lesson.errors.any?.should be_false
|
|
lesson.reload
|
|
lesson.slot.should eql slots[0]
|
|
lesson.status.should eql LessonSession::STATUS_APPROVED
|
|
lesson.music_session.should_not be_nil
|
|
|
|
if finish
|
|
# teacher & student get into session
|
|
start = lesson.scheduled_start
|
|
end_time = lesson.scheduled_start + (60 * lesson.duration)
|
|
uh2 = FactoryGirl.create(:music_session_user_history, user: teacher_user, history: lesson.music_session, created_at: start, session_removed_at: end_time)
|
|
# artificially end the session, which is covered by other background jobs
|
|
lesson.music_session.session_removed_at = end_time
|
|
lesson.music_session.save!
|
|
|
|
Timecop.travel(end_time + 1)
|
|
|
|
lesson.analyse
|
|
lesson.session_completed
|
|
end
|
|
|
|
lesson
|
|
end
|
|
|
|
|
|
def monthly_lesson(user, teacher, finish = true)
|
|
|
|
slots = []
|
|
slots << FactoryGirl.build(:lesson_booking_slot_recurring)
|
|
slots << FactoryGirl.build(:lesson_booking_slot_recurring)
|
|
|
|
if user.stored_credit_card == false
|
|
token = create_stripe_token
|
|
result = user.payment_update({token: token, zip: '78759', normal: true})
|
|
end
|
|
|
|
booking = LessonBooking.book_normal(user, teacher, slots, "Hey I've heard of you before.", true, LessonBooking::PAYMENT_STYLE_MONTHLY, 60)
|
|
# puts "NORMAL BOOKING #{booking.errors.inspect}"
|
|
booking.errors.any?.should be_false
|
|
lesson = booking.lesson_sessions[0]
|
|
booking.card_presumed_ok.should be_true
|
|
|
|
#if user.most_recent_test_drive_purchase.nil?
|
|
# LessonPackagePurchase.create(user, booking, LessonPackageType.test_drive_4)
|
|
#end
|
|
|
|
lesson.accept({message: 'Yeah I got this', slot: slots[0]})
|
|
lesson.errors.any?.should be_false
|
|
lesson.reload
|
|
lesson.slot.should eql slots[0]
|
|
lesson.status.should eql LessonSession::STATUS_APPROVED
|
|
lesson.music_session.should_not be_nil
|
|
|
|
if finish
|
|
# teacher & student get into session
|
|
start = lesson.scheduled_start
|
|
end_time = lesson.scheduled_start + (60 * lesson.duration)
|
|
uh2 = FactoryGirl.create(:music_session_user_history, user: teacher_user, history: lesson.music_session, created_at: start, session_removed_at: end_time)
|
|
# artificially end the session, which is covered by other background jobs
|
|
lesson.music_session.session_removed_at = end_time
|
|
lesson.music_session.save!
|
|
|
|
Timecop.travel(end_time + 1)
|
|
lesson.analyse
|
|
lesson.session_completed
|
|
|
|
today = Date.today
|
|
if today.month == 12
|
|
next_month = Date.new(today.year + 1, 1, 1)
|
|
else
|
|
next_month = Date.new(today.year, today.month + 1, 1)
|
|
end
|
|
|
|
#Timecop.travel(next_month)
|
|
LessonBooking.hourly_check
|
|
end
|
|
|
|
lesson
|
|
end |