modify tests for changed payment flow

This commit is contained in:
Rishabh Saxena 2016-07-27 19:44:32 +05:30
parent ab262ecb46
commit a5bb038f61
3 changed files with 66 additions and 40 deletions

View file

@ -82,9 +82,8 @@ describe ConferenceRegistrationsController, type: :controller do
get :show, conference_id: conference.short_title get :show, conference_id: conference.short_title
end end
it 'assigns price of purchased tickets to total_price and purchased tickets to tickets' do it 'does not assign price of purchased tickets to total_price and purchased tickets to tickets without payment' do
expect(assigns(:total_price)).to eq Money.new(10000, 'USD') expect(assigns(:total_price)).to eq Money.new(0, 'USD')
expect(assigns(:tickets)).to match_array [@purchased_ticket]
end end
end end

View file

@ -26,26 +26,12 @@ feature Registration do
fill_in "tickets__#{ticket.id}", with: '2' fill_in "tickets__#{ticket.id}", with: '2'
expect(current_path).to eq(conference_tickets_path(conference.short_title)) expect(current_path).to eq(conference_tickets_path(conference.short_title))
click_button 'Support' click_button 'Continue'
expect(current_path).to eq(new_conference_payment_path(conference.short_title))
expect(flash).to eq('Please pay here to purchase tickets.')
purchase = TicketPurchase.where(user_id: participant.id, ticket_id: ticket.id).first purchase = TicketPurchase.where(user_id: participant.id, ticket_id: ticket.id).first
expect(purchase.quantity).to eq(2) expect(purchase.quantity).to eq(2)
expect(current_path).to eq(conference_conference_registration_path(conference.short_title))
expect(flash).
to eq("Thank you for supporting #{conference.title} by purchasing a ticket.")
expect(page.has_content?("2 #{ticket.title} Tickets for 10")).to be true
end
scenario 'deletes a purchased ticket', feature: true, js: true do
create(:registration, conference: conference, user: participant)
create(:ticket_purchase, conference: conference, user: participant, ticket: ticket, quantity: 4)
visit conference_conference_registration_path(conference.short_title)
expect(page.has_content?("4 #{ticket.title} Tickets for 10")).to be true
click_link "ticket-#{ticket.id}-delete"
expect(flash).to eq('Ticket successfully deleted.')
expect(TicketPurchase.count).to eq(0)
end end
end end
end end

View file

@ -82,31 +82,72 @@ describe Ticket do
end end
end end
describe '#unpaid?' do
let!(:ticket_purchase) { create(:ticket_purchase, user: user, ticket: ticket) }
context 'user has not paid' do
it 'returns true' do
expect(ticket.unpaid?(user)).to eq(true)
end
end
context 'user has paid' do
before { ticket_purchase.update_attributes(paid: true) }
it 'returns false' do
expect(ticket.unpaid?(user)).to eq(false)
end
end
end
describe '#quantity_bought_by' do describe '#quantity_bought_by' do
context 'user has not paid' do
it 'returns the correct value if the user has bought this ticket' do it 'returns the correct value if the user has bought this ticket' do
create(:ticket_purchase, create(:ticket_purchase,
user: user, user: user,
ticket: ticket, ticket: ticket,
quantity: 20) quantity: 20)
expect(ticket.quantity_bought_by(user)).to eq(20) expect(ticket.quantity_bought_by(user, paid: false)).to eq(20)
end end
it 'returns zero if the user has not bought this ticket' do it 'returns zero if the user has not bought this ticket' do
expect(ticket.quantity_bought_by(user)).to eq(0) expect(ticket.quantity_bought_by(user, paid: false)).to eq(0)
end
end
context 'user has paid' do
let!(:ticket_purchase) { create(:ticket_purchase, user: user, ticket: ticket, quantity: 20) }
before { ticket_purchase.update_attributes(paid: true) }
it 'returns the correct value if the user has bought and paid for this ticket' do
expect(ticket.quantity_bought_by(user, paid: true)).to eq(20)
end
end end
end end
describe '#total_price' do describe '#total_price' do
context 'user has not paid' do
it 'returns the correct value if the user has bought this ticket' do it 'returns the correct value if the user has bought this ticket' do
create(:ticket_purchase, create(:ticket_purchase,
user: user, user: user,
ticket: ticket, ticket: ticket,
quantity: 20) quantity: 20)
expect(ticket.total_price(user)).to eq(Money.new(100000, 'USD')) expect(ticket.total_price(user, paid: false)).to eq(Money.new(100000, 'USD'))
end end
it 'returns zero if the user has not bought this ticket' do it 'returns zero if the user has not bought this ticket' do
expect(ticket.total_price(user)).to eq(Money.new(0, 'USD')) expect(ticket.total_price(user, paid: false)).to eq(Money.new(0, 'USD'))
end
end
context 'user has paid' do
let!(:ticket_purchase) { create(:ticket_purchase, user: user, ticket: ticket, quantity: 20) }
before { ticket_purchase.update_attributes(paid: true) }
it 'returns the correct value if the user has bought this ticket' do
expect(ticket.total_price(user, paid: true)).to eq(Money.new(100000, 'USD'))
end
end end
end end
@ -116,7 +157,7 @@ describe Ticket do
describe 'user has bought' do describe 'user has bought' do
context 'no tickets' do context 'no tickets' do
it 'returns zero' do it 'returns zero' do
expect(Ticket.total_price(conference, user)).to eq(Money.new(0, 'USD')) expect(Ticket.total_price(conference, user, paid: false)).to eq(Money.new(0, 'USD'))
end end
end end
@ -126,7 +167,7 @@ describe Ticket do
end end
it 'returns the correct total price' do it 'returns the correct total price' do
expect(Ticket.total_price(conference, user)).to eq(Money.new(100000, 'USD')) expect(Ticket.total_price(conference, user, paid: false)).to eq(Money.new(100000, 'USD'))
end end
end end
@ -138,7 +179,7 @@ describe Ticket do
it 'returns the correct total price' do it 'returns the correct total price' do
total_price = Money.new(200000, 'USD') total_price = Money.new(200000, 'USD')
expect(Ticket.total_price(conference, user)).to eq(total_price) expect(Ticket.total_price(conference, user, paid: false)).to eq(total_price)
end end
end end
end end