From 7822a8d4e31ba9e182f280944ae4053ca247dd23 Mon Sep 17 00:00:00 2001 From: Aditya Prakash Date: Mon, 14 Mar 2016 23:38:55 +0530 Subject: [PATCH] Do not allow signed in users to registor unless registration is open --- app/models/ability.rb | 4 ++++ spec/models/ability_spec.rb | 12 +++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/models/ability.rb b/app/models/ability.rb index c20ddfc0..dd80ef6b 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -72,6 +72,10 @@ class Ability can :manage, Registration, user_id: user.id + can [:new, :create], Registration do |registration| + registration.conference.registration_open? + end + can :index, Ticket can :manage, TicketPurchase, user_id: user.id diff --git a/spec/models/ability_spec.rb b/spec/models/ability_spec.rb index dd389545..f9fdd6c8 100644 --- a/spec/models/ability_spec.rb +++ b/spec/models/ability_spec.rb @@ -33,13 +33,13 @@ 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 - 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) } - it{ should be_able_to(:index, Conference)} it{ should be_able_to(:show, conference_public)} @@ -88,6 +88,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)) }