2017-07-18 02:57:46 +05:30
|
|
|
require 'spec_helper'
|
|
|
|
|
|
|
|
|
|
describe Admin::TicketScanningsController do
|
|
|
|
|
let(:admin) { create(:admin) }
|
|
|
|
|
let(:conference) { create(:conference) }
|
|
|
|
|
let(:user) { create(:user) }
|
2017-08-22 14:57:42 +05:30
|
|
|
let!(:registration) { create(:registration, conference: conference, user: user) }
|
|
|
|
|
let(:registration_ticket) { create(:registration_ticket, conference: conference) }
|
|
|
|
|
let(:paid_ticket_purchase) { create(:ticket_purchase, conference: conference, user: user, ticket: registration_ticket, quantity: 1) }
|
2017-07-18 02:57:46 +05:30
|
|
|
let(:physical_ticket) { create(:physical_ticket, ticket_purchase: paid_ticket_purchase) }
|
|
|
|
|
|
|
|
|
|
context 'logged in as user with no role' do
|
|
|
|
|
before :each do
|
|
|
|
|
sign_in user
|
|
|
|
|
end
|
|
|
|
|
describe 'POST #create' do
|
|
|
|
|
it 'does not create new ticket scanning' do
|
|
|
|
|
expected = expect do
|
|
|
|
|
post :create, physical_ticket_id: physical_ticket.token
|
|
|
|
|
end
|
|
|
|
|
expected.to_not change(TicketScanning, :count)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'redirects to root' do
|
|
|
|
|
post :create, physical_ticket_id: physical_ticket.token
|
|
|
|
|
expect(flash[:alert]).to eq('You are not authorized to access this page.')
|
|
|
|
|
expect(response).to redirect_to(root_path)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
context 'logged in as admin' do
|
|
|
|
|
before :each do
|
|
|
|
|
sign_in admin
|
|
|
|
|
end
|
|
|
|
|
describe 'POST #create' do
|
|
|
|
|
context 'with valid physical_ticket' do
|
|
|
|
|
it 'creates new ticket scanning' do
|
|
|
|
|
expected = expect do
|
|
|
|
|
post :create, physical_ticket_id: physical_ticket.token
|
|
|
|
|
end
|
|
|
|
|
expected.to change { TicketScanning.count }.by(1)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'redirects to index' do
|
|
|
|
|
post :create, physical_ticket_id: physical_ticket.token
|
|
|
|
|
expect(flash[:notice]).to eq("Ticket with token #{physical_ticket.token} successfully scanned.")
|
|
|
|
|
expect(response).to redirect_to(conferences_path)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
context 'with Invalid physical_ticket' do
|
|
|
|
|
it 'raises exception' do
|
|
|
|
|
expected = expect do
|
|
|
|
|
post :create, physical_ticket_id: 'XXXX'
|
|
|
|
|
end
|
|
|
|
|
expected.to raise_exception(ActiveRecord::RecordNotFound)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|