summaryrefslogtreecommitdiff
path: root/spec/frontend/boards/boards_util_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/boards/boards_util_spec.js')
-rw-r--r--spec/frontend/boards/boards_util_spec.js112
1 files changed, 99 insertions, 13 deletions
diff --git a/spec/frontend/boards/boards_util_spec.js b/spec/frontend/boards/boards_util_spec.js
index 0feb1411003..289905a1948 100644
--- a/spec/frontend/boards/boards_util_spec.js
+++ b/spec/frontend/boards/boards_util_spec.js
@@ -1,17 +1,103 @@
-import { transformNotFilters } from '~/boards/boards_util';
+import { filterVariables } from '~/boards/boards_util';
-describe('transformNotFilters', () => {
- const filters = {
- 'not[labelName]': ['label'],
- 'not[assigneeUsername]': 'assignee',
- };
-
- it('formats not filters, transforms epicId to fullEpicId', () => {
- const result = transformNotFilters(filters);
-
- expect(result).toEqual({
- labelName: ['label'],
- assigneeUsername: 'assignee',
+describe('filterVariables', () => {
+ it.each([
+ [
+ 'correctly processes array filter values',
+ {
+ filters: {
+ 'not[filterA]': ['val1', 'val2'],
+ },
+ expected: {
+ not: {
+ filterA: ['val1', 'val2'],
+ },
+ },
+ },
+ ],
+ [
+ "renames a filter if 'remap' method is available",
+ {
+ filters: {
+ filterD: 'some value',
+ },
+ expected: {
+ filterA: 'some value',
+ not: {},
+ },
+ },
+ ],
+ [
+ 'correctly processes a negated filter that supports negation',
+ {
+ filters: {
+ 'not[filterA]': 'some value 1',
+ 'not[filterB]': 'some value 2',
+ },
+ expected: {
+ not: {
+ filterA: 'some value 1',
+ },
+ },
+ },
+ ],
+ [
+ 'correctly removes an unsupported filter depending on issuableType',
+ {
+ issuableType: 'epic',
+ filters: {
+ filterA: 'some value 1',
+ filterE: 'some value 2',
+ },
+ expected: {
+ filterE: 'some value 2',
+ not: {},
+ },
+ },
+ ],
+ [
+ 'applies a transform when the filter value needs to be modified',
+ {
+ filters: {
+ filterC: 'abc',
+ 'not[filterC]': 'def',
+ },
+ expected: {
+ filterC: 'ABC',
+ not: {
+ filterC: 'DEF',
+ },
+ },
+ },
+ ],
+ ])('%s', (_, { filters, issuableType = 'issue', expected }) => {
+ const result = filterVariables({
+ filters,
+ issuableType,
+ filterInfo: {
+ filterA: {
+ negatedSupport: true,
+ },
+ filterB: {
+ negatedSupport: false,
+ },
+ filterC: {
+ negatedSupport: true,
+ transform: (val) => val.toUpperCase(),
+ },
+ filterD: {
+ remap: () => 'filterA',
+ },
+ filterE: {
+ negatedSupport: true,
+ },
+ },
+ filterFields: {
+ issue: ['filterA', 'filterB', 'filterC', 'filterD'],
+ epic: ['filterE'],
+ },
});
+
+ expect(result).toEqual(expected);
});
});