diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-10-11 21:09:43 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-10-11 21:09:43 +0300 |
commit | 6e7be08ca5d6fac981284e7b1383b320a03d3a5d (patch) | |
tree | 5ae3da5b41f79107b86874c393a2799b7d1b1f3c /spec/support/shared_examples | |
parent | 14ae125e1c59ca3e9b535938707831c986dbbc43 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/support/shared_examples')
-rw-r--r-- | spec/support/shared_examples/quick_actions/issuable/max_issuable_examples.rb | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/spec/support/shared_examples/quick_actions/issuable/max_issuable_examples.rb b/spec/support/shared_examples/quick_actions/issuable/max_issuable_examples.rb new file mode 100644 index 00000000000..e725de8ad31 --- /dev/null +++ b/spec/support/shared_examples/quick_actions/issuable/max_issuable_examples.rb @@ -0,0 +1,85 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'does not exceed the issuable size limit' do + let(:user1) { create(:user) } + let(:user2) { create(:user) } + let(:user3) { create(:user) } + + before do + project.add_maintainer(user) + project.add_maintainer(user1) + project.add_maintainer(user2) + project.add_maintainer(user3) + end + + context 'when feature flag is turned on' do + context "when the number of users of issuable does exceed the limit" do + before do + stub_const("Issuable::MAX_NUMBER_OF_ASSIGNEES_OR_REVIEWERS", 2) + end + + it 'will not add more than the allowed number of users' do + allow_next_instance_of(update_service) do |service| + expect(service).not_to receive(:execute) + end + + note = described_class.new(project, user, opts.merge( + note: note_text, + noteable_type: noteable_type, + noteable_id: issuable.id, + confidential: false + )).execute + + expect(note.errors[:validation]).to match_array([validation_message]) + end + end + + context "when the number of users does not exceed the limit" do + before do + stub_const("Issuable::MAX_NUMBER_OF_ASSIGNEES_OR_REVIEWERS", 6) + end + + it 'calls execute and does not return an error' do + allow_next_instance_of(update_service) do |service| + expect(service).to receive(:execute).and_call_original + end + + note = described_class.new(project, user, opts.merge( + note: note_text, + noteable_type: noteable_type, + noteable_id: issuable.id, + confidential: false + )).execute + + expect(note.errors[:validation]).to be_empty + end + end + end + + context 'when feature flag is off' do + before do + stub_feature_flags(feature_flag_hash) + end + + context "when the number of users of issuable does exceed the limit" do + before do + stub_const("Issuable::MAX_NUMBER_OF_ASSIGNEES_OR_REVIEWERS", 2) + end + + it 'will not add more than the allowed number of users' do + allow_next_instance_of(MergeRequests::UpdateService) do |service| + expect(service).to receive(:execute).and_call_original + end + + note = described_class.new(project, user, opts.merge( + note: note_text, + noteable_type: 'MergeRequest', + noteable_id: issuable.id, + confidential: false + )).execute + + expect(note.errors[:validation]).to be_empty + end + end + end +end |