add options template tests (#2968)

* add options template tests

ref: #2872

* fix runtime error and warning optimaize

* update invalid template
This commit is contained in:
kazuya kawaguchi 2016-05-28 08:17:03 +09:00 committed by Evan You
parent c6d749b268
commit 05235942a7
2 changed files with 57 additions and 1 deletions

View File

@ -26,8 +26,11 @@ Vue.prototype.$mount = function (el: string | Element): Component {
} else if (template.nodeType) {
template = template.innerHTML
} else {
if (process.env.NODE_ENV !== 'production') {
warn('invalid template option:' + template, this)
}
return this
}
} else if (el) {
template = getOuterHTML(el)
}

View File

@ -0,0 +1,53 @@
import Vue from 'vue'
describe('Options template', () => {
let el
beforeEach(() => {
el = document.createElement('script')
el.type = 'x-template'
el.id = 'app'
el.innerHTML = '<p>{{message}}</p>'
document.body.appendChild(el)
})
afterEach(() => {
document.body.removeChild(el)
})
it('basic usage', () => {
const vm = new Vue({
template: '<div>{{message}}</div>',
data: { message: 'hello world' }
}).$mount()
expect(vm.$el.tagName).toBe('DIV')
expect(vm.$el.textContent).toBe(vm.message)
})
it('id reference', () => {
const vm = new Vue({
template: '#app',
data: { message: 'hello world' }
}).$mount()
expect(vm.$el.tagName).toBe('P')
expect(vm.$el.textContent).toBe(vm.message)
})
it('DOM element', () => {
const elm = document.createElement('p')
elm.innerHTML = '<p>{{message}}</p>'
const vm = new Vue({
template: elm,
data: { message: 'hello world' }
}).$mount()
expect(vm.$el.tagName).toBe('P')
expect(vm.$el.textContent).toBe(vm.message)
})
it('invalid template', () => {
new Vue({
template: Vue,
data: { message: 'hello world' }
}).$mount()
expect('invalid template option').toHaveBeenWarned()
})
})