You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
2.7 KiB
117 lines
2.7 KiB
import Vue from 'vue'
|
|
import { formatComponentName, warn } from 'core/util/debug'
|
|
|
|
describe('Debug utilities', () => {
|
|
it('properly format component names', () => {
|
|
const vm = new Vue()
|
|
expect(formatComponentName(vm)).toBe('<Root>')
|
|
|
|
vm.$root = null
|
|
vm.$options.name = 'hello-there'
|
|
expect(formatComponentName(vm)).toBe('<HelloThere>')
|
|
|
|
vm.$options.name = null
|
|
vm.$options._componentTag = 'foo-bar-1'
|
|
expect(formatComponentName(vm)).toBe('<FooBar1>')
|
|
|
|
vm.$options._componentTag = null
|
|
vm.$options.__file = '/foo/bar/baz/SomeThing.vue'
|
|
expect(formatComponentName(vm)).toBe(`<SomeThing> at ${vm.$options.__file}`)
|
|
expect(formatComponentName(vm, false)).toBe('<SomeThing>')
|
|
|
|
vm.$options.__file = 'C:\\foo\\bar\\baz\\windows_file.vue'
|
|
expect(formatComponentName(vm)).toBe(`<WindowsFile> at ${vm.$options.__file}`)
|
|
expect(formatComponentName(vm, false)).toBe('<WindowsFile>')
|
|
})
|
|
|
|
it('generate correct component hierarchy trace', () => {
|
|
const one = {
|
|
name: 'one',
|
|
render: h => h(two)
|
|
}
|
|
const two = {
|
|
name: 'two',
|
|
render: h => h(three)
|
|
}
|
|
const three = {
|
|
name: 'three'
|
|
}
|
|
new Vue({
|
|
render: h => h(one)
|
|
}).$mount()
|
|
|
|
expect(
|
|
`Failed to mount component: template or render function not defined.
|
|
|
|
found in
|
|
|
|
---> <Three>
|
|
<Two>
|
|
<One>
|
|
<Root>`
|
|
).toHaveBeenWarned()
|
|
})
|
|
|
|
it('generate correct component hierarchy trace (recursive)', () => {
|
|
let i = 0
|
|
const one = {
|
|
name: 'one',
|
|
render: h => i++ < 5 ? h(one) : h(two)
|
|
}
|
|
const two = {
|
|
name: 'two',
|
|
render: h => h(three)
|
|
}
|
|
const three = {
|
|
name: 'three'
|
|
}
|
|
new Vue({
|
|
render: h => h(one)
|
|
}).$mount()
|
|
|
|
expect(
|
|
`Failed to mount component: template or render function not defined.
|
|
|
|
found in
|
|
|
|
---> <Three>
|
|
<Two>
|
|
<One>... (5 recursive calls)
|
|
<Root>`
|
|
).toHaveBeenWarned()
|
|
})
|
|
|
|
describe('warn', () => {
|
|
const msg = 'message'
|
|
const vm = new Vue()
|
|
|
|
it('calls warnHandler if warnHandler is set', () => {
|
|
Vue.config.warnHandler = jasmine.createSpy()
|
|
|
|
warn(msg, vm)
|
|
|
|
expect(Vue.config.warnHandler).toHaveBeenCalledWith(msg, vm, jasmine.any(String))
|
|
|
|
Vue.config.warnHandler = null
|
|
})
|
|
|
|
it('calls console.error if silent is false', () => {
|
|
Vue.config.silent = false
|
|
|
|
warn(msg, vm)
|
|
|
|
expect(msg).toHaveBeenWarned()
|
|
expect(console.error).toHaveBeenCalled()
|
|
})
|
|
|
|
it('does not call console.error if silent is true', () => {
|
|
Vue.config.silent = true
|
|
|
|
warn(msg, vm)
|
|
|
|
expect(console.error).not.toHaveBeenCalled()
|
|
|
|
Vue.config.silent = false
|
|
})
|
|
})
|
|
})
|
|
|