From 4cee5884597d948305fab1a8acc49bd28d36eb95 Mon Sep 17 00:00:00 2001 From: Tomas Bulva <tbulva@gitlab.com> Date: Wed, 13 Sep 2023 10:55:42 +0200 Subject: [PATCH] Added archived filter for commits scope Changelog: added EE: true --- .../search/sidebar/components/app.vue | 15 +++++++++- .../components/archived_filter/data.js | 1 + .../sidebar/components/commits_filters.vue | 18 ++++++++++++ .../search/sidebar/constants/index.js | 1 + ee/app/controllers/ee/search_controller.rb | 4 +++ .../search/sidebar/components/app_spec.js | 5 ++++ .../components/commits_filters_spec.js | 28 +++++++++++++++++++ 7 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/search/sidebar/components/commits_filters.vue create mode 100644 spec/frontend/search/sidebar/components/commits_filters_spec.js diff --git a/app/assets/javascripts/search/sidebar/components/app.vue b/app/assets/javascripts/search/sidebar/components/app.vue index a2e857dc5e412..532a66affd840 100644 --- a/app/assets/javascripts/search/sidebar/components/app.vue +++ b/app/assets/javascripts/search/sidebar/components/app.vue @@ -14,6 +14,7 @@ import { SCOPE_BLOB, SCOPE_PROJECTS, SCOPE_NOTES, + SCOPE_COMMITS, SEARCH_TYPE_ADVANCED, } from '../constants'; import IssuesFilters from './issues_filters.vue'; @@ -21,6 +22,7 @@ import MergeRequestsFilters from './merge_requests_filters.vue'; import BlobsFilters from './blobs_filters.vue'; import ProjectsFilters from './projects_filters.vue'; import NotesFilters from './notes_filters.vue'; +import CommitsFilters from './commits_filters.vue'; export default { name: 'GlobalSearchSidebar', @@ -35,6 +37,7 @@ export default { SidebarPortal, DomElementListener, SmallScreenDrawerNavigation, + CommitsFilters, }, mixins: [glFeatureFlagsMixin()], computed: { @@ -51,7 +54,6 @@ export default { return this.currentScope === SCOPE_BLOB && this.searchType === SEARCH_TYPE_ADVANCED; }, showProjectsFilters() { - // for now the feature flag is here. Since we have only one filter in projects scope return this.currentScope === SCOPE_PROJECTS; }, showNotesFilters() { @@ -61,6 +63,14 @@ export default { this.glFeatures.searchNotesHideArchivedProjects ); }, + showCommitsFilters() { + // for now, the feature flag is placed here. Since we have only one filter in commits scope + return ( + this.currentScope === SCOPE_COMMITS && + this.searchType === SEARCH_TYPE_ADVANCED && + this.glFeatures.searchCommitsHideArchivedProjects + ); + }, showScopeNavigation() { // showScopeNavigation refers to whether the scope navigation should be shown // while the legacy navigation is being used and there are no search results @@ -86,6 +96,7 @@ export default { <blobs-filters v-if="showBlobFilters" /> <projects-filters v-if="showProjectsFilters" /> <notes-filters v-if="showNotesFilters" /> + <commits-filters v-if="showCommitsFilters" /> </sidebar-portal> </section> @@ -100,6 +111,7 @@ export default { <blobs-filters v-if="showBlobFilters" /> <projects-filters v-if="showProjectsFilters" /> <notes-filters v-if="showNotesFilters" /> + <commits-filters v-if="showCommitsFilters" /> </div> <small-screen-drawer-navigation class="gl-lg-display-none"> <scope-legacy-navigation /> @@ -108,6 +120,7 @@ export default { <blobs-filters v-if="showBlobFilters" /> <projects-filters v-if="showProjectsFilters" /> <notes-filters v-if="showNotesFilters" /> + <commits-filters v-if="showCommitsFilters" /> </small-screen-drawer-navigation> </section> </template> diff --git a/app/assets/javascripts/search/sidebar/components/archived_filter/data.js b/app/assets/javascripts/search/sidebar/components/archived_filter/data.js index de73ca57adb38..5cddf5e744f8c 100644 --- a/app/assets/javascripts/search/sidebar/components/archived_filter/data.js +++ b/app/assets/javascripts/search/sidebar/components/archived_filter/data.js @@ -11,6 +11,7 @@ const scopes = { MERGE_REQUESTS: 'merge_requests', NOTES: 'notes', BLOBS: 'blobs', + COMMITS: 'commits', }; const filterParam = 'include_archived'; diff --git a/app/assets/javascripts/search/sidebar/components/commits_filters.vue b/app/assets/javascripts/search/sidebar/components/commits_filters.vue new file mode 100644 index 0000000000000..4f9fdbe955170 --- /dev/null +++ b/app/assets/javascripts/search/sidebar/components/commits_filters.vue @@ -0,0 +1,18 @@ +<script> +import ArchivedFilter from './archived_filter/index.vue'; +import FiltersTemplate from './filters_template.vue'; + +export default { + name: 'CommitsFilters', + components: { + ArchivedFilter, + FiltersTemplate, + }, +}; +</script> + +<template> + <filters-template> + <archived-filter class="gl-mb-5" /> + </filters-template> +</template> diff --git a/app/assets/javascripts/search/sidebar/constants/index.js b/app/assets/javascripts/search/sidebar/constants/index.js index e680808218524..19df875c29285 100644 --- a/app/assets/javascripts/search/sidebar/constants/index.js +++ b/app/assets/javascripts/search/sidebar/constants/index.js @@ -3,6 +3,7 @@ export const SCOPE_MERGE_REQUESTS = 'merge_requests'; export const SCOPE_BLOB = 'blobs'; export const SCOPE_PROJECTS = 'projects'; export const SCOPE_NOTES = 'notes'; +export const SCOPE_COMMITS = 'commits'; export const LABEL_DEFAULT_CLASSES = [ 'gl-display-flex', 'gl-flex-direction-row', diff --git a/ee/app/controllers/ee/search_controller.rb b/ee/app/controllers/ee/search_controller.rb index adc5a044ffd1a..bb7fe85e0db16 100644 --- a/ee/app/controllers/ee/search_controller.rb +++ b/ee/app/controllers/ee/search_controller.rb @@ -58,6 +58,10 @@ def search_rate_limited_endpoints push_frontend_feature_flag(:search_blobs_hide_archived_projects, current_user) end + before_action only: :show do + push_frontend_feature_flag(:search_commits_hide_archived_projects, current_user) + end + after_action :run_index_integrity_worker, only: :show, if: :no_results_for_group_or_project_blobs_advanced_search? end diff --git a/spec/frontend/search/sidebar/components/app_spec.js b/spec/frontend/search/sidebar/components/app_spec.js index 72c9537bd613d..8e23f9c168003 100644 --- a/spec/frontend/search/sidebar/components/app_spec.js +++ b/spec/frontend/search/sidebar/components/app_spec.js @@ -15,6 +15,7 @@ import MergeRequestsFilters from '~/search/sidebar/components/merge_requests_fil import BlobsFilters from '~/search/sidebar/components/blobs_filters.vue'; import ProjectsFilters from '~/search/sidebar/components/projects_filters.vue'; import NotesFilters from '~/search/sidebar/components/notes_filters.vue'; +import CommitsFilters from '~/search/sidebar/components/commits_filters.vue'; import ScopeLegacyNavigation from '~/search/sidebar/components/scope_legacy_navigation.vue'; import SmallScreenDrawerNavigation from '~/search/sidebar/components/small_screen_drawer_navigation.vue'; import ScopeSidebarNavigation from '~/search/sidebar/components/scope_sidebar_navigation.vue'; @@ -45,6 +46,7 @@ describe('GlobalSearchSidebar', () => { provide: { glFeatures: { searchNotesHideArchivedProjects: true, + searchCommitsHideArchivedProjects: true, }, }, }); @@ -56,6 +58,7 @@ describe('GlobalSearchSidebar', () => { const findBlobsFilters = () => wrapper.findComponent(BlobsFilters); const findProjectsFilters = () => wrapper.findComponent(ProjectsFilters); const findNotesFilters = () => wrapper.findComponent(NotesFilters); + const findCommitsFilters = () => wrapper.findComponent(CommitsFilters); const findScopeLegacyNavigation = () => wrapper.findComponent(ScopeLegacyNavigation); const findSmallScreenDrawerNavigation = () => wrapper.findComponent(SmallScreenDrawerNavigation); const findScopeSidebarNavigation = () => wrapper.findComponent(ScopeSidebarNavigation); @@ -82,6 +85,8 @@ describe('GlobalSearchSidebar', () => { ${'blobs'} | ${findBlobsFilters} | ${SEARCH_TYPE_ZOEKT} | ${false} ${'notes'} | ${findNotesFilters} | ${SEARCH_TYPE_BASIC} | ${false} ${'notes'} | ${findNotesFilters} | ${SEARCH_TYPE_ADVANCED} | ${true} + ${'commits'} | ${findCommitsFilters} | ${SEARCH_TYPE_BASIC} | ${false} + ${'commits'} | ${findCommitsFilters} | ${SEARCH_TYPE_ADVANCED} | ${true} `('with sidebar $scope scope:', ({ scope, filter, searchType, isShown }) => { beforeEach(() => { getterSpies.currentScope = jest.fn(() => scope); diff --git a/spec/frontend/search/sidebar/components/commits_filters_spec.js b/spec/frontend/search/sidebar/components/commits_filters_spec.js new file mode 100644 index 0000000000000..cb47c6833efb0 --- /dev/null +++ b/spec/frontend/search/sidebar/components/commits_filters_spec.js @@ -0,0 +1,28 @@ +import { shallowMount } from '@vue/test-utils'; +import CommitsFilters from '~/search/sidebar/components/projects_filters.vue'; +import ArchivedFilter from '~/search/sidebar/components/archived_filter/index.vue'; +import FiltersTemplate from '~/search/sidebar/components/filters_template.vue'; + +describe('GlobalSearch CommitsFilters', () => { + let wrapper; + + const findArchivedFilter = () => wrapper.findComponent(ArchivedFilter); + const findFiltersTemplate = () => wrapper.findComponent(FiltersTemplate); + + const createComponent = () => { + wrapper = shallowMount(CommitsFilters); + }; + + describe('Renders correctly', () => { + beforeEach(() => { + createComponent(); + }); + it('renders ArchivedFilter', () => { + expect(findArchivedFilter().exists()).toBe(true); + }); + + it('renders FiltersTemplate', () => { + expect(findFiltersTemplate().exists()).toBe(true); + }); + }); +}); -- GitLab