require 'spec_helper'

describe "Sign up" do

  describe "Correct signup, new user" do
    it "should create a new customer" do
      visit "/"
      click_link 'signup_link'
      fill_in 'user_name', :with => 'User Name'
      fill_in 'user_email', :with => 'user1@tradesmen.com'
      fill_in 'user_password', :with => 'secret'
      fill_in 'user_password_confirmation', :with => 'secret'
      choose 'user_type_Customer'

      click_button 'Create Account'
      current_path.should eq "/"

      User.last.name.should eq 'User Name'
      User.last.email.should eq 'user1@tradesmen.com'
      User.last.type.should eq "Customer"
    end

    it "should create a new fixxpert" do
      visit "/"
      click_link 'signup_link'
      fill_in 'user_name', :with => 'User Name'
      fill_in 'user_email', :with => 'user1@tradesmen.com'
      fill_in 'user_password', :with => 'secret'
      fill_in 'user_password_confirmation', :with => 'secret'
      choose 'user_type_Fixxpert'
      click_button 'Create Account'
      current_path.should eq "/"

      User.last.name.should eq 'User Name'
      User.last.email.should eq 'user1@tradesmen.com'
      User.last.type.should eq "Fixxpert"
    end

    it "should create a new mentor" do
      visit "/"
      click_link 'signup_link'
      fill_in 'user_name', :with => 'User Name'
      fill_in 'user_email', :with => 'user1@tradesmen.com'
      fill_in 'user_password', :with => 'secret'
      fill_in 'user_password_confirmation', :with => 'secret'
      choose 'user_type_Mentor'
      click_button 'Create Account'
      current_path.should eq "/"

      User.last.name.should eq 'User Name'
      User.last.email.should eq 'user1@tradesmen.com'
      User.last.type.should eq "Mentor"
    end

  end

  describe "Failed signup attempt" do
    it "should redirect to the signup form" do
      visit "/"
      click_link 'signup_link'
      click_button 'Create Account'
      within '#new_user' do
        page.should have_content "Email can't be blank"
        page.should have_content "Name can't be blank"
        page.should have_content "Type can't be blank"
      end
    end
  end

  describe "Account confirmation, valid token" do
    it "should activate the account" do
      user = create(:user)
      user.activation_token = "token"
      user.activation_state = "pending"
      user.save!
      visit activate_user_path(:id => "token")
      page.should have_content "Your account has been activated. Please log in."
    end
  end

  describe "Account confirmation, invalid token" do
    it "should not activate the account" do
      user = create(:user)
      user.activation_token = "token"
      user.activation_state = "pending"
      user.save!
      visit activate_user_path(:id => "token23232")
      current_path.should eq "/login"
    end
  end

end
