summaryrefslogtreecommitdiff
path: root/spec/frontend/lib/utils/favicon_spec.js
blob: 1b986432b8a4ab6a6e06b24144f62b14641e25d7 (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
import { FaviconOverlayManager } from '@gitlab/favicon-overlay';
import * as faviconUtils from '~/lib/utils/favicon';

jest.mock('@gitlab/favicon-overlay');

describe('~/lib/utils/favicon', () => {
  afterEach(() => {
    faviconUtils.clearMemoizeCache();
  });

  describe.each`
    fnName                 | managerFn                                    | args
    ${'setFaviconOverlay'} | ${FaviconOverlayManager.setFaviconOverlay}   | ${['test']}
    ${'resetFavicon'}      | ${FaviconOverlayManager.resetFaviconOverlay} | ${[]}
  `('$fnName', ({ fnName, managerFn, args }) => {
    const call = () => faviconUtils[fnName](...args);

    it('initializes only once when called', async () => {
      expect(FaviconOverlayManager.initialize).not.toHaveBeenCalled();

      // Call twice so we can make sure initialize is only called once
      await call();
      await call();

      expect(FaviconOverlayManager.initialize).toHaveBeenCalledWith({
        faviconSelector: '#favicon',
      });
      expect(FaviconOverlayManager.initialize).toHaveBeenCalledTimes(1);
    });

    it('passes call to manager', async () => {
      expect(managerFn).not.toHaveBeenCalled();

      await call();

      expect(managerFn).toHaveBeenCalledWith(...args);
    });
  });
});