diff options
Diffstat (limited to 'spec/policies')
| -rw-r--r-- | spec/policies/referential_policy_spec.rb | 225 |
1 files changed, 112 insertions, 113 deletions
diff --git a/spec/policies/referential_policy_spec.rb b/spec/policies/referential_policy_spec.rb index 778e14901..f922ef379 100644 --- a/spec/policies/referential_policy_spec.rb +++ b/spec/policies/referential_policy_spec.rb @@ -1,160 +1,159 @@ # coding: utf-8 RSpec.describe ReferentialPolicy, type: :policy do - let( :record ){ build_stubbed :referential } - - # # Collection Based Permissions differ from standard as there is no referential yet # -------------------------------------------------------------------------------- - - permissions :create? do - it 'permissions present → allowed' do - add_permissions('referentials.create', to_user: user) - expect_it.to permit(user_context, record) - end - it 'permissions absent → forbidden' do - expect_it.not_to permit(user_context, record) + context "on a ready referential" do + let( :record ){ referential } + permissions :create? do + it 'permissions present → allowed' do + add_permissions('referentials.create', to_user: user) + expect_it.to permit(user_context, record) + end + it 'permissions absent → forbidden' do + expect_it.not_to permit(user_context, record) + end end - end - permissions :new? do - it 'permissions present → allowed' do - add_permissions('referentials.create', to_user: user) - expect_it.to permit(user_context, record) - end - it 'permissions absent → forbidden' do - expect_it.not_to permit(user_context, record) + permissions :new? do + it 'permissions present → allowed' do + add_permissions('referentials.create', to_user: user) + expect_it.to permit(user_context, record) + end + it 'permissions absent → forbidden' do + expect_it.not_to permit(user_context, record) + end end - end - - # - # Standard Destructive Action Permissions - # --------------------------------------- - permissions :destroy? do - it_behaves_like 'permitted policy and same organisation', 'referentials.destroy', archived_and_finalised: true - end - permissions :edit? do - it_behaves_like 'permitted policy and same organisation', 'referentials.update', archived_and_finalised: true - end - permissions :update? do - it_behaves_like 'permitted policy and same organisation', 'referentials.update', archived_and_finalised: true - end + # + # Standard Destructive Action Permissions + # --------------------------------------- - # - # Custom Permissions - # ------------------ + permissions :destroy? do + it_behaves_like 'permitted policy and same organisation', 'referentials.destroy', archived_and_finalised: true + end + permissions :edit? do + it_behaves_like 'permitted policy and same organisation', 'referentials.update', archived_and_finalised: true + end + permissions :update? do + it_behaves_like 'permitted policy and same organisation', 'referentials.update', archived_and_finalised: true + end - # permissions :clone? do - # it_behaves_like 'permitted policy', 'referentials.create', archived_and_finalised: true - # end + # + # Custom Permissions + # ------------------ - permissions :archive? do + # permissions :clone? do + # it_behaves_like 'permitted policy', 'referentials.create', archived_and_finalised: true + # end - context 'permission present →' do - before do - add_permissions('referentials.update', to_user: user) - end + permissions :archive? do - context 'same organisation →' do + context 'permission present →' do before do - user.organisation_id = referential.organisation_id - end - it "allows a user with the same organisation" do - expect_it.to permit(user_context, record) + add_permissions('referentials.update', to_user: user) end - describe "archived" do - let( :record ){ build_stubbed :referential, archived_at: 2.minutes.ago } - it 'does remove permission for archived referentials' do - expect_it.not_to permit(user_context, record) - end - end - end - context 'different organisations →' do - it "forbids a user with a different organisation" do - expect_it.not_to permit(user_context, record) + context 'same organisation →' do + before do + user.organisation_id = referential.organisation_id + end + it "allows a user with the same organisation" do + expect_it.to permit(user_context, record) + end + describe "archived" do + let( :record ){ build_stubbed :referential, archived_at: 2.minutes.ago, ready: true } + it 'does remove permission for archived referentials' do + expect_it.not_to permit(user_context, record) + end + end end - describe "archived" do - let( :record ){ build_stubbed :referential, archived_at: 2.minutes.ago } - it 'forbids for archived referentials' do + context 'different organisations →' do + it "forbids a user with a different organisation" do expect_it.not_to permit(user_context, record) end - end - end - end + describe "archived" do + let( :record ){ build_stubbed :referential, archived_at: 2.minutes.ago, ready: true } + it 'forbids for archived referentials' do + expect_it.not_to permit(user_context, record) + end + end - context 'permission absent →' do - context 'same organisation →' do - before do - user.organisation_id = referential.organisation_id end - it "forbids a user with the same organisation" do - expect_it.not_to permit(user_context, record) - end - describe "archived" do - let( :record ){ build_stubbed :referential, archived_at: 2.minutes.ago } - it 'forbids for archived referentials' do + end + + context 'permission absent →' do + context 'same organisation →' do + before do + user.organisation_id = referential.organisation_id + end + it "forbids a user with the same organisation" do expect_it.not_to permit(user_context, record) end + describe "archived" do + let( :record ){ build_stubbed :referential, archived_at: 2.minutes.ago, ready: true } + it 'forbids for archived referentials' do + expect_it.not_to permit(user_context, record) + end + end end end end - end - permissions :unarchive? do - - context 'permission present →' do - before do - add_permissions('referentials.update', to_user: user) - end + permissions :unarchive? do - context 'same organisation →' do + context 'permission present →' do before do - user.organisation_id = referential.organisation_id - end - it "forbids a user with the same organisation" do - expect_it.not_to permit(user_context, record) - end - describe "archived" do - let( :record ){ build_stubbed :referential, archived_at: 2.minutes.ago } - it 'adds permission for archived referentials' do - expect_it.to permit(user_context, record) - end + add_permissions('referentials.update', to_user: user) end - end - context 'different organisations →' do - it "forbids a user with a different organisation" do - expect_it.not_to permit(user_context, record) + context 'same organisation →' do + before do + user.organisation_id = referential.organisation_id + end + it "forbids a user with the same organisation" do + expect_it.not_to permit(user_context, record) + end + describe "archived" do + let( :record ){ build_stubbed :referential, archived_at: 2.minutes.ago, ready: true } + it 'adds permission for archived referentials' do + expect_it.to permit(user_context, record) + end + end end - describe "archived" do - let( :record ){ build_stubbed :referential, archived_at: 2.minutes.ago } - it 'still forbids for archived referentials' do + context 'different organisations →' do + it "forbids a user with a different organisation" do expect_it.not_to permit(user_context, record) end - end - end - end + describe "archived" do + let( :record ){ build_stubbed :referential, archived_at: 2.minutes.ago, ready: true } + it 'still forbids for archived referentials' do + expect_it.not_to permit(user_context, record) + end + end - context 'permission absent →' do - context 'same organisation →' do - before do - user.organisation_id = referential.organisation_id end - it "forbids a user with a different rganisation" do - expect_it.not_to permit(user_context, record) - end - describe "archived" do - let( :record ){ build_stubbed :referential, archived_at: 2.minutes.ago } - it 'still forbids for archived referentials' do + end + + context 'permission absent →' do + context 'same organisation →' do + before do + user.organisation_id = referential.organisation_id + end + it "forbids a user with a different rganisation" do expect_it.not_to permit(user_context, record) end + describe "archived" do + let( :record ){ build_stubbed :referential, archived_at: 2.minutes.ago, ready: true } + it 'still forbids for archived referentials' do + expect_it.not_to permit(user_context, record) + end + end end end end |
