require 'spec_helper'

describe 'Fixxpert edit expert session request' do

  it 'should edit expert session', js: true do
    fixxpert = create :fixxpert
    customer = create :customer
    expert_session = create :expert_session, fixxpert: fixxpert, customer: customer, length: 30
    login_as_user fixxpert
    click_link 'fixxpert_expert_sessions_link'
    click_link "edit_expert_session_#{expert_session.id}"

    # Look for next sunday because there are a validation
    # for dates and it shold be in the future
    desired_date = Date.today.next_month
    date = next_sunday(desired_date)

    click_link 'calendar_next_month'

    # If next_sunday is in next month, click on the calendar
    if date.month > desired_date.month
      click_link 'calendar_next_month'
    end

    find(:xpath, "//a[@data-date='#{date.to_s}']").click

    find(:xpath, "//div[@data-block='25200']").click
    select '30', from: 'expert_session_length'
    click_button 'submit'
    sleep 5
    page.should have_content 'Expert session updated'
    expert_session.reload
    expert_session.date.should eq date
    expert_session.start_time.should eq 25200
    expert_session.length.should eq 30
  end


  it 'should edit expert session within the same day without conflict with current expert session', js: true do
    fixxpert = create :fixxpert
    customer = create :customer
    expert_session = create :expert_session, fixxpert: fixxpert, customer: customer, start_time: 25200, length: 30, status: 'c'
    login_as_user fixxpert
    click_link 'fixxpert_expert_sessions_link'
    click_link "edit_expert_session_#{expert_session.id}"
    find(:xpath, "//div[@data-block='27000']").click
    click_button 'submit'
    sleep 5
    page.should have_content 'Expert session updated'
    expert_session.reload
    expert_session.start_time.should eq 27000
  end



  it 'should fail with invalid values', js: true do
    fixxpert = create :fixxpert
    customer = create :customer
    expert_session = create :expert_session, fixxpert: fixxpert, customer: customer, length: 30, start_time: 25200
    confirmed_expert_session = create :expert_session, fixxpert: fixxpert, customer: customer, length: 30, start_time: 36000, status: 'c'
    login_as_user fixxpert
    click_link 'fixxpert_expert_sessions_link'
    click_link "edit_expert_session_#{expert_session.id}"
    find(:xpath, "//div[@data-block='32400']").click
    select '120', from: 'expert_session_length'
    click_button 'submit'
    page.should have_content "Length isn't available"
    expert_session.reload
    expert_session.start_time.should eq 25200
    expert_session.length.should eq 30
  end

end
