Repository URL to install this package:
|
Version:
4.0.0.pre.3 ▾
|
require 'rails_helper'
RSpec.describe Core::Booking, type: :model do
it 'has a valid factory' do
expect(create(:core_booking)).to be_valid
end
it 'has an associated event' do
booking = create(:core_booking)
expect(booking.event).to be_an_instance_of(Core::Event)
end
it 'is invalid with a missing event' do
expect(build(:core_booking, event: nil)).to be_invalid
end
it 'has an associated user' do
booking = create(:core_booking)
expect(booking.user).to be_an_instance_of(Core::User)
end
it 'is invalid with a missing user' do
expect(build(:core_booking, user: nil)).to be_invalid
end
it 'has a list of possible states' do
expect(described_class.states).to eq %w(open completed cancelled)
end
it 'can have a state of completed' do
expect(build(:core_booking, state: 'completed')).to be_valid
end
it 'refuses invalid states' do
expect(build(:core_booking, state: 'something')).to be_invalid
end
it 'has a list of possible payment types' do
expect(described_class.payment_types).to eq %w(unknown none card pass trial)
end
it 'refuses invalid payment types' do
expect(build(:core_booking, payment_type: 'in_kind')).to be_invalid
end
it 'can filter by open bookings' do
valid_booking = create(:core_booking, state: :open)
create(:core_booking, state: :completed)
expect(described_class.open).to eq([valid_booking])
end
it 'can filter by completed bookings' do
valid_booking = create(:core_booking, state: :completed)
create(:core_booking, state: :open)
expect(described_class.completed).to eq([valid_booking])
end
it 'can filter by cancelled bookings' do
valid_booking = create(:core_booking, state: :cancelled)
create(:core_booking, state: :open)
expect(described_class.cancelled).to eq([valid_booking])
end
it 'can only exist once for a combined event and user' do
event = create(:core_event)
user = create(:core_user)
create(:core_booking, event: event, user: user)
expect do
create(:core_booking, event: event, user: user)
end.to raise_exception ActiveRecord::RecordInvalid
end
end