diff options
Diffstat (limited to 'spec/frontend/search/sidebar/components/issues_filters_spec.js')
-rw-r--r-- | spec/frontend/search/sidebar/components/issues_filters_spec.js | 96 |
1 files changed, 84 insertions, 12 deletions
diff --git a/spec/frontend/search/sidebar/components/issues_filters_spec.js b/spec/frontend/search/sidebar/components/issues_filters_spec.js index 84c4258cbdb..e6188436c81 100644 --- a/spec/frontend/search/sidebar/components/issues_filters_spec.js +++ b/spec/frontend/search/sidebar/components/issues_filters_spec.js @@ -7,6 +7,8 @@ import IssuesFilters from '~/search/sidebar/components/issues_filters.vue'; import ConfidentialityFilter from '~/search/sidebar/components/confidentiality_filter/index.vue'; import StatusFilter from '~/search/sidebar/components/status_filter/index.vue'; import LabelFilter from '~/search/sidebar/components/label_filter/index.vue'; +import ArchivedFilter from '~/search/sidebar/components/archived_filter/index.vue'; +import { SEARCH_TYPE_ADVANCED, SEARCH_TYPE_BASIC } from '~/search/sidebar/constants'; Vue.use(Vuex); @@ -17,10 +19,16 @@ describe('GlobalSearch IssuesFilters', () => { currentScope: () => 'issues', }; - const createComponent = (initialState, ff = true) => { + const createComponent = ({ + initialState = {}, + searchIssueLabelAggregation = true, + searchIssuesHideArchivedProjects = true, + } = {}) => { const store = new Vuex.Store({ state: { urlQuery: MOCK_QUERY, + useSidebarNavigation: false, + searchType: SEARCH_TYPE_ADVANCED, ...initialState, }, getters: defaultGetters, @@ -30,7 +38,8 @@ describe('GlobalSearch IssuesFilters', () => { store, provide: { glFeatures: { - searchIssueLabelAggregation: ff, + searchIssueLabelAggregation, + searchIssuesHideArchivedProjects, }, }, }); @@ -39,12 +48,23 @@ describe('GlobalSearch IssuesFilters', () => { const findStatusFilter = () => wrapper.findComponent(StatusFilter); const findConfidentialityFilter = () => wrapper.findComponent(ConfidentialityFilter); const findLabelFilter = () => wrapper.findComponent(LabelFilter); + const findArchivedFilter = () => wrapper.findComponent(ArchivedFilter); const findDividers = () => wrapper.findAll('hr'); - describe('Renders correctly with FF enabled', () => { + describe.each` + description | searchIssueLabelAggregation | searchIssuesHideArchivedProjects + ${'Renders correctly with Label Filter disabled'} | ${false} | ${true} + ${'Renders correctly with Archived Filter disabled'} | ${true} | ${false} + ${'Renders correctly with Archived Filter and Label Filter disabled'} | ${false} | ${false} + ${'Renders correctly with Archived Filter and Label Filter enabled'} | ${true} | ${true} + `('$description', ({ searchIssueLabelAggregation, searchIssuesHideArchivedProjects }) => { beforeEach(() => { - createComponent({ urlQuery: MOCK_QUERY }); + createComponent({ + searchIssueLabelAggregation, + searchIssuesHideArchivedProjects, + }); }); + it('renders StatusFilter', () => { expect(findStatusFilter().exists()).toBe(true); }); @@ -53,18 +73,30 @@ describe('GlobalSearch IssuesFilters', () => { expect(findConfidentialityFilter().exists()).toBe(true); }); - it('renders LabelFilter', () => { - expect(findLabelFilter().exists()).toBe(true); + it(`renders correctly LabelFilter when searchIssueLabelAggregation is ${searchIssueLabelAggregation}`, () => { + expect(findLabelFilter().exists()).toBe(searchIssueLabelAggregation); }); - it('renders dividers correctly', () => { - expect(findDividers()).toHaveLength(2); + it(`renders correctly ArchivedFilter when searchIssuesHideArchivedProjects is ${searchIssuesHideArchivedProjects}`, () => { + expect(findArchivedFilter().exists()).toBe(searchIssuesHideArchivedProjects); + }); + + it('renders divider correctly', () => { + // one divider can't be disabled + let dividersCount = 1; + if (searchIssueLabelAggregation) { + dividersCount += 1; + } + if (searchIssuesHideArchivedProjects) { + dividersCount += 1; + } + expect(findDividers()).toHaveLength(dividersCount); }); }); - describe('Renders correctly with FF disabled', () => { + describe('Renders correctly with basic search', () => { beforeEach(() => { - createComponent({ urlQuery: MOCK_QUERY }, false); + createComponent({ initialState: { searchType: SEARCH_TYPE_BASIC } }); }); it('renders StatusFilter', () => { expect(findStatusFilter().exists()).toBe(true); @@ -78,15 +110,51 @@ describe('GlobalSearch IssuesFilters', () => { expect(findLabelFilter().exists()).toBe(false); }); - it('renders divider correctly', () => { + it("doesn't render ArchivedFilter", () => { + expect(findArchivedFilter().exists()).toBe(false); + }); + + it('renders 1 divider', () => { expect(findDividers()).toHaveLength(1); }); }); + describe('Renders correctly in new nav', () => { + beforeEach(() => { + createComponent({ + initialState: { + searchType: SEARCH_TYPE_ADVANCED, + useSidebarNavigation: true, + }, + searchIssueLabelAggregation: true, + searchIssuesHideArchivedProjects: true, + }); + }); + it('renders StatusFilter', () => { + expect(findStatusFilter().exists()).toBe(true); + }); + + it('renders ConfidentialityFilter', () => { + expect(findConfidentialityFilter().exists()).toBe(true); + }); + + it('renders LabelFilter', () => { + expect(findLabelFilter().exists()).toBe(true); + }); + + it('renders ArchivedFilter', () => { + expect(findArchivedFilter().exists()).toBe(true); + }); + + it("doesn't render dividers", () => { + expect(findDividers()).toHaveLength(0); + }); + }); + describe('Renders correctly with wrong scope', () => { beforeEach(() => { defaultGetters.currentScope = () => 'blobs'; - createComponent({ urlQuery: MOCK_QUERY }); + createComponent(); }); it("doesn't render StatusFilter", () => { expect(findStatusFilter().exists()).toBe(false); @@ -100,6 +168,10 @@ describe('GlobalSearch IssuesFilters', () => { expect(findLabelFilter().exists()).toBe(false); }); + it("doesn't render ArchivedFilter", () => { + expect(findArchivedFilter().exists()).toBe(false); + }); + it("doesn't render dividers", () => { expect(findDividers()).toHaveLength(0); }); |