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