summaryrefslogtreecommitdiff
path: root/spec/javascripts/lib/utils/higlight_spec.js
blob: 638bbf65ae92e87c5b4043187b0cb993ce67059d (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
import highlight from '~/lib/utils/highlight';

describe('highlight', () => {
  it(`should appropriately surround substring matches`, () => {
    const expected = 'g<b>i</b><b>t</b>lab';

    expect(highlight('gitlab', 'it')).toBe(expected);
  });

  it(`should return an empty string in the case of invalid inputs`, () => {
    [null, undefined].forEach(input => {
      expect(highlight(input, 'match')).toBe('');
    });
  });

  it(`should return the original value if match is null, undefined, or ''`, () => {
    [null, undefined].forEach(match => {
      expect(highlight('gitlab', match)).toBe('gitlab');
    });
  });

  it(`should highlight matches in non-string inputs`, () => {
    const expected = '123<b>4</b><b>5</b>6';

    expect(highlight(123456, 45)).toBe(expected);
  });

  it(`should sanitize the input string before highlighting matches`, () => {
    const expected = 'hello <b>w</b>orld';

    expect(highlight('hello <b>world</b>', 'w')).toBe(expected);
  });

  it(`should not highlight anything if no matches are found`, () => {
    expect(highlight('gitlab', 'hello')).toBe('gitlab');
  });

  it(`should allow wrapping elements to be customized`, () => {
    const expected = '1<hello>2</hello>3';

    expect(highlight('123', '2', '<hello>', '</hello>')).toBe(expected);
  });
});