=begin

require 'spec_helper'

describe "Lesson Booking Status page", :js => true, :type => :feature, :capybara_feature => true do

  subject { page }

  let(:user) { FactoryGirl.create(:user) }
  let(:teacher) { FactoryGirl.create(:teacher_user) }

  after(:each) do
    Timecop.return
  end

  def screenshot
    if ENV['SCREENSHOT'] == '1'
      screenshot_and_save_page
    end
  end
  describe "student" do
    it "requested" do
      lesson = testdrive_lesson(user, teacher, {accept:false, finish:false})
      lesson.lesson_booking.status.should eql LessonBooking::STATUS_REQUESTED

      fast_signin(user, "/client#/jamclass/lesson-booking/" + lesson.id)

      find('h2', text: 'your lesson has been requested')

      #find('p.proposing-new-time')

      find('.slot-decision-field label', text: 'Propose alternate day/time')
      screenshot
    end


    it "approved" do
      lesson = testdrive_lesson(user, teacher, {accept:true, finish:false})

      lesson.reload
      lesson.status.should
      lesson.lesson_booking.accepter_id.should_not be_nil
      fast_signin(user, "/client#/jamclass/lesson-booking/" + lesson.id )

      find('h2', text: 'this lesson is coming up soon')

      find('p.generic-time-stmt')
      screenshot
    end

    it "now" do
      pending "sinon needed to fake time"
      lesson = testdrive_lesson(user, teacher, {accept:true, finish:false})

      Timecop.travel(lesson.scheduled_start + 1)

      fast_signin(user, "/client#/jamclass/lesson-booking/" + lesson.id)

      find('h2', text: 'the lesson is scheduled for right now!')

      screenshot
    end

    it "successful" do
      lesson = testdrive_lesson(user, teacher, {accept:true, finish:true})

      # travel to after the lesson is over
      Timecop.travel(lesson.scheduled_start + (lesson.duration * 60) + 1)

      lesson.reload
      lesson.success.should be true
      lesson.status.should eql LessonSession::STATUS_COMPLETED

      fast_signin(user, "/client#/jamclass/lesson-booking/" + lesson.id)

      find('h2', text: 'this lesson is over')

      screenshot
    end

    it "canceled" do
      lesson = testdrive_lesson(user, teacher, {accept:true, finish:false, cancel: true})

      lesson.reload
      lesson.status.should eql LessonSession::STATUS_CANCELED

      fast_signin(user, "/client#/jamclass/lesson-booking/" + lesson.id)


      find('h2', text: "this lesson was canceled (by student)")

      screenshot
    end

    it "missed" do
      lesson = testdrive_lesson(user, teacher, {accept:true, finish:false, miss: true})

      lesson.reload
      lesson.status.should eql LessonSession::STATUS_COMPLETED
      lesson.success.should be false
      lesson.student_missed.should be true
      lesson.teacher_missed.should be true

      fast_signin(user, "/client#/jamclass/lesson-booking/" + lesson.id)

      find('h2', text: "this lesson was missed (by both)")

      screenshot
    end
  end

  describe "teacher" do
    it "requested" do
      lesson = testdrive_lesson(user, teacher, {accept:false, finish:false})

      fast_signin(teacher, "/client#/jamclass/lesson-booking/" + lesson.id)

      find('h2', text: 'respond to lesson request')

      screenshot

    end

    it "approved" do
      lesson = testdrive_lesson(user, teacher, {accept:true, finish:false})

      fast_signin(teacher, "/client#/jamclass/lesson-booking/" + lesson.id)

      find('h2', text: 'this lesson is coming up soon')

      screenshot
    end

    it "now" do
      pending "sinon needed to fake time"
      lesson = testdrive_lesson(user, teacher, {accept:true, finish:false})

      Timecop.travel(lesson.scheduled_start + 1)

      fast_signin(teacher, "/client#/jamclass/lesson-booking/" + lesson.id)

      find('h2', text: 'the lesson is scheduled for right now!')

      screenshot
    end

    it "successful" do
      lesson = testdrive_lesson(user, teacher, {accept:true, finish:true})

      # travel to after the lesson is over
      Timecop.travel(lesson.scheduled_start + (lesson.duration * 60) + 1)

      lesson.success.should be true
      lesson.status.should eql LessonSession::STATUS_COMPLETED

      fast_signin(teacher, "/client#/jamclass/lesson-booking/" + lesson.id)

      find('h2', text: 'this lesson is over')

      screenshot
    end

    it "canceled" do
      lesson = testdrive_lesson(user, teacher, {accept:true, finish:false, cancel: true})

      fast_signin(teacher, "/client#/jamclass/lesson-booking/" + lesson.id)

      find('h2', text: "this lesson was canceled (by student)")

      screenshot
    end

    it "missed" do
      lesson = testdrive_lesson(user, teacher, {accept:true, finish:false, miss: true})

      fast_signin(teacher, "/client#/jamclass/lesson-booking/" + lesson.id)

      find('h2', text: "this lesson was missed (by both)")

      screenshot
    end
  end

  it "pretty US timezone" do
    slots = []
    slots << FactoryGirl.build(:lesson_booking_slot_single, timezone: 'America/Chicago')
    slots << FactoryGirl.build(:lesson_booking_slot_single, timezone: 'America/Chicago')

    lesson = testdrive_lesson(user, teacher, {accept:false, finish:false, slots:slots})

    fast_signin(teacher, "/client#/jamclass/lesson-booking/" + lesson.id)

    find('#lesson-booking', text: 'US Central Time')
  end

  it "requested  recurring with focused lesson" do
    lesson = monthly_lesson(user, teacher, {accept: false})

    fast_signin(user, "/client#/jamclass/lesson-booking/" + lesson.id)

    find('.request-sent', text: 'Your request has been sent.')
    page.should_not have_selector('p.proposing-new-time')

    # the teacher can either accept or propose a new time, so they see both
    switch_user(teacher, "/client#/jamclass/lesson-booking/" + lesson.id)

    find('p.action', text: 'Has requested')
    page.should_not have_selector('p.generic-time-stmt')

    find(".slot-decision-field[data-slot-id=\"#{lesson.lesson_booking.default_slot.id}\"] ins", visible: false).trigger(:click)
    find('.schedule.button-orange').trigger(:click)
    find('tr[data-lesson-session-id="' + lesson.id + '"] td.displayStatusColumn', text: 'Scheduled')

  end

  it "requested recurring with unfocused lesson" do
    lesson = monthly_lesson(user, teacher, {accept: false})

    fast_signin(user, "/client#/jamclass/lesson-booking/" + lesson.lesson_booking.id)

    find('.request-sent', text: 'Your request has been sent.')

    page.should_not have_selector('p.proposing-new-time')

    switch_user(teacher, "/client#/jamclass/lesson-booking/" + lesson.id)

    find('p.action', text: 'Has requested')
    page.should_not have_selector('p.generic-time-stmt')

    find(".slot-decision-field[data-slot-id=\"#{lesson.lesson_booking.default_slot.id}\"] ins", visible: false).trigger(:click)
    find('.schedule.button-orange').trigger(:click)
    find('tr[data-lesson-session-id="' + lesson.id + '"] td.displayStatusColumn', text: 'Scheduled')
  end

  it "accepted recurring with focused lesson" do
    lesson = monthly_lesson(user, teacher, {accept: true})

    fast_signin(user, "/client#/jamclass/lesson-booking/" + lesson.id + "_rescheduling")

    find('p.proposing-new-time')

    # the teacher can either accept or propose a new time, so they see both
    switch_user(teacher, "/client#/jamclass/lesson-booking/" + lesson.id + "_rescheduling")

    find('p.proposing-new-time')

    # change the lesson time
    fill_in "alt-date-input", with:  date_picker_format(Date.new(Date.today.year, Date.today.month + 1, 17))
    find('td a', text: '17').trigger(:click)
    sleep 3

    find('.schedule.button-orange').trigger(:click)
    find('#banner h1', text: 'Lesson Change Requested')
    find('#banner .close-btn').trigger(:click)
    find('tr[data-lesson-session-id="' + lesson.id + '"] td.displayStatusColumn', text: 'Requested')

    switch_user(user, "/client#/jamclass")
  end

  it "accepted recurring with unfocused lesson" do
    lesson = monthly_lesson(user, teacher, {accept: true})

    fast_signin(user, "/client#/jamclass/lesson-booking/" + lesson.lesson_booking.id + "_rescheduling")

    find('p.proposing-new-time')

    switch_user(teacher, "/client#/jamclass/lesson-booking/" + lesson.lesson_booking.id + "_rescheduling")

    find('p.proposing-new-time')

    fill_in "alt-date-input", with:  date_picker_format(Date.new(Date.today.year, Date.today.month + 1, 17))
    find('td a', text: '17').trigger(:click)
    sleep 3

    find(".slot-decision-field[data-slot-id=\"#{lesson.lesson_booking.default_slot.id}\"] ins", visible: false).trigger(:click)
    find('.schedule.button-orange').trigger(:click)
    find('tr[data-lesson-session-id="' + lesson.id + '"] td.displayStatusColumn', text: 'Scheduled')
  end

end
=end