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