osem-fcy/spec/models/registration_spec.rb
Aditya Prakash 7e4d91adaf Improvements in registration specs
Check for true and not truthy in registration model spec.
Cover general cases in conf registration controller.
Add test for flash in new action when ichain is set and user is not signed in.
2016-03-12 17:58:14 +05:30

80 lines
2.3 KiB
Ruby

require 'spec_helper'
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
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
end