257 lines
9.4 KiB
Ruby
257 lines
9.4 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe "Account", :js => true, :type => :feature, :capybara_feature => true do
|
|
|
|
subject { page }
|
|
|
|
let(:user) { FactoryGirl.create(:user) }
|
|
let(:jam_track) {FactoryGirl.create(:jam_track)}
|
|
|
|
before(:each) do
|
|
UserMailer.deliveries.clear
|
|
emulate_client
|
|
sign_in_poltergeist user
|
|
visit "/client#/account"
|
|
|
|
find('div.account-mid.identity')
|
|
end
|
|
|
|
it { should have_selector('h1', text: 'my account') }
|
|
|
|
describe "identity" do
|
|
before(:each) do
|
|
find("#account-edit-identity-link").trigger(:click)
|
|
end
|
|
|
|
it {
|
|
find('#account-identity h2', text: 'identity:')
|
|
should have_selector('form#account-edit-email-form h4', text: 'Update your email address:')
|
|
should have_selector('form#account-edit-password-form h4', text: 'Update your password:')
|
|
}
|
|
|
|
describe "update email" do
|
|
|
|
before(:each) do
|
|
find('form#account-edit-email-form h4', text: 'Update your email address:')
|
|
fill_in "account_update_email", with: "junk@jamkazam.com"
|
|
#sleep 1
|
|
find("#account-edit-email-submit").trigger(:click)
|
|
fill_in "update-email-confirm-password", with: user.password
|
|
find("#account-edit-email-confirm-password-submit").trigger(:click)
|
|
|
|
end
|
|
|
|
it {
|
|
find('#notification h2', text: 'Confirmation Email Sent')
|
|
}
|
|
end
|
|
|
|
describe "update password" do
|
|
|
|
describe "successfully" do
|
|
|
|
before(:each) do
|
|
fill_in "current_password", with: user.password
|
|
fill_in "password", with: user.password
|
|
fill_in "password_confirmation", with: user.password
|
|
find("#account-edit-password-submit").trigger(:click)
|
|
end
|
|
|
|
it { should have_selector('h1', text: 'my account') }
|
|
end
|
|
|
|
describe "unsuccessfully" do
|
|
|
|
before(:each) do
|
|
find('#account-identity h2', text: 'identity:')
|
|
find("#account-edit-password-submit").trigger(:click)
|
|
end
|
|
|
|
it {
|
|
find('#account-identity h2', text: 'identity:')
|
|
find('#account-identity div.field.error input[name=current_password] ~ ul li', text: "can't be blank")
|
|
find('#account-identity div.field.error input[name=password] ~ ul li', text: "is too short (minimum is 6 characters)")
|
|
find('#account-identity div.field.error input[name=password_confirmation] ~ ul li', text: "can't be blank")
|
|
}
|
|
end
|
|
end
|
|
|
|
describe "profile" do
|
|
|
|
before(:each) do
|
|
find("#account-edit-profile-link").trigger(:click)
|
|
find('a.small', text: 'Change Avatar')
|
|
end
|
|
|
|
describe "successfully" do
|
|
|
|
before(:each) do
|
|
fill_in "first_name", with: "Bobby"
|
|
fill_in "last_name", with: "Toes"
|
|
uncheck('subscribe_email')
|
|
find(".account-edit-profile-submit").trigger(:click)
|
|
end
|
|
|
|
it {
|
|
user.subscribe_email.should be_true # we haven't user.reload yet
|
|
should have_selector('h1', text: 'my account')
|
|
user.reload
|
|
user.subscribe_email.should be_false
|
|
user.first_name.should == "Bobby"
|
|
user.last_name.should == "Toes"
|
|
should have_selector('#profile #user', text: 'Bobby Toes')
|
|
|
|
|
|
# Update birth date and check updated birth date
|
|
|
|
jk_select("Jan", '#account-edit-profile-form #user_birth_date_2i')
|
|
jk_select("12", '#account-edit-profile-form #user_birth_date_3i')
|
|
jk_select("1960", '#account-edit-profile-form #user_birth_date_1i')
|
|
find(".account-edit-profile-submit").trigger(:click)
|
|
|
|
user.reload
|
|
user.birth_date == "1960-01-12"
|
|
|
|
should have_selector('#account-edit-profile-form .birth_date li.active', text: "Jan")
|
|
should have_selector('#account-edit-profile-form .birth_date li.active', text: "12")
|
|
should have_selector('#account-edit-profile-form .birth_date li.active', text: "1960")
|
|
|
|
}
|
|
|
|
end
|
|
|
|
describe "unsuccessfully" do
|
|
|
|
before(:each) do
|
|
fill_in "first_name", with: ""
|
|
fill_in "last_name", with: ""
|
|
find(".account-edit-profile-submit").trigger(:click)
|
|
end
|
|
|
|
it {
|
|
should have_selector('h2', text: 'profile:')
|
|
should have_selector('div.field.error input[name=first_name] ~ ul li', text: "can't be blank")
|
|
should have_selector('div.field.error input[name=last_name] ~ ul li', text: "can't be blank")
|
|
}
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "payment history" do
|
|
|
|
it "show 1 sale" do
|
|
|
|
sale = Sale.create_jam_track_sale(user)
|
|
shopping_cart = ShoppingCart.create(user, jam_track)
|
|
sale_line_item = SaleLineItem.create_from_shopping_cart(sale, shopping_cart, nil, 'some_adjustment_uuid', nil)
|
|
|
|
visit "/client#/account"
|
|
|
|
find('.account-mid.payments', text: 'You have made 1 purchase.')
|
|
|
|
find("#account-payment-history-link").trigger(:click)
|
|
find('h2', text: 'payment history:')
|
|
find('table tr td', text: '$0.00') # 1st purchase is free
|
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
describe "sessions" do
|
|
|
|
before(:each) do
|
|
@creator, @name, @desc = schedule_session
|
|
|
|
visit "/client#/account"
|
|
|
|
find("#account-scheduled-sessions-link").trigger(:click)
|
|
find('h2', text: 'scheduled sessions:')
|
|
end
|
|
|
|
it "list scheduled sessions" do
|
|
should have_selector('div.session-right', text: @name)
|
|
end
|
|
|
|
it "shows detail of scheduled session" do
|
|
find("a.session-detail-button").trigger(:click)
|
|
|
|
find('.session-properties-right', text: @name)
|
|
find('td', text: @creator.name)
|
|
end
|
|
|
|
it "should update scheduled session" do
|
|
find("a.session-detail-button").trigger(:click)
|
|
find('a.button-orange.update-session', text: "UPDATE").trigger(:click)
|
|
|
|
find('strong', text: "Date & Time")
|
|
find('strong', text: "Other Properties")
|
|
|
|
find('#session-prop-name').value.should eq @name
|
|
|
|
# update session properties with new values
|
|
date = Time.now.strftime "%a %e %B %Y"
|
|
fill_in('session-prop-start-date', with: date)
|
|
find('a.ui-state-default', text: '11').trigger(:click)
|
|
jk_select('11:30 PM', '#account-session-properties-div #start-time-prop-list')
|
|
jk_select('12:00 AM', '#account-session-properties-div #end-time-prop-list')
|
|
jk_select('(GMT+00:00) UTC', '#account-session-properties-div #timezone-prop-list')
|
|
jk_select('African', '#account-session-properties-div select[name="genres"]')
|
|
fill_in('session-prop-name', with: "Updated Name")
|
|
fill_in('session-prop-desc', with: "Updated Description")
|
|
jk_select('German', '#account-session-properties-div #session-prop-lang-list')
|
|
jk_select('Only RSVP musicians may join', '#account-session-properties-div #session-prop-musician-access')
|
|
jk_select('Fans may not listen to session', '#account-session-properties-div #session-prop-fans-access')
|
|
find('a#session-update').trigger(:click)
|
|
|
|
should have_selector('h2', text: 'Session is successfully updated.')
|
|
find('a.button-orange', text: "OKAY").trigger(:click)
|
|
|
|
# check updated properties
|
|
current_date = Time.now
|
|
date_value = Time.new(current_date.year, current_date.mon, 11)
|
|
date_string = date_value.strftime "%a %e %B %Y"
|
|
|
|
find('#account-session-properties-div #session-prop-start-date').value.should eq date_string
|
|
find('#account-session-properties-div .selected', text: '11:30 PM')
|
|
find('#account-session-properties-div .selected', text: '12:30 AM')
|
|
find('#account-session-properties-div .selected', text: '(GMT+00:00) UTC')
|
|
find('#account-session-properties-div #session-prop-genre .selected', text: 'African')
|
|
find('#account-session-properties-div #session-prop-name').value.should eq "Updated Name"
|
|
find('#account-session-properties-div #session-prop-desc').value.should eq "Updated Description"
|
|
find('#account-session-properties-div .selected', text: 'German')
|
|
find('#account-session-properties-div .selected', text: 'Only RSVP musicians may join')
|
|
find('#account-session-properties-div .selected', text: 'Fans may not listen to session')
|
|
|
|
# try to update without changing the fields
|
|
find('a#session-update').trigger(:click)
|
|
|
|
should have_selector('h2', text: 'Session is successfully updated.')
|
|
find('a.button-orange', text: "OKAY").trigger(:click)
|
|
|
|
# check fields with original values
|
|
find('#account-session-properties-div #session-prop-start-date').value.should eq date_string
|
|
find('#account-session-properties-div .selected', text: '11:30 PM')
|
|
find('#account-session-properties-div .selected', text: '12:30 AM')
|
|
find('#account-session-properties-div .selected', text: '(GMT+00:00) UTC')
|
|
find('#account-session-properties-div #session-prop-genre .selected', text: 'African')
|
|
find('#account-session-properties-div #session-prop-name').value.should eq "Updated Name"
|
|
find('#account-session-properties-div #session-prop-desc').value.should eq "Updated Description"
|
|
find('#account-session-properties-div .selected', text: 'German')
|
|
find('#account-session-properties-div .selected', text: 'Only RSVP musicians may join')
|
|
find('#account-session-properties-div .selected', text: 'Fans may not listen to session')
|
|
|
|
end
|
|
|
|
it "cancel a scheduled sessions" do
|
|
find("a.session-cancel-button").trigger(:click)
|
|
|
|
should have_selector('h1', 'cancel session')
|
|
find("a#btnCancelSession", text: "CANCEL SESSION").trigger(:click)
|
|
|
|
should_not have_selector('tr')
|
|
end
|
|
|
|
end
|
|
end
|