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