diff --git a/app/policies/application_policy.rb b/app/policies/application_policy.rb index 5d7ffdbe..e2d23fc6 100644 --- a/app/policies/application_policy.rb +++ b/app/policies/application_policy.rb @@ -2,12 +2,12 @@ class ApplicationPolicy attr_reader :person, :record def initialize(person, record) - @person = person + @person = person || Person.new @record = record end def create? - person.present? && person.admin? + signed_in?(person) && person.admin? end def new? @@ -15,7 +15,7 @@ def new? end def update? - person.present? && person.admin? + signed_in?(person) && person.admin? end def edit? @@ -23,6 +23,12 @@ def edit? end def destroy? - person.present? && person.admin? + signed_in?(person) && person.admin? + end + + private + + def signed_in?(person) + person.persisted? end end diff --git a/app/policies/presentation_policy.rb b/app/policies/presentation_policy.rb index fdfdc994..91ec2c34 100644 --- a/app/policies/presentation_policy.rb +++ b/app/policies/presentation_policy.rb @@ -1,6 +1,6 @@ class PresentationPolicy < ApplicationPolicy def create? - person.present? + signed_in?(person) end def new? @@ -8,7 +8,7 @@ def new? end def update? - (person&.admin? || person&.presentations&.include?(record)).present? + person.admin? || person.presentations.include?(record) end def edit? diff --git a/spec/controllers/events_controller_spec.rb b/spec/controllers/events_controller_spec.rb index 7502ce1c..811d5973 100644 --- a/spec/controllers/events_controller_spec.rb +++ b/spec/controllers/events_controller_spec.rb @@ -2,7 +2,7 @@ RSpec.describe EventsController, type: :controller do context 'the current person is an admin' do - let(:admin_person) { FactoryGirl.build(:person, :admin) } + let(:admin_person) { FactoryGirl.create(:person, :admin) } before { mock_pundit_user_as(admin_person) } @@ -96,7 +96,7 @@ end context 'the current person is a non-admin' do - let(:non_admin) { FactoryGirl.build(:person) } + let(:non_admin) { FactoryGirl.create(:person) } before { mock_pundit_user_as(non_admin) } diff --git a/spec/controllers/presentations_controller_spec.rb b/spec/controllers/presentations_controller_spec.rb index eae79f92..af104c5d 100644 --- a/spec/controllers/presentations_controller_spec.rb +++ b/spec/controllers/presentations_controller_spec.rb @@ -2,8 +2,8 @@ RSpec.describe PresentationsController, type: :controller do let(:nil_person) { nil } - let(:non_admin) { FactoryGirl.build(:person) } - let(:admin_person) { FactoryGirl.build(:person, :admin) } + let(:non_admin) { FactoryGirl.create(:person) } + let(:admin_person) { FactoryGirl.create(:person, :admin) } describe 'GET #index' do subject { get :index } diff --git a/spec/policies/application_policy_spec.rb b/spec/policies/application_policy_spec.rb index 62888b04..094ff185 100644 --- a/spec/policies/application_policy_spec.rb +++ b/spec/policies/application_policy_spec.rb @@ -24,7 +24,7 @@ context 'the person is an admin' do subject { ApplicationPolicy.new(admin, 'any object') } - let(:admin) { FactoryGirl.build(:person, :admin) } + let(:admin) { FactoryGirl.create(:person, :admin) } policy_methods.each do |method| describe method.to_s do @@ -37,7 +37,7 @@ context 'the person is a non admin' do subject { ApplicationPolicy.new(non_admin, 'any object') } - let(:non_admin) { FactoryGirl.build(:person) } + let(:non_admin) { FactoryGirl.create(:person) } policy_methods.each do |method| describe method.to_s do diff --git a/spec/policies/presentation_policy_spec.rb b/spec/policies/presentation_policy_spec.rb index af12cf7c..c6f364d0 100644 --- a/spec/policies/presentation_policy_spec.rb +++ b/spec/policies/presentation_policy_spec.rb @@ -28,7 +28,7 @@ context 'the person is an admin' do subject { described_class.new(admin, presentation) } - let(:admin) { FactoryGirl.build(:person, :admin) } + let(:admin) { FactoryGirl.create(:person, :admin) } let(:presentation) { FactoryGirl.build(:presentation) } describe '.update?' do