diff options
Diffstat (limited to 'spec/frontend/lib/utils/favicon_spec.js')
-rw-r--r-- | spec/frontend/lib/utils/favicon_spec.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/spec/frontend/lib/utils/favicon_spec.js b/spec/frontend/lib/utils/favicon_spec.js new file mode 100644 index 00000000000..1b986432b8a --- /dev/null +++ b/spec/frontend/lib/utils/favicon_spec.js @@ -0,0 +1,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); + }); + }); +}); |