Merge 7822a8d4e3 into 6cde2a5f4a
This commit is contained in:
commit
19855d9cba
9 changed files with 469 additions and 34 deletions
|
|
@ -32,6 +32,11 @@ describe 'User' do
|
|||
|
||||
let(:registration) { create(:registration) }
|
||||
|
||||
let(:conference_with_open_registration) { create(:conference) }
|
||||
let!(:open_registration_period) { create(:registration_period, conference: conference_with_open_registration, start_date: Date.current - 6.days) }
|
||||
let(:conference_with_closed_registration) { create(:conference) }
|
||||
let!(:closed_registration_period) { create(:registration_period, conference: conference_with_closed_registration, start_date: Date.current - 6.days, end_date: Date.current - 6.days) }
|
||||
|
||||
# Test abilities for not signed in users
|
||||
context 'when user is not signed in' do
|
||||
it{ should be_able_to(:index, Conference)}
|
||||
|
|
@ -54,8 +59,11 @@ describe 'User' do
|
|||
|
||||
it{ should be_able_to(:show, User)}
|
||||
|
||||
it{ should be_able_to(:create, Registration)}
|
||||
it{ should be_able_to(:show, Registration.new)}
|
||||
it{ should be_able_to(:create, Registration.new(conference_id: conference_with_open_registration.id))}
|
||||
it{ should be_able_to(:new, Registration.new(conference_id: conference_with_open_registration.id))}
|
||||
it{ should_not be_able_to(:new, Registration.new(conference_id: conference_with_closed_registration.id))}
|
||||
it{ should_not be_able_to(:create, Registration.new(conference_id: conference_with_closed_registration.id))}
|
||||
it{ should_not be_able_to(:manage, registration)}
|
||||
|
||||
it{ should be_able_to(:create, Event)}
|
||||
|
|
@ -79,6 +87,8 @@ describe 'User' do
|
|||
|
||||
it{ should be_able_to(:manage, registration_public) }
|
||||
it{ should be_able_to(:manage, registration_not_public) }
|
||||
it{ should_not be_able_to(:new, Registration.new(conference_id: conference_with_closed_registration.id))}
|
||||
it{ should_not be_able_to(:create, Registration.new(conference_id: conference_with_closed_registration.id))}
|
||||
|
||||
it{ should be_able_to(:index, Ticket) }
|
||||
it{ should be_able_to(:manage, TicketPurchase.new(user_id: user.id)) }
|
||||
|
|
|
|||
|
|
@ -1,24 +1,79 @@
|
|||
#!/bin/env ruby
|
||||
# encoding: utf-8
|
||||
require 'spec_helper'
|
||||
|
||||
describe 'Registration' do
|
||||
describe 'validations' do
|
||||
describe Registration do
|
||||
subject { create(:registration) }
|
||||
|
||||
describe 'validation' do
|
||||
|
||||
it 'has a valid factory' do
|
||||
expect(build(:registration)).to be_valid
|
||||
end
|
||||
|
||||
it { should validate_presence_of(:user) }
|
||||
|
||||
it 'validates uniqueness of user in scope of conference' do
|
||||
expect(build(:registration, conference: subject.conference, user: subject.user)).not_to be_valid
|
||||
end
|
||||
|
||||
describe 'registration_limit_not_exceed' do
|
||||
it 'is not valid when limit exceeded' do
|
||||
conference = build(:conference)
|
||||
conference.registration_limit = 1
|
||||
registration1 = build(:registration, conference: conference)
|
||||
registration1.save
|
||||
registration2 = build(:registration, conference: conference)
|
||||
registration2.save
|
||||
expect(conference.registrations.size).to be 1
|
||||
expect(registration2.valid?).to be false
|
||||
expect(registration2.errors.full_messages).to eq(['Registration limit exceeded'])
|
||||
context 'registration_limit has exceeded' do
|
||||
before do
|
||||
conference = create(:conference, registration_limit: 1)
|
||||
create(:registration, conference: conference)
|
||||
@second_registration = build(:registration, conference: conference)
|
||||
end
|
||||
|
||||
it 'is not valid factory' do
|
||||
expect(@second_registration.valid?).to be false
|
||||
expect(@second_registration.errors.full_messages).to eq(['Registration limit exceeded'])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'association' do
|
||||
it { should belong_to(:user) }
|
||||
it { should belong_to(:conference) }
|
||||
it { should belong_to(:dietary_choice) }
|
||||
it { should have_and_belong_to_many(:social_events) }
|
||||
it { should have_and_belong_to_many(:events) }
|
||||
it { should have_and_belong_to_many(:qanswers) }
|
||||
it { should have_and_belong_to_many(:vchoices) }
|
||||
it { should have_many(:events_registrations) }
|
||||
it { should have_many(:workshops) }
|
||||
end
|
||||
|
||||
describe 'callback' do
|
||||
after { subject.run_callbacks(:create) }
|
||||
|
||||
# set_week and subscribe_to_conference are private methods
|
||||
describe '#set_week' do
|
||||
before { subject.created_at = Time.utc(2014, 5, 10) }
|
||||
|
||||
it 'sets week of registration' do
|
||||
expect(subject).to receive(:set_week)
|
||||
expect(subject.week).to eq 18
|
||||
end
|
||||
end
|
||||
|
||||
describe '#subscribe_to_conference' do
|
||||
it 'subscribes to conference' do
|
||||
expect(subject).to receive(:subscribe_to_conference)
|
||||
expect(subject.user.subscribed?(subject.conference)).to be true
|
||||
end
|
||||
end
|
||||
|
||||
it 'sends registrations mail' do
|
||||
expect(subject).to receive(:send_registration_mail)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'method' do
|
||||
describe '#week' do
|
||||
before { subject.created_at = Date.new(2014, 06, 30) }
|
||||
|
||||
it 'returns week number of created_at' do
|
||||
expect(subject.week).to eq(26)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue