diff options
Diffstat (limited to 'spec/finders/merge_requests_finder_spec.rb')
-rw-r--r-- | spec/finders/merge_requests_finder_spec.rb | 66 |
1 files changed, 42 insertions, 24 deletions
diff --git a/spec/finders/merge_requests_finder_spec.rb b/spec/finders/merge_requests_finder_spec.rb index 5b86c891e47..4f86323c7c6 100644 --- a/spec/finders/merge_requests_finder_spec.rb +++ b/spec/finders/merge_requests_finder_spec.rb @@ -167,38 +167,56 @@ RSpec.describe MergeRequestsFinder do end end - describe ':label_name parameter' do - let(:common_labels) { create_list(:label, 3) } - let(:distinct_labels) { create_list(:label, 3) } - let(:merge_requests) do - common_attrs = { - source_project: project1, target_project: project1, author: user - } - distinct_labels.map do |label| - labels = [label, *common_labels] - create(:labeled_merge_request, :closed, labels: labels, **common_attrs) + shared_examples ':label_name parameter' do + describe ':label_name parameter' do + let(:common_labels) { create_list(:label, 3) } + let(:distinct_labels) { create_list(:label, 3) } + let(:merge_requests) do + common_attrs = { + source_project: project1, target_project: project1, author: user + } + distinct_labels.map do |label| + labels = [label, *common_labels] + create(:labeled_merge_request, :closed, labels: labels, **common_attrs) + end end - end - def find(label_name) - described_class.new(user, label_name: label_name).execute - end + def find(label_name) + described_class.new(user, label_name: label_name).execute + end + + it 'accepts a single label' do + found = find(distinct_labels.first.title) + common = find(common_labels.first.title) + + expect(found).to contain_exactly(merge_requests.first) + expect(common).to match_array(merge_requests) + end - it 'accepts a single label' do - found = find(distinct_labels.first.title) - common = find(common_labels.first.title) + it 'accepts an array of labels, all of which must match' do + all_distinct = find(distinct_labels.pluck(:title)) + all_common = find(common_labels.pluck(:title)) - expect(found).to contain_exactly(merge_requests.first) - expect(common).to match_array(merge_requests) + expect(all_distinct).to be_empty + expect(all_common).to match_array(merge_requests) + end + end + end + + context 'when `optimized_issuable_label_filter` feature flag is off' do + before do + stub_feature_flags(optimized_issuable_label_filter: false) end - it 'accepts an array of labels, all of which must match' do - all_distinct = find(distinct_labels.pluck(:title)) - all_common = find(common_labels.pluck(:title)) + it_behaves_like ':label_name parameter' + end - expect(all_distinct).to be_empty - expect(all_common).to match_array(merge_requests) + context 'when `optimized_issuable_label_filter` feature flag is on' do + before do + stub_feature_flags(optimized_issuable_label_filter: true) end + + it_behaves_like ':label_name parameter' end it 'filters by source project id' do |