diff options
| -rw-r--r-- | spec/policies/calendar_policy_spec.rb | 4 | ||||
| -rw-r--r-- | spec/support/pundit/shared_examples.rb | 30 |
2 files changed, 31 insertions, 3 deletions
diff --git a/spec/policies/calendar_policy_spec.rb b/spec/policies/calendar_policy_spec.rb index 57f771c54..294be8198 100644 --- a/spec/policies/calendar_policy_spec.rb +++ b/spec/policies/calendar_policy_spec.rb @@ -5,7 +5,7 @@ RSpec.describe CalendarPolicy, type: :policy do permissions :create? do - it_behaves_like 'permitted policy and same organisation', 'calendars.create', archived: true + it_behaves_like 'permitted policy', 'calendars.create', archived: true end permissions :destroy? do it_behaves_like 'permitted policy and same organisation', 'calendars.destroy', archived: true @@ -14,7 +14,7 @@ RSpec.describe CalendarPolicy, type: :policy do it_behaves_like 'permitted policy and same organisation', 'calendars.update', archived: true end permissions :new? do - it_behaves_like 'permitted policy and same organisation', 'calendars.create', archived: true + it_behaves_like 'permitted policy', 'calendars.create', archived: true end permissions :update? do it_behaves_like 'permitted policy and same organisation', 'calendars.update', archived: true diff --git a/spec/support/pundit/shared_examples.rb b/spec/support/pundit/shared_examples.rb index b91caa479..63a106759 100644 --- a/spec/support/pundit/shared_examples.rb +++ b/spec/support/pundit/shared_examples.rb @@ -64,7 +64,7 @@ RSpec.shared_examples 'always forbidden' do end end end -j + RSpec.shared_examples 'permitted policy and same organisation' do | permission, archived: false| @@ -101,3 +101,31 @@ RSpec.shared_examples 'permitted policy and same organisation' do end end end + +RSpec.shared_examples 'permitted policy' do + | permission, archived: false| + + context 'permission absent → ' do + it "denies user" do + expect_it.not_to permit(user_context, record) + end + end + + context 'permission present → ' do + before do + add_permissions(permission, for_user: user) + end + + it 'allows user' do + expect_it.to permit(user_context, record) + end + + if archived + it 'removes the permission for archived referentials' do + user.organisation_id = referential.organisation_id + referential.archived_at = 42.seconds.ago + expect_it.not_to permit(user_context, record) + end + end + end +end |
