import { promises as fs } from 'fs'; import type { CustomIconLoader } from '../lib'; import { loadIcon } from '../lib/loader/loader'; const fixturesDir = __dirname + '/fixtures'; const loader: CustomIconLoader = async(name) => { return await fs.readFile(`${fixturesDir}/${name}.svg`, 'utf8'); } describe('Testing loadIcon', () => { test('CustomCollection', async () => { const svg = await loader('circle'); expect(svg).toBeTruthy(); const result = await loadIcon('a', 'circle', { customCollections: { 'a': { 'circle': svg as string, }, }, }); expect(result).toBeTruthy(); expect(svg).toEqual(result); }); test('CustomCollection with transform', async () => { const svg = await loader('circle'); expect(svg).toBeTruthy(); const result = await loadIcon('a', 'circle', { customCollections: { 'a': { 'circle': svg as string, }, }, customizations: { transform(icon) { return icon.replace(' -1).toBeTruthy(); expect(result && result.indexOf('height="1em"') > -1).toBeTruthy(); }); test('CustomCollection Icon with XML heading', async () => { const svg = await loader('1f3eb'); expect(svg).toBeTruthy(); // Intercept console.warn let warned = false; const warn = console.warn; console.warn = (/*...args*/) => { // warn.apply(this, args); warned = true; }; const result = await loadIcon('a', '1f3eb', { customCollections: { 'a': { '1f3eb': svg as string, }, }, }); // Restore console.warn console.warn = warn; expect(svg).toEqual(result); expect(warned).toEqual(true); }); });