204 lines
8.6 KiB
Ruby
204 lines
8.6 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe "Signup", :js => true, :type => :feature, :capybara_feature => true do
|
|
|
|
subject { page }
|
|
|
|
before(:each) do
|
|
@mac_client = FactoryGirl.create(:artifact_update)
|
|
UserMailer.deliveries.clear
|
|
end
|
|
|
|
describe "signup page" do
|
|
before { visit signup_path }
|
|
|
|
it { should have_selector('h2', text: 'Create a JamKazam account') }
|
|
|
|
describe "with valid musician information" do
|
|
before do
|
|
fill_in "jam_ruby_user[first_name]", with: "Mike"
|
|
fill_in "jam_ruby_user[last_name]", with: "Jones"
|
|
fill_in "jam_ruby_user[email]", with: "newuser1@jamkazam.com"
|
|
fill_in "jam_ruby_user[password]", with: "jam123"
|
|
fill_in "jam_ruby_user[password_confirmation]", with: "jam123"
|
|
check("jam_ruby_user[instruments][drums][selected]")
|
|
check("jam_ruby_user[terms_of_service]")
|
|
click_button "CREATE ACCOUNT"
|
|
end
|
|
|
|
# Successful signup with no invitation tells you to go sign up
|
|
it {
|
|
should have_title("JamKazam | Congratulations")
|
|
should have_content("You have successfully registered as a JamKazam musician.")
|
|
User.find_by_email('newuser1@jamkazam.com').musician_instruments.length.should == 1
|
|
# an email is sent on no-invite signup
|
|
UserMailer.deliveries.length.should == 1
|
|
UserMailer.deliveries[0].html_part.body.include?("To confirm this email address")== 1
|
|
uri = URI.parse(current_url); "#{uri.path}?#{uri.query}".should == congratulations_musician_path(:type => 'Native')
|
|
}
|
|
|
|
describe "user can confirm email and receive welcome email" do
|
|
|
|
before(:each) do
|
|
UserMailer.deliveries.clear
|
|
visit signup_confirm_path(User.find_by_email('newuser1@jamkazam.com').signup_token)
|
|
end
|
|
|
|
it {
|
|
should have_title("JamKazam")
|
|
should have_selector('h2', text: "musicians")
|
|
UserMailer.deliveries.length.should == 1
|
|
UserMailer.deliveries[0].html_part.body.include?("Following are links to some resources")== 1
|
|
}
|
|
end
|
|
end
|
|
|
|
describe "with valid fan information" do
|
|
before do
|
|
fill_in "jam_ruby_user[first_name]", with: "Mike"
|
|
fill_in "jam_ruby_user[last_name]", with: "Jones"
|
|
fill_in "jam_ruby_user[email]", with: "somefan@jamkazam.com"
|
|
fill_in "jam_ruby_user[password]", with: "jam123"
|
|
fill_in "jam_ruby_user[password_confirmation]", with: "jam123"
|
|
choose "jam_ruby_user_musician_false"
|
|
|
|
check("jam_ruby_user[terms_of_service]")
|
|
click_button "CREATE ACCOUNT"
|
|
end
|
|
|
|
# Successful signup with no invitation tells you to go sign up
|
|
it {
|
|
should have_title("JamKazam | Congratulations")
|
|
should have_selector('div.tagline', text: "Congratulations!")
|
|
should have_selector('a.button-orange.m0', text: 'PROCEED TO JAMKAZAM SITE')
|
|
User.find_by_email('somefan@jamkazam.com').musician_instruments.length.should == 0
|
|
# an email is sent on no-invite signup
|
|
UserMailer.deliveries.length.should == 1
|
|
uri = URI.parse(current_url)
|
|
"#{uri.path}?#{uri.query}".should == congratulations_fan_path(:type => 'Native')
|
|
}
|
|
end
|
|
|
|
describe "with service invite" do
|
|
before do
|
|
@invited_user = FactoryGirl.create(:invited_user, :email => "noone@jamkazam.com")
|
|
visit "#{signup_path}?invitation_code=#{@invited_user.invitation_code}"
|
|
find('#jam_ruby_user_first_name')
|
|
sleep 1 # if I don't do this, first_name and/or last name intermittently fail to fill out
|
|
|
|
UserMailer.deliveries.clear
|
|
|
|
fill_in "jam_ruby_user[first_name]", with: "Mike"
|
|
fill_in "jam_ruby_user[last_name]", with: "Jones"
|
|
fill_in "jam_ruby_user[email]", with: "newuser2@jamkazam.com"
|
|
fill_in "jam_ruby_user[password]", with: "jam123"
|
|
fill_in "jam_ruby_user[password_confirmation]", with: "jam123"
|
|
check("jam_ruby_user[instruments][drums][selected]")
|
|
check("jam_ruby_user[terms_of_service]")
|
|
click_button "CREATE ACCOUNT"
|
|
end
|
|
|
|
# Successful sign-in goes to the client
|
|
it {
|
|
should have_title("JamKazam")
|
|
should have_selector('div.tagline', text: "Congratulations!")
|
|
UserMailer.deliveries.length.should == 1
|
|
uri = URI.parse(current_url)
|
|
"#{uri.path}?#{uri.query}".should == congratulations_musician_path(:type => 'Native')
|
|
}
|
|
end
|
|
|
|
describe "with user invite and autofriend" do
|
|
before do
|
|
@user = FactoryGirl.create(:user)
|
|
@invited_user = FactoryGirl.create(:invited_user, :sender => @user, :autofriend => true, :email => "noone@jamkazam.com")
|
|
visit "#{signup_path}?invitation_code=#{@invited_user.invitation_code}"
|
|
find('#jam_ruby_user_first_name')
|
|
sleep 1 # if I don't do this, first_name and/or last name intermittently fail to fill out
|
|
|
|
fill_in "jam_ruby_user[first_name]", with: "Mike"
|
|
fill_in "jam_ruby_user[last_name]", with: "Jones"
|
|
fill_in "jam_ruby_user[email]", with: "newuser3@jamkazam.com"
|
|
fill_in "jam_ruby_user[password]", with: "jam123"
|
|
fill_in "jam_ruby_user[password_confirmation]", with: "jam123"
|
|
check("jam_ruby_user[instruments][drums][selected]")
|
|
check("jam_ruby_user[terms_of_service]")
|
|
click_button "CREATE ACCOUNT"
|
|
end
|
|
|
|
# Successful sign-in goes to the client
|
|
it {
|
|
should have_title("JamKazam")
|
|
should have_selector('div.tagline', text: "Congratulations!")
|
|
@user.friends?(User.find_by_email("newuser3@jamkazam.com"))
|
|
User.find_by_email("newuser3@jamkazam.com").friends?(@user)
|
|
uri = URI.parse(current_url)
|
|
"#{uri.path}?#{uri.query}".should == congratulations_musician_path(:type => 'Native')
|
|
}
|
|
end
|
|
|
|
describe "can't signup to the same invite twice" do
|
|
before do
|
|
@invited_user = FactoryGirl.create(:invited_user, :email => "noone@jamkazam.com")
|
|
visit "#{signup_path}?invitation_code=#{@invited_user.invitation_code}"
|
|
find('#jam_ruby_user_first_name')
|
|
sleep 1 # if I don't do this, first_name and/or last name intermittently fail to fill out
|
|
|
|
fill_in "jam_ruby_user[first_name]", with: "Mike"
|
|
fill_in "jam_ruby_user[last_name]", with: "Jones"
|
|
fill_in "jam_ruby_user[email]", with: "newuser4@jamkazam.com"
|
|
fill_in "jam_ruby_user[password]", with: "jam123"
|
|
fill_in "jam_ruby_user[password_confirmation]", with: "jam123"
|
|
check("jam_ruby_user[instruments][drums][selected]")
|
|
check("jam_ruby_user[terms_of_service]")
|
|
click_button "CREATE ACCOUNT"
|
|
page.should have_title("JamKazam")
|
|
should have_selector('div.tagline', text: "Congratulations!")
|
|
sign_out
|
|
visit "#{signup_path}?invitation_code=#{@invited_user.invitation_code}"
|
|
end
|
|
|
|
it { should have_selector('h1', text: "You have already signed up with this invitation") }
|
|
|
|
end
|
|
|
|
describe "can signup with an email different than the one used to invite" do
|
|
before do
|
|
@invited_user = FactoryGirl.create(:invited_user, :email => "what@jamkazam.com")
|
|
visit "#{signup_path}?invitation_code=#{@invited_user.invitation_code}"
|
|
find('#jam_ruby_user_first_name')
|
|
sleep 1 # if I don't do this, first_name and/or last name intermittently fail to fill out
|
|
|
|
UserMailer.deliveries.clear
|
|
|
|
fill_in "jam_ruby_user[first_name]", with: "Mike"
|
|
fill_in "jam_ruby_user[last_name]", with: "Jones"
|
|
fill_in "jam_ruby_user[email]", with: "newuser5@jamkazam.com"
|
|
fill_in "jam_ruby_user[password]", with: "jam123"
|
|
fill_in "jam_ruby_user[password_confirmation]", with: "jam123"
|
|
check("jam_ruby_user[instruments][drums][selected]")
|
|
check("jam_ruby_user[terms_of_service]")
|
|
click_button "CREATE ACCOUNT"
|
|
end
|
|
|
|
it {
|
|
should have_title("JamKazam | Congratulations")
|
|
should have_content("You have successfully registered as a JamKazam musician.")
|
|
User.find_by_email('newuser5@jamkazam.com').musician_instruments.length.should == 1
|
|
User.find_by_email('what@jamkazam.com').should be_nil
|
|
# an email is sent when you invite but use a different email than the one used to invite
|
|
UserMailer.deliveries.length.should == 1
|
|
uri = URI.parse(current_url)
|
|
"#{uri.path}?#{uri.query}".should == congratulations_musician_path(:type => 'Native')
|
|
sign_out
|
|
visit "#{signup_path}?invitation_code=#{@invited_user.invitation_code}"
|
|
should have_selector('h1', text: "You have already signed up with this invitation")
|
|
}
|
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
end
|