diff options
Diffstat (limited to 'spec/policies/referential_policy_spec.rb')
| -rw-r--r-- | spec/policies/referential_policy_spec.rb | 97 | 
1 files changed, 78 insertions, 19 deletions
| diff --git a/spec/policies/referential_policy_spec.rb b/spec/policies/referential_policy_spec.rb index d060317f9..33d8e13e8 100644 --- a/spec/policies/referential_policy_spec.rb +++ b/spec/policies/referential_policy_spec.rb @@ -56,22 +56,52 @@ RSpec.describe ReferentialPolicy, type: :policy do          add_permissions('referentials.update', for_user: user)        end -      it 'allowed for unarchived referentials' do -        expect_it.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  } +          it 'does remove permission for archived referentials' do +            expect_it.not_to permit(user_context, record) +          end +        end        end -      it 'forbidden for archived referentials' do -        record.archived_at = 1.second.ago -        expect_it.not_to permit(user_context, record) +      context 'different organisations →' do +        it "forbids a user with a different 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 +            expect_it.not_to permit(user_context, record) +          end +        end +        end      end -    context 'permission absent →' do  -      it 'is forbidden' do -        expect_it.not_to permit(user_context, record) +    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 +            expect_it.not_to permit(user_context, record) +          end +        end        end      end -    end    permissions :unarchive? do @@ -81,22 +111,51 @@ RSpec.describe ReferentialPolicy, type: :policy do          add_permissions('referentials.update', for_user: user)        end -      it 'forbidden for unarchived referentials' 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  } +          it 'adds permission for archived referentials' do +            expect_it.to permit(user_context, record) +          end +        end        end -      it 'allowed for archived referentials' do -        record.archived_at = 1.second.ago -        expect_it.to permit(user_context, record) +      context 'different organisations →' do +        it "forbids a user with a different 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 'still forbids for archived referentials' do +            expect_it.not_to permit(user_context, record) +          end +        end +        end      end -    context 'permission absent →' do  -      it 'is forbidden' do -        record.archived_at = 1.second.ago -        expect_it.not_to permit(user_context, record) +    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 +            expect_it.not_to permit(user_context, record) +          end +        end        end      end -    end  end | 
