require 'spec_helper'

feature Registration do
  let!(:ticket) { create(:ticket) }
  let!(:conference) { create(:conference, title: 'ExampleCon', tickets: [ticket]) }
  let!(:participant) { create(:user) }

  context 'as a participant' do
    before(:each) do
      sign_in participant
    end

    after(:each) do
      sign_out
    end

    context 'who is not registered' do

      scenario 'purchases a ticket', feature: true, js: true do
        visit root_path
        click_link 'Support'

        fill_in "tickets__#{ticket.id}", with: '2'
        expect(current_path).to eq(conference_tickets_path(conference.short_title))

        click_button 'Support'

        purchase = TicketPurchase.where(user_id: participant.id, ticket_id: ticket.id).first
        expect(purchase.quantity).to eq(2)
        expect(current_path).to eq(conference_conference_registrations_path(conference.short_title))
        expect(flash).
            to eq('Congratulations, you have successfully purchased a ticket! You can pay for it in cash when you arrive! Thank you for supporting ExampleCon!')
        expect(page.has_content?('Business Ticket')).to be true
      end

      scenario 'deletes a purchased ticket', feature: true, js: true do
        create(:ticket_purchase,
               user_id: participant.id,
               ticket_id: ticket.id,
               quantity: 2)

        visit conference_conference_registrations_path(conference.short_title)
        expect(page.has_content?('Business Ticket')).to be true

        click_link 'Delete'
        expect(flash).to eq('Ticket successfully deleted.')
        expect(TicketPurchase.count).to eq(0)
      end
    end
  end
end
