import { createApp } from 'vue' describe('config.compilerOptions', () => { test('isCustomElement', () => { const app = createApp({ template: `` }) app.config.compilerOptions.isCustomElement = (tag: string) => tag === 'foo' const root = document.createElement('div') app.mount(root) expect(root.innerHTML).toBe('') }) test('comments', () => { const app = createApp({ template: `
` }) app.config.compilerOptions.comments = true // the comments option is only relevant in production mode __DEV__ = false const root = document.createElement('div') app.mount(root) expect(root.innerHTML).toBe('
') __DEV__ = true }) test('whitespace', () => { const app = createApp({ template: `
\n
` }) app.config.compilerOptions.whitespace = 'preserve' const root = document.createElement('div') app.mount(root) expect(root.firstChild!.childNodes.length).toBe(3) expect(root.firstChild!.childNodes[1].nodeType).toBe(Node.TEXT_NODE) }) test('delimiters', () => { const app = createApp({ data: () => ({ foo: 'hi' }), template: `[[ foo ]]` }) app.config.compilerOptions.delimiters = [`[[`, `]]`] const root = document.createElement('div') app.mount(root) expect(root.textContent).toBe('hi') }) }) describe('per-component compilerOptions', () => { test('isCustomElement', () => { const app = createApp({ template: ``, compilerOptions: { isCustomElement: (tag: string) => tag === 'foo' } }) const root = document.createElement('div') app.mount(root) expect(root.innerHTML).toBe('') }) test('comments', () => { const app = createApp({ template: `
`, compilerOptions: { comments: true } }) app.config.compilerOptions.comments = false // the comments option is only relevant in production mode __DEV__ = false const root = document.createElement('div') app.mount(root) expect(root.innerHTML).toBe('
') __DEV__ = true }) test('whitespace', () => { const app = createApp({ template: `
\n
`, compilerOptions: { whitespace: 'preserve' } }) const root = document.createElement('div') app.mount(root) expect(root.firstChild!.childNodes.length).toBe(3) expect(root.firstChild!.childNodes[1].nodeType).toBe(Node.TEXT_NODE) }) test('delimiters', () => { const app = createApp({ data: () => ({ foo: 'hi' }), template: `[[ foo ]]`, compilerOptions: { delimiters: [`[[`, `]]`] } }) const root = document.createElement('div') app.mount(root) expect(root.textContent).toBe('hi') }) })