diff --git a/app/assets/javascripts/pages/dashboard/merge_requests/index.js b/app/assets/javascripts/pages/dashboard/merge_requests/index.js index 13f57d0348084e33c4c284ccafcce710671a6d05..3145e31d41ca010cb4668621d8630c8fe184fc3b 100644 --- a/app/assets/javascripts/pages/dashboard/merge_requests/index.js +++ b/app/assets/javascripts/pages/dashboard/merge_requests/index.js @@ -1,11 +1,16 @@ -import { initNewResourceDropdown } from '~/vue_shared/components/new_resource_dropdown/init_new_resource_dropdown'; import { RESOURCE_TYPE_MERGE_REQUEST } from '~/vue_shared/components/new_resource_dropdown/constants'; import searchUserProjectsWithMergeRequestsEnabled from '~/vue_shared/components/new_resource_dropdown/graphql/search_user_projects_with_merge_requests_enabled.query.graphql'; -import { initMergeRequestsDashboard } from './page'; +import { initMergeRequestDashboard } from '~/merge_request_dashboard'; -initNewResourceDropdown({ - resourceType: RESOURCE_TYPE_MERGE_REQUEST, - query: searchUserProjectsWithMergeRequestsEnabled, -}); +initMergeRequestDashboard(document.getElementById('js-merge-request-dashboard')); + +requestIdleCallback(async () => { + const { initNewResourceDropdown } = await import( + '~/vue_shared/components/new_resource_dropdown/init_new_resource_dropdown' + ); -initMergeRequestsDashboard(); + initNewResourceDropdown({ + resourceType: RESOURCE_TYPE_MERGE_REQUEST, + query: searchUserProjectsWithMergeRequestsEnabled, + }); +}); diff --git a/app/assets/javascripts/pages/dashboard/merge_requests_v2/index.js b/app/assets/javascripts/pages/dashboard/merge_requests_v2/index.js deleted file mode 100644 index 3145e31d41ca010cb4668621d8630c8fe184fc3b..0000000000000000000000000000000000000000 --- a/app/assets/javascripts/pages/dashboard/merge_requests_v2/index.js +++ /dev/null @@ -1,16 +0,0 @@ -import { RESOURCE_TYPE_MERGE_REQUEST } from '~/vue_shared/components/new_resource_dropdown/constants'; -import searchUserProjectsWithMergeRequestsEnabled from '~/vue_shared/components/new_resource_dropdown/graphql/search_user_projects_with_merge_requests_enabled.query.graphql'; -import { initMergeRequestDashboard } from '~/merge_request_dashboard'; - -initMergeRequestDashboard(document.getElementById('js-merge-request-dashboard')); - -requestIdleCallback(async () => { - const { initNewResourceDropdown } = await import( - '~/vue_shared/components/new_resource_dropdown/init_new_resource_dropdown' - ); - - initNewResourceDropdown({ - resourceType: RESOURCE_TYPE_MERGE_REQUEST, - query: searchUserProjectsWithMergeRequestsEnabled, - }); -}); diff --git a/app/assets/javascripts/super_sidebar/components/global_search/store/getters.js b/app/assets/javascripts/super_sidebar/components/global_search/store/getters.js index 0d61a24f7465600a14bebf700f82a2bb112f038f..4c69e5d182ce75a1ab2c34af06973fef2f391bad 100644 --- a/app/assets/javascripts/super_sidebar/components/global_search/store/getters.js +++ b/app/assets/javascripts/super_sidebar/components/global_search/store/getters.js @@ -6,9 +6,6 @@ import { MERGE_REQUEST_CATEGORY, MSG_ISSUES_ASSIGNED_TO_ME, MSG_ISSUES_IVE_CREATED, - MSG_MR_ASSIGNED_TO_ME, - MSG_MR_IM_REVIEWER, - MSG_MR_IVE_CREATED, MSG_IN_ALL_GITLAB, MSG_MR_IM_WORKING_ON, PROJECTS_CATEGORY, @@ -111,32 +108,13 @@ export const defaultSearchOptions = (state, getters) => { }, ]; - const mergeRequestDashboardEnabled = window.gon.features?.mergeRequestDashboard; - let mergeRequests = [ + return [ + ...(getters.scopedIssuesPath ? issues : []), { - text: MSG_MR_ASSIGNED_TO_ME, - href: `${getters.scopedMRPath}/?assignee_username=${userName}`, - }, - { - text: MSG_MR_IM_REVIEWER, - href: `${getters.scopedMRPath}/?reviewer_username=${userName}`, - }, - { - text: MSG_MR_IVE_CREATED, - href: `${getters.scopedMRPath}/?author_username=${userName}`, + text: MSG_MR_IM_WORKING_ON, + href: getters.scopedMRPath, }, ]; - - if (mergeRequestDashboardEnabled) { - mergeRequests = [ - { - text: MSG_MR_IM_WORKING_ON, - href: getters.scopedMRPath, - }, - ]; - } - - return [...(getters.scopedIssuesPath ? issues : []), ...mergeRequests]; }; export const projectUrl = (state) => { diff --git a/app/assets/javascripts/super_sidebar/components/merge_request_menu.vue b/app/assets/javascripts/super_sidebar/components/merge_request_menu.vue deleted file mode 100644 index e6935809f14a77f2184835e69ede13ce8e31b5dc..0000000000000000000000000000000000000000 --- a/app/assets/javascripts/super_sidebar/components/merge_request_menu.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - diff --git a/app/assets/javascripts/super_sidebar/components/user_counts.vue b/app/assets/javascripts/super_sidebar/components/user_counts.vue index a497770f6b8a52553b8d0bb63c00a419eda5ccba..4bc794cf73b1d5c6a154b7cf621c0ece19aa25a0 100644 --- a/app/assets/javascripts/super_sidebar/components/user_counts.vue +++ b/app/assets/javascripts/super_sidebar/components/user_counts.vue @@ -9,13 +9,11 @@ import { } from '~/super_sidebar/user_counts_manager'; import { fetchUserCounts } from '~/super_sidebar/user_counts_fetch'; import Counter from './counter.vue'; -import MergeRequestMenu from './merge_request_menu.vue'; export default { name: 'UserCounts', components: { Counter, - MergeRequestMenu, }, directives: { GlTooltip: GlTooltipDirective, @@ -33,14 +31,10 @@ export default { }, data() { return { - mrMenuShown: false, userCounts, }; }, computed: { - mergeRequestMenuComponent() { - return this.sidebarData.merge_request_menu ? 'merge-request-menu' : 'div'; - }, issuesTitle() { return n__('%d assigned issue', '%d assigned issues', this.userCounts.assigned_issues); }, @@ -66,14 +60,6 @@ export default { beforeDestroy() { destroyUserCountsManager(); }, - methods: { - onMergeRequestMenuShown() { - this.mrMenuShown = true; - }, - onMergeRequestMenuHidden() { - this.mrMenuShown = false; - }, - }, }; @@ -92,20 +78,11 @@ export default { data-track-label="issues_link" data-track-property="nav_core_menu" /> - +
- +
}} -**Introduced** in GitLab 17.4. -**Status**: Experiment. -{{< /details >}} - -Merge requests the current user is an assignee or a reviewer of.Ignored if `merge_request_dashboard` feature flag is disabled. +Merge requests the current user is an assignee or a reviewer of. Returns [`MergeRequestConnection`](#mergerequestconnection). diff --git a/ee/app/services/merge_requests/destroy_requested_changes_service.rb b/ee/app/services/merge_requests/destroy_requested_changes_service.rb index 32c69878d61d25a7d6bb362b3cce63e36f1cd6b4..22ab2135e4e47070cc7a45c4548ca9d31ea0b992 100644 --- a/ee/app/services/merge_requests/destroy_requested_changes_service.rb +++ b/ee/app/services/merge_requests/destroy_requested_changes_service.rb @@ -13,12 +13,10 @@ def execute(merge_request) trigger_merge_request_reviewers_updated(merge_request) trigger_merge_request_merge_status_updated(merge_request) - if current_user.merge_request_dashboard_enabled? - invalidate_cache_counts(merge_request, users: merge_request.assignees) - invalidate_cache_counts(merge_request, users: merge_request.reviewers) + invalidate_cache_counts(merge_request, users: merge_request.assignees) + invalidate_cache_counts(merge_request, users: merge_request.reviewers) - current_user.invalidate_merge_request_cache_counts - end + current_user.invalidate_merge_request_cache_counts success else diff --git a/ee/spec/features/dashboards/merge_requests_spec.rb b/ee/spec/features/dashboards/merge_requests_spec.rb index 621b85050b7632ea909f24e521dfd429ecd80b88..7c5f74f194ebedeaf9b852ad1c2a9c54bbc9cf42 100644 --- a/ee/spec/features/dashboards/merge_requests_spec.rb +++ b/ee/spec/features/dashboards/merge_requests_spec.rb @@ -4,7 +4,7 @@ RSpec.describe 'Dashboard merge requests', feature_category: :code_review_workflow do let_it_be(:user) { create(:user) } - let_it_be(:page_path) { merge_requests_dashboard_path(assignee_username: [user.username]) } + let_it_be(:page_path) { merge_requests_search_dashboard_path(assignee_username: [user.username]) } context 'when quarantined test', quarantine: "https://gitlab.com/gitlab-org/gitlab/-/issues/512586" do it_behaves_like 'dashboard ultimate trial callout' diff --git a/ee/spec/helpers/ee/sidebars_helper_spec.rb b/ee/spec/helpers/ee/sidebars_helper_spec.rb index cf4d417c2e9122b05f7c988118e8f45145bece01..5166db7dc0679d1ae12f962cca17f2c315e0e946 100644 --- a/ee/spec/helpers/ee/sidebars_helper_spec.rb +++ b/ee/spec/helpers/ee/sidebars_helper_spec.rb @@ -297,22 +297,12 @@ expect(super_sidebar_context).to match(hash_including({ sign_out_link: '/users/sign_out', issues_dashboard_path: "/dashboard/issues?assignee_username=#{user.username}", - merge_request_dashboard_path: nil, + merge_request_dashboard_path: '/dashboard/merge_requests', todos_dashboard_path: '/dashboard/todos', projects_path: '/dashboard/projects', groups_path: '/dashboard/groups' })) end - - context 'with merge_request_dashboard feature flag enabled' do - before do - stub_feature_flags(merge_request_dashboard: user) - end - - it 'has merge_request_dashboard_path' do - expect(super_sidebar_context[:merge_request_dashboard_path]).to eq('/dashboard/merge_requests') - end - end end describe '#super_sidebar_default_pins', :experiment do diff --git a/ee/spec/services/merge_requests/destroy_requested_changes_service_spec.rb b/ee/spec/services/merge_requests/destroy_requested_changes_service_spec.rb index d0ea70f38470712d49a686556b86155b58b8622b..4e53bf4cb0179014c22c43e9bca2acea371969d9 100644 --- a/ee/spec/services/merge_requests/destroy_requested_changes_service_spec.rb +++ b/ee/spec/services/merge_requests/destroy_requested_changes_service_spec.rb @@ -86,28 +86,22 @@ let(:action) { result } end - context 'when merge_request_dashboard feature flag is enabled' do - before do - stub_feature_flags(merge_request_dashboard: true) - end + it 'invalidates cache counts for all assignees' do + expect(merge_request.assignees).to all(receive(:invalidate_merge_request_cache_counts)) - it 'invalidates cache counts for all assignees' do - expect(merge_request.assignees).to all(receive(:invalidate_merge_request_cache_counts)) - - expect(result[:status]).to eq :success - end + expect(result[:status]).to eq :success + end - it 'invalidates cache counts for all reviewers' do - expect(merge_request.reviewers).to all(receive(:invalidate_merge_request_cache_counts)) + it 'invalidates cache counts for all reviewers' do + expect(merge_request.reviewers).to all(receive(:invalidate_merge_request_cache_counts)) - expect(result[:status]).to eq :success - end + expect(result[:status]).to eq :success + end - it 'invalidates cache counts for current user' do - expect(user).to receive(:invalidate_merge_request_cache_counts) + it 'invalidates cache counts for current user' do + expect(user).to receive(:invalidate_merge_request_cache_counts) - expect(result[:status]).to eq :success - end + expect(result[:status]).to eq :success end end end diff --git a/lib/gitlab/gon_helper.rb b/lib/gitlab/gon_helper.rb index 15f090c3a05254e533f13e277e6ad4255b6996be..63d4fa79cc7bd480d40cc1e4806332a13cce79d7 100644 --- a/lib/gitlab/gon_helper.rb +++ b/lib/gitlab/gon_helper.rb @@ -97,7 +97,6 @@ def add_gon_feature_flags # To be removed with https://gitlab.com/gitlab-org/gitlab/-/issues/399248 push_frontend_feature_flag(:remove_monitor_metrics) push_frontend_feature_flag(:work_item_view_for_issues) - push_frontend_feature_flag(:merge_request_dashboard, current_user, type: :beta) push_frontend_feature_flag(:new_project_creation_form, current_user, type: :wip) push_frontend_feature_flag(:work_items_client_side_boards, current_user) push_frontend_feature_flag(:glql_work_items, current_user, type: :wip) diff --git a/lib/sidebars/your_work/menus/merge_requests_menu.rb b/lib/sidebars/your_work/menus/merge_requests_menu.rb index d40e24a7a9bcbb848799a45fe537c1a1ec157b7f..8ca4e2c57f688b42829c0413ad1eb987725dbe7d 100644 --- a/lib/sidebars/your_work/menus/merge_requests_menu.rb +++ b/lib/sidebars/your_work/menus/merge_requests_menu.rb @@ -9,11 +9,7 @@ class MergeRequestsMenu < ::Sidebars::Menu override :link def link - unless context.current_user.merge_request_dashboard_enabled? - assignee_username = @context.current_user.username - end - - merge_requests_dashboard_path(assignee_username: assignee_username) + merge_requests_dashboard_path end override :title @@ -28,12 +24,7 @@ def sprite_icon override :configure_menu_items def configure_menu_items - return false if context.current_user.merge_request_dashboard_enabled? - - add_item(assigned_mrs_menu_item) - add_item(reviewer_mrs_menu_item) - - true + false end override :render? @@ -55,34 +46,6 @@ def has_pill? def pill_count_field "total_merge_requests" end - - private - - def assigned_mrs_menu_item - link = merge_requests_dashboard_path(assignee_username: context.current_user.username) - - ::Sidebars::MenuItem.new( - title: _('Assigned'), - link: link, - active_routes: { page: link }, - has_pill: true, - pill_count_field: "assigned_merge_requests", - item_id: :merge_requests_assigned - ) - end - - def reviewer_mrs_menu_item - link = merge_requests_dashboard_path(reviewer_username: context.current_user.username) - - ::Sidebars::MenuItem.new( - title: _('Review requests'), - link: link, - active_routes: { page: link }, - has_pill: true, - pill_count_field: "review_requested_merge_requests", - item_id: :merge_requests_to_review - ) - end end end end diff --git a/locale/gitlab.pot b/locale/gitlab.pot index bc8a12e632bd739a14493881808e4ad8275debd7..2436bb80b4eac090814349a198cef77c12d32805 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -54679,9 +54679,6 @@ msgstr "" msgid "Review requested from %{reviewerName}" msgstr "" -msgid "Review requests" -msgstr "" - msgid "Review started" msgstr "" diff --git a/spec/controllers/dashboard_controller_spec.rb b/spec/controllers/dashboard_controller_spec.rb index 8d92fcbe60b2e0d250949c1cbcd19766c6f21808..1e43e10ab0025304a8ec71a0517aabb88082a161 100644 --- a/spec/controllers/dashboard_controller_spec.rb +++ b/spec/controllers/dashboard_controller_spec.rb @@ -56,69 +56,6 @@ end end - describe 'GET merge requests' do - it_behaves_like 'issuables list meta-data', :merge_request, :merge_requests - it_behaves_like 'issuables requiring filter', :merge_requests - - context 'when an ActiveRecord::QueryCanceled is raised' do - before do - allow_next_instance_of(Gitlab::IssuableMetadata) do |instance| - allow(instance).to receive(:data).and_raise(ActiveRecord::QueryCanceled) - end - end - - it 'sets :search_timeout_occurred' do - get :merge_requests, params: { author_id: user.id } - - expect(response).to have_gitlab_http_status(:ok) - expect(assigns(:search_timeout_occurred)).to eq(true) - end - - context 'rendering views' do - render_views - - it 'shows error message' do - get :merge_requests, params: { author_id: user.id } - - expect(response.body).to have_content('Too many results to display. Edit your search or add a filter.') - end - - it 'does not display MR counts in nav' do - get :merge_requests, params: { author_id: user.id } - - expect(response.body).to have_content('Open Merged Closed All') - expect(response.body).not_to have_content('Open 0 Merged 0 Closed 0 All 0') - end - end - - it 'logs the exception' do - expect(Gitlab::ErrorTracking).to receive(:track_exception).and_call_original - - get :merge_requests, params: { author_id: user.id } - end - end - - context 'when an ActiveRecord::QueryCanceled is not raised' do - it 'does not set :search_timeout_occurred' do - get :merge_requests, params: { author_id: user.id } - - expect(response).to have_gitlab_http_status(:ok) - expect(assigns(:search_timeout_occurred)).to eq(nil) - end - - context 'rendering views' do - render_views - - it 'displays MR counts in nav' do - get :merge_requests, params: { author_id: user.id } - - expect(response.body).to have_content('Open 0 Merged 0 Closed 0 All 0') - expect(response.body).not_to have_content('Open Merged Closed All') - end - end - end - end - describe 'GET merge requests search' do it_behaves_like 'issuables requiring filter', :search_merge_requests diff --git a/spec/controllers/root_controller_spec.rb b/spec/controllers/root_controller_spec.rb index 789e2bf8a88db468dff332994e899b2d5ea7dce5..91dea503a904b3f8e3e2909f8cd04a4caf592a58 100644 --- a/spec/controllers/root_controller_spec.rb +++ b/spec/controllers/root_controller_spec.rb @@ -204,48 +204,20 @@ expect { get :index }.not_to trigger_internal_events('user_views_homepage') end - context 'when the `merge_request_dashboard` feature flag is enabled' do - before do - stub_feature_flags(merge_request_dashboard: true) - end - - it 'passes the correct data to the view' do - get :index - - expect(assigns[:homepage_app_data]).to eq({ - review_requested_path: "/dashboard/merge_requests", - activity_path: "/dashboard/activity", - assigned_merge_requests_path: "/dashboard/merge_requests", - assigned_work_items_path: "/dashboard/issues?assignee_username=#{user.username}", - authored_work_items_path: "/dashboard/issues?author_username=#{user.username}", - duo_code_review_bot_username: duo_code_review_bot.username, - merge_requests_review_requested_title: "Review requested", - merge_requests_your_merge_requests_title: "Your merge requests", - last_push_event: nil - }) - end - end + it 'passes the correct data to the view' do + get :index - context 'when the `merge_request_dashboard` feature flag is disabled' do - before do - stub_feature_flags(merge_request_dashboard: false) - end - - it 'passes the correct data to the view' do - get :index - - expect(assigns[:homepage_app_data]).to eq({ - review_requested_path: "/dashboard/merge_requests?reviewer_username=#{user.username}", - activity_path: "/dashboard/activity", - assigned_merge_requests_path: "/dashboard/merge_requests?assignee_username=#{user.username}", - assigned_work_items_path: "/dashboard/issues?assignee_username=#{user.username}", - authored_work_items_path: "/dashboard/issues?author_username=#{user.username}", - duo_code_review_bot_username: duo_code_review_bot.username, - merge_requests_review_requested_title: "Review requested", - merge_requests_your_merge_requests_title: "Your merge requests", - last_push_event: nil - }) - end + expect(assigns[:homepage_app_data]).to eq({ + review_requested_path: "/dashboard/merge_requests", + activity_path: "/dashboard/activity", + assigned_merge_requests_path: "/dashboard/merge_requests", + assigned_work_items_path: "/dashboard/issues?assignee_username=#{user.username}", + authored_work_items_path: "/dashboard/issues?author_username=#{user.username}", + duo_code_review_bot_username: duo_code_review_bot.username, + merge_requests_review_requested_title: "Review requested", + merge_requests_your_merge_requests_title: "Your merge requests", + last_push_event: nil + }) end end diff --git a/spec/features/dashboard/action_focused_merge_request_dashboard_spec.rb b/spec/features/dashboard/action_focused_merge_request_dashboard_spec.rb index bc8bdc99776a6de82ad2415738d9978660418901..f4217e19d8c172d233efb15cf0878d04129e6d6c 100644 --- a/spec/features/dashboard/action_focused_merge_request_dashboard_spec.rb +++ b/spec/features/dashboard/action_focused_merge_request_dashboard_spec.rb @@ -35,8 +35,6 @@ end before do - stub_feature_flags(merge_request_dashboard: true) - sign_in(current_user) visit merge_requests_dashboard_path diff --git a/spec/features/dashboard/issuables_counter_spec.rb b/spec/features/dashboard/issuables_counter_spec.rb index a8e50181ac3310bc40bc8d40bb3cc73a52f1b58c..d1afaa473399b6c85eb44470b631eb95df858b31 100644 --- a/spec/features/dashboard/issuables_counter_spec.rb +++ b/spec/features/dashboard/issuables_counter_spec.rb @@ -32,14 +32,6 @@ visit merge_requests_path expect_merge_request_count(1) - - merge_request.update!(assignees: []) - - user.invalidate_cache_counts - - visit merge_requests_path - - expect_merge_request_count(0) end def issues_path @@ -60,11 +52,11 @@ def expect_issue_count(count) end def expect_merge_request_count(count) - dashboard_count = find('.gl-tabs-nav li a.active') + dashboard_count = find('.top-area .gl-tabs-nav li a.active') expect(dashboard_count).to have_content(count) within_testid('super-sidebar') do - expect(page).to have_button("#{count} merge request") + expect(page).to have_link("#{count} merge request") end end end diff --git a/spec/features/dashboard/merge_requests_spec.rb b/spec/features/dashboard/merge_requests_spec.rb index 8d17c9693222db7f1dfbd0e49ed7e07fe5728713..1522864076c3d1a4dad8dbc0a802a5fd81cb73dd 100644 --- a/spec/features/dashboard/merge_requests_spec.rb +++ b/spec/features/dashboard/merge_requests_spec.rb @@ -30,16 +30,10 @@ describe 'sidebar' do it 'has nav items for assigned MRs and review requests' do - visit merge_requests_dashboard_path(assignee_username: user) - - within('#super-sidebar') do - expect(page).to have_css("a[data-track-label='merge_requests_assigned'][aria-current='page']") - end - - click_link 'Review requests' + visit merge_requests_dashboard_path within('#super-sidebar') do - expect(page).to have_css("a[data-track-label='merge_requests_to_review'][aria-current='page']") + expect(page).to have_css("a[data-track-label='merge_requests_menu'][aria-current='page']") end end end @@ -189,11 +183,8 @@ visit merge_requests_dashboard_path(assignee_username: current_user.username) end - it 'includes assigned and reviewers in badge' do - within('#merge-requests') do - expect(page).to have_css("a", text: 'Assigned 3') - expect(page).to have_css("a", text: 'Review requests 2') - end + it 'includes all merge requests count in badge' do + expect(page).to have_link('Merge requests 8') end it 'shows assigned merge requests' do diff --git a/spec/finders/merge_requests_finder_spec.rb b/spec/finders/merge_requests_finder_spec.rb index 94e09d95c23ace06f197161504fbb63b63fbafc2..9dfcb6da35f42e8be1f903d012483968a0d6d730 100644 --- a/spec/finders/merge_requests_finder_spec.rb +++ b/spec/finders/merge_requests_finder_spec.rb @@ -771,23 +771,11 @@ def find(label_name) end context 'assignee or reviewer filtering' do - let(:dashboard_flag_enabled) { true } let(:params) { { assigned_user_id: user.id } } let(:expected_mrs) { [merge_request1, merge_request2, merge_request3] } subject { described_class.new(user, params).execute } - before do - stub_feature_flags(merge_request_dashboard: dashboard_flag_enabled) - end - - context 'when merge_request_dashboard feature flag is disabled' do - let(:dashboard_flag_enabled) { false } - let(:expected_mrs) { [merge_request1, merge_request2, merge_request3, merge_request4, merge_request5] } - - it { is_expected.to contain_exactly(*expected_mrs) } - end - it { is_expected.to contain_exactly(*expected_mrs) } end @@ -798,8 +786,6 @@ def find(label_name) subject { described_class.new(user, params).execute } before do - stub_feature_flags(merge_request_dashboard: true) - merge_request1.merge_request_reviewers.update_all(state: :reviewed) end @@ -813,8 +799,6 @@ def find(label_name) subject { described_class.new(user2, params).execute } before do - stub_feature_flags(merge_request_dashboard: true) - merge_request1.merge_request_reviewers.update_all(state: :reviewed) end @@ -828,8 +812,6 @@ def find(label_name) subject { described_class.new(user, params).execute } before do - stub_feature_flags(merge_request_dashboard: true) - merge_request1.merge_request_reviewers.update_all(state: :requested_changes) merge_request3.merge_request_reviewers.update_all(state: :reviewed) end diff --git a/spec/frontend/super_sidebar/components/global_search/components/global_search_default_issuables_spec.js b/spec/frontend/super_sidebar/components/global_search/components/global_search_default_issuables_spec.js index 2e9dae9619803e33e7c1bd5c84ecc954581f35d8..b752288f5e82ecaf078710e2556249f185ad5568 100644 --- a/spec/frontend/super_sidebar/components/global_search/components/global_search_default_issuables_spec.js +++ b/spec/frontend/super_sidebar/components/global_search/components/global_search_default_issuables_spec.js @@ -9,9 +9,6 @@ import { useMockInternalEventsTracking } from 'helpers/tracking_internal_events_ import { EVENT_CLICK_ISSUES_ASSIGNED_TO_ME_IN_COMMAND_PALETTE, EVENT_CLICK_ISSUES_I_CREATED_IN_COMMAND_PALETTE, - EVENT_CLICK_MERGE_REQUESTS_ASSIGNED_TO_ME_IN_COMMAND_PALETTE, - EVENT_CLICK_MERGE_REQUESTS_THAT_IM_A_REVIEWER_IN_COMMAND_PALETTE, - EVENT_CLICK_MERGE_REQUESTS_I_CREATED_IN_COMMAND_PALETTE, } from '~/super_sidebar/components/global_search/tracking_constants'; import { MOCK_SEARCH_CONTEXT, @@ -148,12 +145,9 @@ describe('GlobalSearchDefaultPlaces', () => { const { bindInternalEventDocument } = useMockInternalEventsTracking(); it.each` - eventTrigger | event - ${'Issues assigned to me'} | ${EVENT_CLICK_ISSUES_ASSIGNED_TO_ME_IN_COMMAND_PALETTE} - ${"Issues I've created"} | ${EVENT_CLICK_ISSUES_I_CREATED_IN_COMMAND_PALETTE} - ${'Merge requests assigned to me'} | ${EVENT_CLICK_MERGE_REQUESTS_ASSIGNED_TO_ME_IN_COMMAND_PALETTE} - ${"Merge requests that I'm a reviewer"} | ${EVENT_CLICK_MERGE_REQUESTS_THAT_IM_A_REVIEWER_IN_COMMAND_PALETTE} - ${"Merge requests I've created"} | ${EVENT_CLICK_MERGE_REQUESTS_I_CREATED_IN_COMMAND_PALETTE} + eventTrigger | event + ${'Issues assigned to me'} | ${EVENT_CLICK_ISSUES_ASSIGNED_TO_ME_IN_COMMAND_PALETTE} + ${"Issues I've created"} | ${EVENT_CLICK_ISSUES_I_CREATED_IN_COMMAND_PALETTE} `('triggers and tracks command dropdown $event', ({ eventTrigger, event }) => { const { trackEventSpy } = bindInternalEventDocument(wrapper.element); // Update to emit the action event from each dropdown item rather than the group diff --git a/spec/frontend/super_sidebar/components/global_search/mock_data.js b/spec/frontend/super_sidebar/components/global_search/mock_data.js index 3903a995adf7ea1482742c54e93e604c796c1fa0..d7c063f3c1d9ff73eea86eea9ac2dc95bb286a70 100644 --- a/spec/frontend/super_sidebar/components/global_search/mock_data.js +++ b/spec/frontend/super_sidebar/components/global_search/mock_data.js @@ -9,9 +9,6 @@ import { GROUPS_CATEGORY, MSG_ISSUES_ASSIGNED_TO_ME, MSG_ISSUES_IVE_CREATED, - MSG_MR_ASSIGNED_TO_ME, - MSG_MR_IM_REVIEWER, - MSG_MR_IVE_CREATED, MSG_IN_ALL_GITLAB, MSG_MR_IM_WORKING_ON, } from '~/vue_shared/global_search/constants'; @@ -88,28 +85,6 @@ export const MOCK_PROJECT_SEARCH_CONTEXT = { }; export const MOCK_DEFAULT_SEARCH_OPTIONS = [ - { - text: MSG_ISSUES_ASSIGNED_TO_ME, - href: `${MOCK_ISSUE_PATH}/?assignee_username=${MOCK_USERNAME}`, - }, - { - text: MSG_ISSUES_IVE_CREATED, - href: `${MOCK_ISSUE_PATH}/?author_username=${MOCK_USERNAME}`, - }, - { - text: MSG_MR_ASSIGNED_TO_ME, - href: `${MOCK_MR_PATH}/?assignee_username=${MOCK_USERNAME}`, - }, - { - text: MSG_MR_IM_REVIEWER, - href: `${MOCK_MR_PATH}/?reviewer_username=${MOCK_USERNAME}`, - }, - { - text: MSG_MR_IVE_CREATED, - href: `${MOCK_MR_PATH}/?author_username=${MOCK_USERNAME}`, - }, -]; -export const MOCK_DASHBOARD_FLAG_ENABLED_SEARCH_OPTIONS = [ { text: MSG_ISSUES_ASSIGNED_TO_ME, href: `${MOCK_ISSUE_PATH}/?assignee_username=${MOCK_USERNAME}`, diff --git a/spec/frontend/super_sidebar/components/global_search/store/getters_spec.js b/spec/frontend/super_sidebar/components/global_search/store/getters_spec.js index b69bad0c51cbe32d4832bd3227c35e37c410b91f..63d859112f119a627646582695b94b387887064c 100644 --- a/spec/frontend/super_sidebar/components/global_search/store/getters_spec.js +++ b/spec/frontend/super_sidebar/components/global_search/store/getters_spec.js @@ -21,7 +21,6 @@ import { MOCK_GROUPED_AUTOCOMPLETE_OPTIONS, MOCK_SORTED_AUTOCOMPLETE_OPTIONS, MOCK_SCOPED_SEARCH_OPTIONS_DEF, - MOCK_DASHBOARD_FLAG_ENABLED_SEARCH_OPTIONS, } from '../mock_data'; describe('Global Search Store Getters', () => { @@ -268,22 +267,6 @@ describe('Global Search Store Getters', () => { MOCK_DEFAULT_SEARCH_OPTIONS.slice(2, MOCK_DEFAULT_SEARCH_OPTIONS.length), ); }); - - describe('when feature flag mergeRequestDashboard is enabled', () => { - beforeEach(() => { - window.gon.features = { mergeRequestDashboard: true }; - }); - - afterEach(() => { - window.gon.features = {}; - }); - - it('returns the correct array', () => { - expect(getters.defaultSearchOptions(state, mockGetters)).toStrictEqual( - MOCK_DASHBOARD_FLAG_ENABLED_SEARCH_OPTIONS, - ); - }); - }); }); describe('without a user', () => { diff --git a/spec/frontend/super_sidebar/components/merge_request_menu_spec.js b/spec/frontend/super_sidebar/components/merge_request_menu_spec.js deleted file mode 100644 index 53d47397eb35085847aa56fe8e12f2b184cad4b6..0000000000000000000000000000000000000000 --- a/spec/frontend/super_sidebar/components/merge_request_menu_spec.js +++ /dev/null @@ -1,70 +0,0 @@ -import { GlBadge, GlDisclosureDropdown } from '@gitlab/ui'; -import { mountExtended } from 'helpers/vue_test_utils_helper'; -import MergeRequestMenu from '~/super_sidebar/components/merge_request_menu.vue'; -import { userCounts } from '~/super_sidebar/user_counts_manager'; -import { mergeRequestMenuGroup } from '../mock_data'; - -describe('MergeRequestMenu component', () => { - let wrapper; - - const findGlBadge = (at) => wrapper.findAllComponents(GlBadge).at(at); - const findGlDisclosureDropdown = () => wrapper.findComponent(GlDisclosureDropdown); - const findLink = (name) => wrapper.findByRole('link', { name }); - - const createWrapper = (items) => { - wrapper = mountExtended(MergeRequestMenu, { - propsData: { - items, - }, - }); - }; - - describe('default', () => { - beforeEach(() => { - createWrapper(mergeRequestMenuGroup); - }); - - it('passes the items to the disclosure dropdown', () => { - expect(findGlDisclosureDropdown().props('items')).toBe(mergeRequestMenuGroup); - }); - - it.each(mergeRequestMenuGroup[0].items)('renders item text and count in link', (item) => { - const index = mergeRequestMenuGroup[0].items.indexOf(item); - const { text, href, count, extraAttrs } = mergeRequestMenuGroup[0].items[index]; - const link = findLink(new RegExp(text)); - - expect(link.text()).toContain(text); - expect(link.text()).toContain(String(count)); - expect(link.attributes('href')).toBe(href); - expect(link.attributes('data-track-action')).toBe(extraAttrs['data-track-action']); - expect(link.attributes('data-track-label')).toBe(extraAttrs['data-track-label']); - expect(link.attributes('data-track-property')).toBe(extraAttrs['data-track-property']); - expect(link.attributes('class')).toContain(extraAttrs.class); - }); - - it('renders item count string in badge', () => { - const { count } = mergeRequestMenuGroup[0].items[0]; - expect(findGlBadge(0).text()).toBe(String(count)); - }); - - it('renders 0 string when count is empty', () => { - expect(findGlBadge(1).text()).toBe(String(0)); - }); - - it('renders value from userCounts if `userCount` prop is defined', () => { - userCounts.assigned_merge_requests = 5; - mergeRequestMenuGroup[0].items[0].userCount = 'assigned_merge_requests'; - createWrapper(mergeRequestMenuGroup); - - expect(findGlBadge(0).text()).toBe(String(userCounts.assigned_merge_requests)); - }); - - it('renders item count if unknown `userCount` prop is defined', () => { - const { count } = mergeRequestMenuGroup[0].items[0]; - mergeRequestMenuGroup[0].items[0].userCount = 'foobar'; - createWrapper(mergeRequestMenuGroup); - - expect(findGlBadge(0).text()).toBe(String(count)); - }); - }); -}); diff --git a/spec/frontend/super_sidebar/components/user_counts_spec.js b/spec/frontend/super_sidebar/components/user_counts_spec.js index 33e3f0519a9d233e686298c17b6a0782f4b599ce..a07836a01ace1808c1adfdb0ed18d198818da74d 100644 --- a/spec/frontend/super_sidebar/components/user_counts_spec.js +++ b/spec/frontend/super_sidebar/components/user_counts_spec.js @@ -1,7 +1,6 @@ import { nextTick } from 'vue'; import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; import Counter from '~/super_sidebar/components/counter.vue'; -import MergeRequestMenu from '~/super_sidebar/components/merge_request_menu.vue'; import UserCounts from '~/super_sidebar/components/user_counts.vue'; import { userCounts, useCachedUserCounts } from '~/super_sidebar/user_counts_manager'; import { fetchUserCounts } from '~/super_sidebar/user_counts_fetch'; @@ -19,7 +18,6 @@ describe('UserCounts component', () => { const findIssuesCounter = () => wrapper.findByTestId('issues-shortcut-button'); const findMRsCounter = () => wrapper.findByTestId('merge-requests-shortcut-button'); const findTodosCounter = () => wrapper.findByTestId('todos-shortcut-button'); - const findMergeRequestMenu = () => wrapper.findComponent(MergeRequestMenu); const createWrapper = (props = {}) => { wrapper = shallowMountExtended(UserCounts, { @@ -96,16 +94,6 @@ describe('UserCounts component', () => { expect(findTodosCounter().props('count')).toBe(1); }); }); - - it('passes the "Merge request" menu groups to the merge_request_menu component', () => { - expect(findMergeRequestMenu().props('items')).toBe(mockSidebarData.merge_request_menu); - }); - }); - - it('does not render merge request menu when merge_request_menu is null', () => { - createWrapper({ sidebarData: { ...mockSidebarData, merge_request_menu: null } }); - - expect(findMergeRequestMenu().exists()).toBe(false); }); describe('merge request counts', () => { diff --git a/spec/graphql/graphql_triggers_spec.rb b/spec/graphql/graphql_triggers_spec.rb index 7e7076b8cf8ce3502912d74cde4887282637108e..6bdcfcbc7f5b48db419525dfaa9a93414749a637 100644 --- a/spec/graphql/graphql_triggers_spec.rb +++ b/spec/graphql/graphql_triggers_spec.rb @@ -191,10 +191,6 @@ let_it_be(:user) { create(:user) } let_it_be(:merge_request) { create(:merge_request) } - before do - stub_feature_flags(merge_request_dashboard: true) - end - it 'triggers the user_merge_request_updated subscription' do expect(GitlabSchema.subscriptions).to receive(:trigger).with( :user_merge_request_updated, @@ -204,22 +200,6 @@ described_class.user_merge_request_updated(user, merge_request) end - - describe 'when merge_request_dashboard is disabled' do - before do - stub_feature_flags(merge_request_dashboard: false) - end - - it 'does not trigger the user_merge_request_updated subscription' do - expect(GitlabSchema.subscriptions).not_to receive(:trigger).with( - :user_merge_request_updated, - { user_id: user.id }, - merge_request - ).and_call_original - - described_class.user_merge_request_updated(user, merge_request) - end - end end describe '.ci_pipeline_status_updated' do diff --git a/spec/helpers/merge_requests_helper_spec.rb b/spec/helpers/merge_requests_helper_spec.rb index dfcd5a1cf57a948bc79e5e37c60cbc496440b0f4..a6e2d2e2acf18b4c76366dcca6eb433024849dcd 100644 --- a/spec/helpers/merge_requests_helper_spec.rb +++ b/spec/helpers/merge_requests_helper_spec.rb @@ -383,17 +383,14 @@ using RSpec::Parameterized::TableSyntax - where(:query_string, :feature_flag_enabled, :search_page, :user_dismissed, :should_show) do - { assignee_user: 'test' } | true | true | false | true - { assignee_user: 'test' } | false | true | false | false - { assignee_user: 'test' } | false | false | false | false - { assignee_user: 'test' } | false | false | true | false - nil | false | false | false | false + where(:query_string, :search_page, :user_dismissed, :should_show) do + { assignee_user: 'test' } | true | false | true + { assignee_user: 'test' } | false | true | false + nil | false | false | false end with_them do before do - stub_feature_flags(merge_request_dashboard: feature_flag_enabled) allow(helper).to receive(:current_user).and_return(current_user) allow(helper).to receive(:user_dismissed?) .with(Users::CalloutsHelper::NEW_MR_DASHBOARD_BANNER).and_return(user_dismissed) diff --git a/spec/helpers/sidebars_helper_spec.rb b/spec/helpers/sidebars_helper_spec.rb index f033a76739ff6a5bd54dc318c0525adb54b9dbc4..cdce9dec174a7d8cdd4ae075245761d29706f79b 100644 --- a/spec/helpers/sidebars_helper_spec.rb +++ b/spec/helpers/sidebars_helper_spec.rb @@ -287,50 +287,6 @@ end end - it 'returns "Merge requests" menu', :use_clean_rails_memory_store_caching do - expect(subject[:merge_request_menu]).to eq([ - { - name: _('Merge requests'), - items: [ - { - text: _('Assigned'), - href: merge_requests_dashboard_path(assignee_username: user.username), - count: 4, - userCount: 'assigned_merge_requests', - extraAttrs: { - 'data-track-action': 'click_link', - 'data-track-label': 'merge_requests_assigned', - 'data-track-property': 'nav_core_menu', - class: 'dashboard-shortcuts-merge_requests' - } - }, - { - text: _('Review requests'), - href: merge_requests_dashboard_path(reviewer_username: user.username), - count: 0, - userCount: 'review_requested_merge_requests', - extraAttrs: { - 'data-track-action': 'click_link', - 'data-track-label': 'merge_requests_to_review', - 'data-track-property': 'nav_core_menu', - class: 'dashboard-shortcuts-review_requests' - } - } - ] - } - ]) - end - - context 'when merge_request_dashboard feature flag is enabled' do - before do - stub_feature_flags(merge_request_dashboard: true) - end - - it 'returns nil for merge_request_menu' do - expect(subject[:merge_request_menu]).to be_nil - end - end - describe '"Create new" menu groups', :use_clean_rails_memory_store_caching do def menu_item(href:, text:, id:, component: nil) { diff --git a/spec/lib/sidebars/your_work/menus/merge_requests_menu_spec.rb b/spec/lib/sidebars/your_work/menus/merge_requests_menu_spec.rb index 6d824ba1b4a54cd227de75c7b7b85b1de4147ff9..d0b62c24dab7d51e46bb5c6165c408c260262c79 100644 --- a/spec/lib/sidebars/your_work/menus/merge_requests_menu_spec.rb +++ b/spec/lib/sidebars/your_work/menus/merge_requests_menu_spec.rb @@ -13,26 +13,4 @@ expect(menu.has_pill?).to be true expect(menu.pill_count_field).to eq("total_merge_requests") end - - describe 'submenu items' do - using RSpec::Parameterized::TableSyntax - - where(:order, :title, :key, :count_field) do - 0 | 'Assigned' | :assigned | 'assigned_merge_requests' - 1 | 'Review requests' | :review_requested | 'review_requested_merge_requests' - end - - with_them do - let(:item) { menu.renderable_items[order] } - - it 'renders items in the right order' do - expect(item.title).to eq title - end - - it 'has correct pill settings' do - expect(item.has_pill?).to be true - expect(item.pill_count_field).to eq(count_field) - end - end - end end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 79cde24f70510e450a9bab295964a6c4e179a9f1..966fa51a2351e650e0f422a9329e8fcd6abb7144 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -6768,8 +6768,8 @@ def add_user it 'invalidates cache for merge request counters' do cache_mock = double - expect(cache_mock).to receive(:delete).with(['users', user.id, 'assigned_open_merge_requests_count', false]) - expect(cache_mock).to receive(:delete).with(['users', user.id, 'review_requested_open_merge_requests_count', false]) + expect(cache_mock).to receive(:delete).with(['users', user.id, 'assigned_open_merge_requests_count']) + expect(cache_mock).to receive(:delete).with(['users', user.id, 'review_requested_open_merge_requests_count']) allow(Rails).to receive(:cache).and_return(cache_mock) @@ -6859,12 +6859,19 @@ def add_user let_it_be_with_refind(:archived_project) { create(:project, :public, :archived) } let(:cached_only) { false } - it 'returns number of open merge requests from non-archived projects' do - create(:merge_request, source_project: project, author: user, assignees: [user]) + it 'returns number of open merge requests from non-archived projects where there are no reviewers' do + create(:merge_request, source_project: project, author: user, assignees: [user], reviewers: [user]) + create(:merge_request, source_project: project, source_branch: 'feature_conflict', author: user, assignees: [user]) create(:merge_request, :closed, source_project: project, author: user, assignees: [user]) create(:merge_request, source_project: archived_project, author: user, assignees: [user]) - is_expected.to eq 1 + mr = create(:merge_request, :unique_branches, source_project: project, author: user, assignees: [user], reviewers: [user]) + mr2 = create(:merge_request, :unique_branches, source_project: project, author: user, assignees: [user], reviewers: [user]) + + mr.merge_request_reviewers.update_all(state: :reviewed) + mr2.merge_request_reviewers.update_all(state: :requested_changes) + + is_expected.to eq 4 end context 'when fetching only cached' do @@ -6875,27 +6882,6 @@ def add_user end end - context 'when merge_request_dashboard_author_or_assignee feature flag is enabled' do - before do - stub_feature_flags(merge_request_dashboard: true) - end - - it 'returns number of open merge requests from non-archived projects where there are no reviewers' do - create(:merge_request, source_project: project, author: user, assignees: [user], reviewers: [user]) - create(:merge_request, source_project: project, source_branch: 'feature_conflict', author: user, assignees: [user]) - create(:merge_request, :closed, source_project: project, author: user, assignees: [user]) - create(:merge_request, source_project: archived_project, author: user, assignees: [user]) - - mr = create(:merge_request, :unique_branches, source_project: project, author: user, assignees: [user], reviewers: [user]) - mr2 = create(:merge_request, :unique_branches, source_project: project, author: user, assignees: [user], reviewers: [user]) - - mr.merge_request_reviewers.update_all(state: :reviewed) - mr2.merge_request_reviewers.update_all(state: :requested_changes) - - is_expected.to eq 3 - end - end - context 'when the query times out' do context 'with ActiveRecord::StatementTimeout' do before do @@ -6964,7 +6950,12 @@ def add_user create(:merge_request, source_project: archived_project, author: user, reviewers: [user]) end - it 'returns number of open merge requests from non-archived projects' do + it 'returns number of open merge requests from non-archived projects where a reviewer has not reviewed' do + mr2 = create(:merge_request, :unique_branches, source_project: project, author: user, reviewers: [user]) + + mr.merge_request_reviewers.update_all(state: :unreviewed) + mr2.merge_request_reviewers.update_all(state: :requested_changes) + is_expected.to eq 1 end @@ -6975,21 +6966,6 @@ def add_user is_expected.to be_nil end end - - context 'when merge_request_dashboard feature flag is enabled' do - before do - stub_feature_flags(merge_request_dashboard: true) - end - - it 'returns number of open merge requests from non-archived projects where a reviewer has not reviewed' do - mr2 = create(:merge_request, :unique_branches, source_project: project, author: user, reviewers: [user]) - - mr.merge_request_reviewers.update_all(state: :unreviewed) - mr2.merge_request_reviewers.update_all(state: :requested_changes) - - is_expected.to eq 1 - end - end end describe '#assigned_open_issues_count' do diff --git a/spec/requests/api/graphql/merge_requests/assignee_or_reviewer_merge_requests_spec.rb b/spec/requests/api/graphql/merge_requests/assignee_or_reviewer_merge_requests_spec.rb index 709a7439f2629d2cb272024279608860e568fece..d5ea63c96acc6137bcb0e0f92224fbc0e2b94ecd 100644 --- a/spec/requests/api/graphql/merge_requests/assignee_or_reviewer_merge_requests_spec.rb +++ b/spec/requests/api/graphql/merge_requests/assignee_or_reviewer_merge_requests_spec.rb @@ -39,64 +39,46 @@ def query(params = {}) reviewer_change_requested.merge_request_reviewers[0].update!(state: :requested_changes) end - context 'when merge_request_dashboard feature flag is disabled' do - before do - stub_feature_flags(merge_request_dashboard: false) - end + it do + post_graphql(query, current_user: current_user) + + expect(merge_requests).to contain_exactly( + a_hash_including('id' => merge_request_1.to_global_id.to_s), + a_hash_including('id' => reviewer_change_requested.to_global_id.to_s), + a_hash_including('id' => merge_request_3.to_global_id.to_s) + ) + end + context 'when assigned_review_states argument is sent' do it do - post_graphql(query, current_user: current_user) + post_graphql(query({ assigned_review_states: [:REVIEWED] }), current_user: current_user) - expect(merge_requests).to be_nil + expect(merge_requests).to contain_exactly( + a_hash_including('id' => merge_request_1.to_global_id.to_s) + ) end end - context 'when merge_request_dashboard feature flag is enabled' do - before do - stub_feature_flags(merge_request_dashboard: true) - end - + context 'when reviewer_review_states argument is sent' do it do - post_graphql(query, current_user: current_user) + post_graphql(query({ reviewer_review_states: [:REQUESTED_CHANGES] }), current_user: current_user) expect(merge_requests).to contain_exactly( - a_hash_including('id' => merge_request_1.to_global_id.to_s), a_hash_including('id' => reviewer_change_requested.to_global_id.to_s), a_hash_including('id' => merge_request_3.to_global_id.to_s) ) end + end - context 'when assigned_review_states argument is sent' do - it do - post_graphql(query({ assigned_review_states: [:REVIEWED] }), current_user: current_user) - - expect(merge_requests).to contain_exactly( - a_hash_including('id' => merge_request_1.to_global_id.to_s) - ) - end - end - - context 'when reviewer_review_states argument is sent' do - it do - post_graphql(query({ reviewer_review_states: [:REQUESTED_CHANGES] }), current_user: current_user) - - expect(merge_requests).to contain_exactly( - a_hash_including('id' => reviewer_change_requested.to_global_id.to_s), - a_hash_including('id' => merge_request_3.to_global_id.to_s) - ) - end - end - - context 'when reviewer_review_states and assigned_review_states arguments are sent' do - it do - post_graphql(query({ reviewer_review_states: [:UNREVIEWED], assigned_review_states: [:REQUESTED_CHANGES] }), - current_user: current_user) + context 'when reviewer_review_states and assigned_review_states arguments are sent' do + it do + post_graphql(query({ reviewer_review_states: [:UNREVIEWED], assigned_review_states: [:REQUESTED_CHANGES] }), + current_user: current_user) - expect(merge_requests).to contain_exactly( - a_hash_including('id' => merge_request_1.to_global_id.to_s), - a_hash_including('id' => reviewer_change_requested.to_global_id.to_s) - ) - end + expect(merge_requests).to contain_exactly( + a_hash_including('id' => merge_request_1.to_global_id.to_s), + a_hash_including('id' => reviewer_change_requested.to_global_id.to_s) + ) end end end diff --git a/spec/requests/dashboard_controller_spec.rb b/spec/requests/dashboard_controller_spec.rb index 3ac19b5da7e2614ff02f3b4fc3c3c9ae25ceb81c..2d98e6e455cb14396e8ef246427f26c059b5e640 100644 --- a/spec/requests/dashboard_controller_spec.rb +++ b/spec/requests/dashboard_controller_spec.rb @@ -30,28 +30,20 @@ def request context 'merge requests dashboard' do let_it_be(:current_user) { create(:user) } - it_behaves_like 'rate limited endpoint', rate_limit_key: :search_rate_limit do - before do - sign_in current_user - end + before do + sign_in current_user + end + it_behaves_like 'rate limited endpoint', rate_limit_key: :search_rate_limit do def request get merge_requests_dashboard_path, params: { scope: 'all', search: 'test' } end end - context 'when merge_request_dashboard feature flag is enabled' do - before do - stub_feature_flags(merge_request_dashboard: true) + it 'redirects to search page with the current query string' do + get merge_requests_dashboard_path, params: { assignee_username: current_user.username } - sign_in current_user - end - - it 'redirects to search page with the current query string' do - get merge_requests_dashboard_path, params: { assignee_username: current_user.username } - - expect(response).to redirect_to(merge_requests_search_dashboard_path(params: { assignee_username: current_user.username })) - end + expect(response).to redirect_to(merge_requests_search_dashboard_path(params: { assignee_username: current_user.username })) end end diff --git a/spec/services/draft_notes/publish_service_spec.rb b/spec/services/draft_notes/publish_service_spec.rb index 1be4e6ce1923fbc6d9c641f665b0e1e2c0395195..8d1dc64397de105822013c3005250b254712fca3 100644 --- a/spec/services/draft_notes/publish_service_spec.rb +++ b/spec/services/draft_notes/publish_service_spec.rb @@ -164,8 +164,6 @@ def publish(draft: nil) it 'invalidates cache counts' do expect(merge_request.assignees).to all(receive(:invalidate_merge_request_cache_counts)) - stub_feature_flags(merge_request_dashboard: true) - publish end diff --git a/spec/services/merge_requests/handle_assignees_change_service_spec.rb b/spec/services/merge_requests/handle_assignees_change_service_spec.rb index c82e3dab15000e8a2798895a36218aef4ec34fb5..9c130b6362c931fb8b92bcc6694c920c27c600a0 100644 --- a/spec/services/merge_requests/handle_assignees_change_service_spec.rb +++ b/spec/services/merge_requests/handle_assignees_change_service_spec.rb @@ -101,16 +101,10 @@ def execute execute end - context 'when merge_request_dashboard feature flag is enabled' do - before do - stub_feature_flags(merge_request_dashboard: true) - end - - it 'invalidates cache counts' do - expect(merge_request.assignees).to all(receive(:invalidate_merge_request_cache_counts)) + it 'invalidates cache counts' do + expect(merge_request.assignees).to all(receive(:invalidate_merge_request_cache_counts)) - execute - end + execute end it 'invalidates cache counts for old assignees' do diff --git a/spec/services/merge_requests/request_review_service_spec.rb b/spec/services/merge_requests/request_review_service_spec.rb index c06eeabcbdab21ba7eebe07a5b309fa0b2b5afc9..b039431777c1715d848ea47741c884cdec9826c3 100644 --- a/spec/services/merge_requests/request_review_service_spec.rb +++ b/spec/services/merge_requests/request_review_service_spec.rb @@ -94,17 +94,11 @@ service.execute(merge_request, user) end - context 'when merge_request_dashboard feature flag is enabled' do - before do - stub_feature_flags(merge_request_dashboard: true) - end - - it 'invalidates cache counts' do - expect(user).to receive(:invalidate_merge_request_cache_counts) - expect(current_user).to receive(:invalidate_merge_request_cache_counts) + it 'invalidates cache counts' do + expect(user).to receive(:invalidate_merge_request_cache_counts) + expect(current_user).to receive(:invalidate_merge_request_cache_counts) - service.execute(merge_request, user) - end + service.execute(merge_request, user) end end end diff --git a/spec/services/merge_requests/update_reviewer_state_service_spec.rb b/spec/services/merge_requests/update_reviewer_state_service_spec.rb index 920c2fb952185e9a6184f4ac556e5cd3a2072536..4d4c004c79ccaaf1cb4176426b2abc359f4a3fa4 100644 --- a/spec/services/merge_requests/update_reviewer_state_service_spec.rb +++ b/spec/services/merge_requests/update_reviewer_state_service_spec.rb @@ -85,22 +85,16 @@ result end - context 'when merge_request_dashboard feature flag is enabled' do - before do - stub_feature_flags(merge_request_dashboard: true) - end - - it 'invalidates cache counts for all assignees' do - expect(merge_request.assignees).to all(receive(:invalidate_merge_request_cache_counts)) + it 'invalidates cache counts for all assignees' do + expect(merge_request.assignees).to all(receive(:invalidate_merge_request_cache_counts)) - expect(result[:status]).to eq :success - end + expect(result[:status]).to eq :success + end - it 'invalidates cache counts for current user' do - expect(current_user).to receive(:invalidate_merge_request_cache_counts) + it 'invalidates cache counts for current user' do + expect(current_user).to receive(:invalidate_merge_request_cache_counts) - expect(result[:status]).to eq :success - end + expect(result[:status]).to eq :success end context 'when reviewer has approved' do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 1269f80440c29ceadec8cb80435dbe1fa256b482..536a5d6dee12d8f4f83f51a4d817e507fec74495 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -328,9 +328,6 @@ # Disable suspending ClickHouse data ingestion workers stub_feature_flags(suspend_click_house_data_ingestion: false) - # Experimental merge request dashboard - stub_feature_flags(merge_request_dashboard: false) - # This feature flag allows enabling self-hosted features on Staging Ref: https://gitlab.com/gitlab-org/gitlab/-/issues/497784 stub_feature_flags(allow_self_hosted_features_for_com: false) diff --git a/spec/support/shared_contexts/navbar_structure_context.rb b/spec/support/shared_contexts/navbar_structure_context.rb index a989c4644f363d0f0990108c5de82f04f5338b71..649978be7dcc0279e09a3dc203a36d67db440f2c 100644 --- a/spec/support/shared_contexts/navbar_structure_context.rb +++ b/spec/support/shared_contexts/navbar_structure_context.rb @@ -242,10 +242,7 @@ }, { nav_item: _("Merge requests"), - nav_sub_items: [ - _('Assigned'), - _('Review requests') - ] + nav_sub_items: [] }, { nav_item: _("To-Do List"),