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); }); }); });