From 38ef3d777fc6ca6bc2c6b1a39df0259df6f7b74d Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Fri, 25 Oct 2024 14:32:59 -0600 Subject: [PATCH 1/4] Enable `NOT` negation for Vue MR list filters --- .../merge_requests/list/components/merge_requests_list_app.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue b/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue index 9bcff8bab4adf1..a1487d3945b48b 100644 --- a/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue +++ b/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue @@ -326,7 +326,7 @@ export default { title: TOKEN_TITLE_MILESTONE, icon: 'milestone', token: MilestoneToken, - operators: OPERATORS_IS, + operators: OPERATORS_IS_NOT, recentSuggestionsStorageKey: `${this.fullPath}-merge-requests-recent-tokens-milestone`, shouldSkipSort: true, fullPath: this.fullPath, -- GitLab From 7c9aa95be68a90c7500e0e45a58ac556314ba032 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Fri, 25 Oct 2024 15:59:27 -0600 Subject: [PATCH 2/4] Update specs to test for '=' selections --- .../merge_requests/user_filters_by_milestones_spec.rb | 10 +++++----- .../user_filters_by_multiple_criteria_spec.rb | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/spec/features/merge_requests/user_filters_by_milestones_spec.rb b/spec/features/merge_requests/user_filters_by_milestones_spec.rb index 3bbf77b361749f..e648b2e1ba8dcf 100644 --- a/spec/features/merge_requests/user_filters_by_milestones_spec.rb +++ b/spec/features/merge_requests/user_filters_by_milestones_spec.rb @@ -18,14 +18,14 @@ end it 'filters by no milestone' do - select_tokens 'Milestone', 'None', submit: true + select_tokens 'Milestone', '=', 'None', submit: true expect(page).to have_issuable_counts(open: 1, closed: 0, all: 1) expect(page).to have_css('.merge-request', count: 1) end it 'filters by a specific milestone' do - select_tokens 'Milestone', milestone.title, submit: true + select_tokens 'Milestone', '=', milestone.title, submit: true expect(page).to have_issuable_counts(open: 1, closed: 0, all: 1) expect(page).to have_css('.merge-request', count: 1) @@ -33,7 +33,7 @@ describe 'filters by upcoming milestone' do it 'does not show merge requests with no expiry' do - select_tokens 'Milestone', 'Upcoming', submit: true + select_tokens 'Milestone', '=', 'Upcoming', submit: true expect(page).to have_issuable_counts(open: 0, closed: 0, all: 0) expect(page).to have_css('.merge-request', count: 0) @@ -43,7 +43,7 @@ let(:milestone) { create(:milestone, project: project, due_date: Date.tomorrow) } it 'shows merge requests' do - select_tokens 'Milestone', 'Upcoming', submit: true + select_tokens 'Milestone', '=', 'Upcoming', submit: true expect(page).to have_issuable_counts(open: 1, closed: 0, all: 1) expect(page).to have_css('.merge-request', count: 1) @@ -54,7 +54,7 @@ let(:milestone) { create(:milestone, project: project, due_date: Date.yesterday) } it 'does not show any merge requests' do - select_tokens 'Milestone', 'Upcoming', submit: true + select_tokens 'Milestone', '=', 'Upcoming', submit: true expect(page).to have_issuable_counts(open: 0, closed: 0, all: 0) expect(page).to have_css('.merge-request', count: 0) diff --git a/spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb b/spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb index 54eef3370cfa21..67c980e7c1a95c 100644 --- a/spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb +++ b/spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb @@ -30,7 +30,7 @@ describe 'filtering by text, author, assignee, milestone, and label' do it 'filters by text, author, assignee, milestone, and label' do - select_tokens 'Author', '=', user.username, 'Assignee', '=', user.username, 'Milestone', milestone.title, 'Label', '=', wontfix.title + select_tokens 'Author', '=', user.username, 'Assignee', '=', user.username, 'Milestone', '=', milestone.title, 'Label', '=', wontfix.title send_keys 'Bug', :enter, :enter expect(page).to have_issuable_counts(open: 1, closed: 0, all: 1) -- GitLab From fcc4028d875f44c5bba3be4590ddb025eebf3f98 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Mon, 28 Oct 2024 23:31:16 -0600 Subject: [PATCH 3/4] Add test for '!=' selection --- .../merge_requests/user_filters_by_milestones_spec.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/spec/features/merge_requests/user_filters_by_milestones_spec.rb b/spec/features/merge_requests/user_filters_by_milestones_spec.rb index e648b2e1ba8dcf..2ce1ee156378d7 100644 --- a/spec/features/merge_requests/user_filters_by_milestones_spec.rb +++ b/spec/features/merge_requests/user_filters_by_milestones_spec.rb @@ -31,6 +31,16 @@ expect(page).to have_css('.merge-request', count: 1) end + it 'filters out a specific milestone' do + select_tokens 'Milestone', '!=', milestone.title, submit: true + + expect(page).to have_issuable_counts(open: 1, closed: 0, all: 1) + expect(page).to have_css('.merge-request', count: 1) + page.within('.issuable-list') do + expect(page).not_to have_text(milestone.title) + end + end + describe 'filters by upcoming milestone' do it 'does not show merge requests with no expiry' do select_tokens 'Milestone', '=', 'Upcoming', submit: true -- GitLab From 845e710952bd3cf47f10d75fbc99551482a2a812 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Wed, 30 Oct 2024 10:23:18 -0600 Subject: [PATCH 4/4] Remove operator IS_NOT, which causes incorrect UI text --- .../merge_requests/list/components/merge_requests_list_app.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue b/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue index a1487d3945b48b..ef2504a0135a05 100644 --- a/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue +++ b/app/assets/javascripts/merge_requests/list/components/merge_requests_list_app.vue @@ -326,7 +326,6 @@ export default { title: TOKEN_TITLE_MILESTONE, icon: 'milestone', token: MilestoneToken, - operators: OPERATORS_IS_NOT, recentSuggestionsStorageKey: `${this.fullPath}-merge-requests-recent-tokens-milestone`, shouldSkipSort: true, fullPath: this.fullPath, -- GitLab