const mdiAlien = '' const fooBarIcon = 'foo/bar' jest.mock('idb-keyval', () => { return { get: () => Promise.resolve(''), set: () => Promise.resolve(), del: () => Promise.resolve(), } }) jest.spyOn(global, 'fetch').mockImplementation((src: string) => { if (!src.includes(fooBarIcon)){ return Promise.resolve({ ok: true, text: () => Promise.resolve(mdiAlien), } as Response) } return Promise.resolve({ ok: false, status: 404, statusText: 'mocked status text', } as Response) }) import { newSpecPage, SpecPage } from '@stencil/core/testing' import { MdsIcon } from '../mds-icon' describe('mds-icon', () => { let page: SpecPage beforeEach(async () => { page = await newSpecPage({ components: [MdsIcon], }) await page.setContent('') await page.waitForChanges() const element:HTMLMdsIconElement = page.body.querySelector('mds-icon') as HTMLMdsIconElement element.setSvgPath('assets/svg/') await page.waitForChanges() }) it('renders', async () => { const element = page.body.querySelector('mds-icon') expect(element).not.toBeNull() }) it('renders mdi/alien', async () => { await page.setContent('') await page.waitForChanges() const mdsicon = page.body.querySelector('mds-icon') expect(mdsicon).not.toBeNull() const svg = mdsicon?.shadowRoot?.querySelector('svg') expect(svg).not.toBeNull() }) it('shouldn\'t render unknown icon', async () => { // mock console.error launched by mds-icon when doesn't find svg jest.spyOn(console, 'error').mockImplementation(jest.fn()) await page.setContent(``) await page.waitForChanges() const mdsicon = page.body.querySelector('mds-icon') expect(mdsicon).not.toBeNull() const svg = mdsicon?.shadowRoot?.querySelector('svg') expect(svg).toBeNull() }) })