summaryrefslogtreecommitdiff
path: root/spec/frontend/filtered_search/filtered_search_token_keys_spec.js
blob: d1fea18dea8e4394b976a0c5dfe2708c0735c428 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
import FilteredSearchTokenKeys from '~/filtered_search/filtered_search_token_keys';

describe('Filtered Search Token Keys', () => {
  const tokenKeys = [
    {
      key: 'author',
      type: 'string',
      param: 'username',
      symbol: '@',
      icon: 'pencil',
      tag: '@author',
    },
  ];

  const conditions = [
    {
      url: 'assignee_id=0',
      tokenKey: 'assignee',
      value: 'none',
    },
  ];

  describe('get', () => {
    it('should return tokenKeys', () => {
      expect(new FilteredSearchTokenKeys().get()).not.toBeNull();
    });

    it('should return tokenKeys as an array', () => {
      expect(new FilteredSearchTokenKeys().get() instanceof Array).toBe(true);
    });
  });

  describe('getKeys', () => {
    it('should return keys', () => {
      const getKeys = new FilteredSearchTokenKeys(tokenKeys).getKeys();
      const keys = new FilteredSearchTokenKeys(tokenKeys).get().map(i => i.key);

      keys.forEach((key, i) => {
        expect(key).toEqual(getKeys[i]);
      });
    });
  });

  describe('getConditions', () => {
    it('should return conditions', () => {
      expect(new FilteredSearchTokenKeys().getConditions()).not.toBeNull();
    });

    it('should return conditions as an array', () => {
      expect(new FilteredSearchTokenKeys().getConditions() instanceof Array).toBe(true);
    });
  });

  describe('searchByKey', () => {
    it('should return null when key not found', () => {
      const tokenKey = new FilteredSearchTokenKeys(tokenKeys).searchByKey('notakey');

      expect(tokenKey).toBeNull();
    });

    it('should return tokenKey when found by key', () => {
      const result = new FilteredSearchTokenKeys(tokenKeys).searchByKey(tokenKeys[0].key);

      expect(result).toEqual(tokenKeys[0]);
    });
  });

  describe('searchBySymbol', () => {
    it('should return null when symbol not found', () => {
      const tokenKey = new FilteredSearchTokenKeys(tokenKeys).searchBySymbol('notasymbol');

      expect(tokenKey).toBeNull();
    });

    it('should return tokenKey when found by symbol', () => {
      const result = new FilteredSearchTokenKeys(tokenKeys).searchBySymbol(tokenKeys[0].symbol);

      expect(result).toEqual(tokenKeys[0]);
    });
  });

  describe('searchByKeyParam', () => {
    it('should return null when key param not found', () => {
      const tokenKey = new FilteredSearchTokenKeys(tokenKeys).searchByKeyParam('notakeyparam');

      expect(tokenKey).toBeNull();
    });

    it('should return tokenKey when found by key param', () => {
      const result = new FilteredSearchTokenKeys(tokenKeys).searchByKeyParam(
        `${tokenKeys[0].key}_${tokenKeys[0].param}`,
      );

      expect(result).toEqual(tokenKeys[0]);
    });

    it('should return alternative tokenKey when found by key param', () => {
      const result = new FilteredSearchTokenKeys(tokenKeys).searchByKeyParam(
        `${tokenKeys[0].key}_${tokenKeys[0].param}`,
      );

      expect(result).toEqual(tokenKeys[0]);
    });
  });

  describe('searchByConditionUrl', () => {
    it('should return null when condition url not found', () => {
      const condition = new FilteredSearchTokenKeys([], [], conditions).searchByConditionUrl(null);

      expect(condition).toBeNull();
    });

    it('should return condition when found by url', () => {
      const result = new FilteredSearchTokenKeys([], [], conditions).searchByConditionUrl(
        conditions[0].url,
      );

      expect(result).toBe(conditions[0]);
    });
  });

  describe('searchByConditionKeyValue', () => {
    it('should return null when condition tokenKey and value not found', () => {
      const condition = new FilteredSearchTokenKeys([], [], conditions).searchByConditionKeyValue(
        null,
        null,
      );

      expect(condition).toBeNull();
    });

    it('should return condition when found by tokenKey and value', () => {
      const result = new FilteredSearchTokenKeys([], [], conditions).searchByConditionKeyValue(
        conditions[0].tokenKey,
        conditions[0].value,
      );

      expect(result).toEqual(conditions[0]);
    });
  });
});