diff options
Diffstat (limited to 'spec/frontend/search/sidebar/components')
5 files changed, 80 insertions, 9 deletions
diff --git a/spec/frontend/search/sidebar/components/app_spec.js b/spec/frontend/search/sidebar/components/app_spec.js index 8e23f9c1680..d8d2492209e 100644 --- a/spec/frontend/search/sidebar/components/app_spec.js +++ b/spec/frontend/search/sidebar/components/app_spec.js @@ -16,6 +16,7 @@ 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 MilestonesFilters from '~/search/sidebar/components/milestones_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'; @@ -47,6 +48,7 @@ describe('GlobalSearchSidebar', () => { glFeatures: { searchNotesHideArchivedProjects: true, searchCommitsHideArchivedProjects: true, + searchMilestonesHideArchivedProjects: true, }, }, }); @@ -59,6 +61,7 @@ describe('GlobalSearchSidebar', () => { const findProjectsFilters = () => wrapper.findComponent(ProjectsFilters); const findNotesFilters = () => wrapper.findComponent(NotesFilters); const findCommitsFilters = () => wrapper.findComponent(CommitsFilters); + const findMilestonesFilters = () => wrapper.findComponent(MilestonesFilters); const findScopeLegacyNavigation = () => wrapper.findComponent(ScopeLegacyNavigation); const findSmallScreenDrawerNavigation = () => wrapper.findComponent(SmallScreenDrawerNavigation); const findScopeSidebarNavigation = () => wrapper.findComponent(ScopeSidebarNavigation); @@ -83,10 +86,12 @@ describe('GlobalSearchSidebar', () => { ${'blobs'} | ${findBlobsFilters} | ${SEARCH_TYPE_BASIC} | ${false} ${'blobs'} | ${findBlobsFilters} | ${SEARCH_TYPE_ADVANCED} | ${true} ${'blobs'} | ${findBlobsFilters} | ${SEARCH_TYPE_ZOEKT} | ${false} - ${'notes'} | ${findNotesFilters} | ${SEARCH_TYPE_BASIC} | ${false} + ${'notes'} | ${findNotesFilters} | ${SEARCH_TYPE_BASIC} | ${true} ${'notes'} | ${findNotesFilters} | ${SEARCH_TYPE_ADVANCED} | ${true} - ${'commits'} | ${findCommitsFilters} | ${SEARCH_TYPE_BASIC} | ${false} + ${'commits'} | ${findCommitsFilters} | ${SEARCH_TYPE_BASIC} | ${true} ${'commits'} | ${findCommitsFilters} | ${SEARCH_TYPE_ADVANCED} | ${true} + ${'milestones'} | ${findMilestonesFilters} | ${SEARCH_TYPE_BASIC} | ${true} + ${'milestones'} | ${findMilestonesFilters} | ${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/archived_filter_spec.js b/spec/frontend/search/sidebar/components/archived_filter_spec.js index 69bf2ebd72e..9ed677ca297 100644 --- a/spec/frontend/search/sidebar/components/archived_filter_spec.js +++ b/spec/frontend/search/sidebar/components/archived_filter_spec.js @@ -1,8 +1,9 @@ -import { shallowMount } from '@vue/test-utils'; import Vue from 'vue'; // eslint-disable-next-line no-restricted-imports import Vuex from 'vuex'; import { GlFormCheckboxGroup } from '@gitlab/ui'; +import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; +import { createMockDirective, getBinding } from 'helpers/vue_mock_directive'; import ArchivedFilter from '~/search/sidebar/components/archived_filter/index.vue'; import { archivedFilterData } from '~/search/sidebar/components/archived_filter/data'; @@ -12,17 +13,26 @@ Vue.use(Vuex); describe('ArchivedFilter', () => { let wrapper; + const defaultActions = { + setQuery: jest.fn(), + }; + const createComponent = (state) => { const store = new Vuex.Store({ state, + actions: defaultActions, }); - wrapper = shallowMount(ArchivedFilter, { + wrapper = shallowMountExtended(ArchivedFilter, { store, + directives: { + GlTooltip: createMockDirective('gl-tooltip'), + }, }); }; const findCheckboxFilter = () => wrapper.findComponent(GlFormCheckboxGroup); + const findCheckboxFilterLabel = () => wrapper.findByTestId('label'); const findH5 = () => wrapper.findComponent('h5'); describe('old sidebar', () => { @@ -38,6 +48,12 @@ describe('ArchivedFilter', () => { expect(findH5().exists()).toBe(true); expect(findH5().text()).toBe(archivedFilterData.headerLabel); }); + + it('wraps the label element with a tooltip', () => { + const tooltip = getBinding(findCheckboxFilterLabel().element, 'gl-tooltip'); + expect(tooltip).toBeDefined(); + expect(tooltip.value).toBe('Include search results from archived projects'); + }); }); describe('new sidebar', () => { @@ -53,6 +69,12 @@ describe('ArchivedFilter', () => { expect(findH5().exists()).toBe(true); expect(findH5().text()).toBe(archivedFilterData.headerLabel); }); + + it('wraps the label element with a tooltip', () => { + const tooltip = getBinding(findCheckboxFilterLabel().element, 'gl-tooltip'); + expect(tooltip).toBeDefined(); + expect(tooltip.value).toBe('Include search results from archived projects'); + }); }); describe.each` @@ -70,4 +92,20 @@ describe('ArchivedFilter', () => { expect(findCheckboxFilter().attributes('checked')).toBe(checkboxState); }); }); + + describe('selectedFilter logic', () => { + beforeEach(() => { + createComponent(); + }); + + it('correctly executes setQuery without mutating the input', () => { + const selectedFilter = [false]; + findCheckboxFilter().vm.$emit('input', selectedFilter); + expect(defaultActions.setQuery).toHaveBeenCalledWith(expect.any(Object), { + key: 'include_archived', + value: 'false', + }); + expect(selectedFilter).toEqual([false]); + }); + }); }); diff --git a/spec/frontend/search/sidebar/components/issues_filters_spec.js b/spec/frontend/search/sidebar/components/issues_filters_spec.js index 39d10cbb8b4..c3b3a93e362 100644 --- a/spec/frontend/search/sidebar/components/issues_filters_spec.js +++ b/spec/frontend/search/sidebar/components/issues_filters_spec.js @@ -111,11 +111,11 @@ describe('GlobalSearch IssuesFilters', () => { }); it("doesn't render ArchivedFilter", () => { - expect(findArchivedFilter().exists()).toBe(false); + expect(findArchivedFilter().exists()).toBe(true); }); it('renders 1 divider', () => { - expect(findDividers()).toHaveLength(1); + expect(findDividers()).toHaveLength(2); }); }); diff --git a/spec/frontend/search/sidebar/components/merge_requests_filters_spec.js b/spec/frontend/search/sidebar/components/merge_requests_filters_spec.js index b50f348be69..278249c2660 100644 --- a/spec/frontend/search/sidebar/components/merge_requests_filters_spec.js +++ b/spec/frontend/search/sidebar/components/merge_requests_filters_spec.js @@ -79,12 +79,12 @@ describe('GlobalSearch MergeRequestsFilters', () => { expect(findStatusFilter().exists()).toBe(true); }); - it("doesn't render ArchivedFilter", () => { - expect(findArchivedFilter().exists()).toBe(false); + it('renders render ArchivedFilter', () => { + expect(findArchivedFilter().exists()).toBe(true); }); it('renders 1 divider', () => { - expect(findDividers()).toHaveLength(0); + expect(findDividers()).toHaveLength(1); }); }); diff --git a/spec/frontend/search/sidebar/components/milestones_filters_spec.js b/spec/frontend/search/sidebar/components/milestones_filters_spec.js new file mode 100644 index 00000000000..e7fcfb030f4 --- /dev/null +++ b/spec/frontend/search/sidebar/components/milestones_filters_spec.js @@ -0,0 +1,28 @@ +import { shallowMount } from '@vue/test-utils'; +import MilestonesFilters from '~/search/sidebar/components/milestones_filters.vue'; +import ArchivedFilter from '~/search/sidebar/components/archived_filter/index.vue'; +import FiltersTemplate from '~/search/sidebar/components/filters_template.vue'; + +describe('GlobalSearch MilestonesFilters', () => { + let wrapper; + + const findArchivedFilter = () => wrapper.findComponent(ArchivedFilter); + const findFiltersTemplate = () => wrapper.findComponent(FiltersTemplate); + + const createComponent = () => { + wrapper = shallowMount(MilestonesFilters); + }; + + describe('Renders correctly', () => { + beforeEach(() => { + createComponent(); + }); + it('renders ArchivedFilter', () => { + expect(findArchivedFilter().exists()).toBe(true); + }); + + it('renders FiltersTemplate', () => { + expect(findFiltersTemplate().exists()).toBe(true); + }); + }); +}); |