summaryrefslogtreecommitdiff
path: root/spec/features/merge_requests/user_filters_by_approvals_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/features/merge_requests/user_filters_by_approvals_spec.rb')
-rw-r--r--spec/features/merge_requests/user_filters_by_approvals_spec.rb82
1 files changed, 82 insertions, 0 deletions
diff --git a/spec/features/merge_requests/user_filters_by_approvals_spec.rb b/spec/features/merge_requests/user_filters_by_approvals_spec.rb
new file mode 100644
index 00000000000..6dda9ca7952
--- /dev/null
+++ b/spec/features/merge_requests/user_filters_by_approvals_spec.rb
@@ -0,0 +1,82 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'Merge Requests > User filters', :js do
+ include FilteredSearchHelpers
+
+ let_it_be(:project) { create(:project, :public, :repository) }
+ let_it_be(:user) { project.creator }
+ let_it_be(:group_user) { create(:user) }
+ let_it_be(:first_user) { create(:user) }
+
+ before do
+ sign_in(user)
+ visit project_merge_requests_path(project)
+ end
+
+ context 'by "approved by"' do
+ let_it_be(:merge_request) { create(:merge_request, title: 'Bugfix3', source_project: project, source_branch: 'bugfix3') }
+
+ let_it_be(:merge_request_with_first_user_approval) do
+ create(:merge_request, source_project: project, title: 'Bugfix5').tap do |mr|
+ create(:approval, merge_request: mr, user: first_user)
+ end
+ end
+
+ let_it_be(:merge_request_with_group_user_approved) do
+ group = create(:group)
+ group.add_developer(group_user)
+
+ create(:merge_request, source_project: project, title: 'Bugfix6', source_branch: 'bugfix6').tap do |mr|
+ create(:approval, merge_request: mr, user: group_user)
+ end
+ end
+
+ context 'filtering by approved-by:none' do
+ it 'applies the filter' do
+ input_filtered_search('approved-by:=none')
+
+ expect(page).to have_issuable_counts(open: 1, closed: 0, all: 1)
+
+ expect(page).not_to have_content 'Bugfix5'
+ expect(page).not_to have_content 'Bugfix6'
+ expect(page).to have_content 'Bugfix3'
+ end
+ end
+
+ context 'filtering by approved-by:any' do
+ it 'applies the filter' do
+ input_filtered_search('approved-by:=any')
+
+ expect(page).to have_issuable_counts(open: 2, closed: 0, all: 2)
+
+ expect(page).to have_content 'Bugfix5'
+ expect(page).not_to have_content 'Bugfix3'
+ end
+ end
+
+ context 'filtering by approved-by:@username' do
+ it 'applies the filter' do
+ input_filtered_search("approved-by:=@#{first_user.username}")
+
+ expect(page).to have_issuable_counts(open: 1, closed: 0, all: 1)
+
+ expect(page).to have_content 'Bugfix5'
+ expect(page).not_to have_content 'Bugfix3'
+ end
+ end
+
+ context 'filtering by an approver from a group' do
+ it 'applies the filter' do
+ input_filtered_search("approved-by:=@#{group_user.username}")
+
+ expect(page).to have_issuable_counts(open: 1, closed: 0, all: 1)
+
+ expect(page).to have_content 'Bugfix6'
+ expect(page).not_to have_content 'Bugfix5'
+ expect(page).not_to have_content 'Bugfix3'
+ end
+ end
+ end
+end