109 lines
3.3 KiB
Ruby
109 lines
3.3 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe "Account Payment", :js => true, :type => :feature, :capybara_feature => true do
|
|
|
|
subject { page }
|
|
|
|
let(:user) { FactoryGirl.create(:user, traditional_band: true,paid_sessions: true, paid_sessions_hourly_rate: 1, paid_sessions_daily_rate:1 ) }
|
|
let(:jam_track) {FactoryGirl.create(:jam_track)}
|
|
|
|
|
|
before(:each) do
|
|
JamTrackRight.delete_all
|
|
JamTrack.delete_all
|
|
AffiliateQuarterlyPayment.delete_all
|
|
AffiliateMonthlyPayment.delete_all
|
|
AffiliateTrafficTotal.delete_all
|
|
UserMailer.deliveries.clear
|
|
emulate_client
|
|
sign_in_poltergeist user
|
|
visit "/client#/account"
|
|
|
|
find('div.account-mid.identity')
|
|
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('.account-header', text: 'payment history:')
|
|
find('table tr td', text: '$0.00') # 1st purchase is free
|
|
|
|
find('.profile-tile.student a', text: 'payment method').trigger(:click)
|
|
|
|
|
|
fill_in 'card-number', with: '4111111111111111'
|
|
fill_in 'expiration', with: '11/2016'
|
|
fill_in 'cvv', with: '111'
|
|
fill_in 'zip', with: '78759'
|
|
|
|
find('.purchase-btn').trigger(:click)
|
|
|
|
find('a.update-btn', text: "I'D LIKE TO UPDATE MY PAYMENT INFO").trigger(:click)
|
|
|
|
user.reload
|
|
user.stripe_customer_id.should_not be_nil
|
|
user.stripe_token.should_not be_nil
|
|
original_token = user.stripe_token
|
|
|
|
fill_in 'card-number', with: '4111111111111111'
|
|
fill_in 'expiration', with: '11/2016'
|
|
fill_in 'cvv', with: '111'
|
|
fill_in 'zip', with: '78759'
|
|
|
|
find('.purchase-btn').trigger(:click)
|
|
|
|
find('a.update-btn', text: "I'D LIKE TO UPDATE MY PAYMENT INFO").trigger(:click)
|
|
|
|
user.reload
|
|
original_token.should_not eql user.stripe_token
|
|
end
|
|
end
|
|
|
|
it "handles unpaid lessons" do
|
|
teacher = FactoryGirl.create(:teacher_user)
|
|
lesson_session = normal_lesson(user, teacher)
|
|
lesson_session.lesson_payment_charge.user.should eql user
|
|
lesson_session.lesson_payment_charge.billing_attempts = 1
|
|
lesson_session.lesson_payment_charge.save!
|
|
uncollectables = user.uncollectables
|
|
uncollectables.count.should eql 1
|
|
|
|
visit "/client#/account"
|
|
|
|
find('.account-mid.payments', text: 'You have made no purchases.')
|
|
sleep 2
|
|
find("#account-payment-history-link").trigger(:click)
|
|
find('.account-header', text: 'payment history:')
|
|
|
|
find('.uncollectable-msg', text: 'You have unpaid lessons')
|
|
find('.uncollectable-msg a').trigger(:click)
|
|
|
|
|
|
fill_in 'card-number', with: '4111111111111111'
|
|
fill_in 'expiration', with: '11/2016'
|
|
fill_in 'cvv', with: '111'
|
|
fill_in 'zip', with: '78759'
|
|
|
|
find('.purchase-btn').trigger(:click)
|
|
|
|
find('#banner .dialog-inner', text: 'Your credit card info has been updated')
|
|
|
|
# dismiss banner
|
|
find('a.button-orange', text:'CLOSE').trigger(:click)
|
|
|
|
user.reload
|
|
|
|
user.stripe_customer_id.should_not be_nil
|
|
user.stripe_token.should_not be_nil
|
|
end
|
|
end
|