require 'spec_helper'

describe "Customer Rewards" do
	let(:customer) { create :customer }
	let(:fixxpert) { create :fixxpert, availability_defaults: "{\"0\":[\"25200\", \"26100\"],\"1\":[],\"2\":[],\"3\":[],\"4\":[],\"5\":[],\"6\":[]}" }

	describe "Reward for invite" do
		let(:invite) {create :invite, inviter: customer, invitee_email: "sample@email.com"}

		before do

			visit signup_path({:id => invite.id})

			fill_in "user_name", with: "Sample Name"
			fill_in "user_password", with: "secret" 
			fill_in "user_password_confirmation", with: "secret"
			choose 'Customer'

			click_button "Create Account"

			customer.reload
			invite.reload
		end

		it "Customer should get reward" do
			customer.credits.should eq 2
		end

		it "Customer should be linked to the invite" do
			invite.invitee.should eq User.last
		end

		describe "Reward for first expert session" do

			let(:invited_customer) { User.last }

			before do
				visit '/users/'+invited_customer.activation_token+'/activate'

				login_as_user invited_customer

		    click_link 'Fixxpert'
		    click_link 'Find a fixxpert'
		    click_link "show_fixxpert_#{fixxpert.id}"
		    
		    click_link 'request_expert_session_button'

		    # Look for next sunday because there are a validation
		    # for dates and it shold be in the future
		    date = next_sunday


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

		    sleep(2)
		    find(:xpath, "//a[@data-date='#{date.to_s}']").click
		    select '30', from: 'expert_session_length'
		    find(:xpath, "//div[@data-block='25200']").click
		    click_button 'submit'
		    sleep 4
		    
	  		customer.reload
	  	end

	  	it "Inviter should get credits", :js => true do
	  		customer.credits.should eq 12
	  	end

		end
	end
end