diff options
Diffstat (limited to 'spec/policies/work_item_policy_spec.rb')
-rw-r--r-- | spec/policies/work_item_policy_spec.rb | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/spec/policies/work_item_policy_spec.rb b/spec/policies/work_item_policy_spec.rb index f8ec7d9f9bc..ed76ec1eccf 100644 --- a/spec/policies/work_item_policy_spec.rb +++ b/spec/policies/work_item_policy_spec.rb @@ -63,6 +63,27 @@ RSpec.describe WorkItemPolicy do end end + describe 'admin_work_item' do + context 'when user is reporter' do + let(:current_user) { reporter } + + it { is_expected.to be_allowed(:admin_work_item) } + end + + context 'when user is guest' do + let(:current_user) { guest } + + it { is_expected.to be_disallowed(:admin_work_item) } + + context 'when guest authored the work item' do + let(:work_item_subject) { authored_work_item } + let(:current_user) { guest_author } + + it { is_expected.to be_disallowed(:admin_work_item) } + end + end + end + describe 'update_work_item' do context 'when user is reporter' do let(:current_user) { reporter } @@ -160,4 +181,24 @@ RSpec.describe WorkItemPolicy do end end end + + describe 'set_work_item_metadata' do + context 'when user is reporter' do + let(:current_user) { reporter } + + it { is_expected.to be_allowed(:set_work_item_metadata) } + end + + context 'when user is guest' do + let(:current_user) { guest } + + it { is_expected.to be_disallowed(:set_work_item_metadata) } + + context 'when the work item is not persisted yet' do + let(:work_item_subject) { build(:work_item, project: project) } + + it { is_expected.to be_allowed(:set_work_item_metadata) } + end + end + end end |