Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/search/sidebar/components/issues_filters_spec.js')
-rw-r--r--spec/frontend/search/sidebar/components/issues_filters_spec.js96
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);
});