import Vue from 'vue' describe('Options template', () => { let el beforeEach(() => { el = document.createElement('script') el.type = 'x-template' el.id = 'app' el.innerHTML = '

{{message}}

' document.body.appendChild(el) }) afterEach(() => { document.body.removeChild(el) }) it('basic usage', () => { const vm = new Vue({ template: '
{{message}}
', 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 = '

{{message}}

' 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() }) it('warn error in generated function', () => { new Vue({ template: '
{{ a"" }}{{ do + 1 }}
' }).$mount() expect('failed to compile template').toHaveBeenWarned() expect('invalid expression: v-if="!@"').toHaveBeenWarned() expect('invalid expression: {{ a"" }}').toHaveBeenWarned() expect('avoid using JavaScript keyword as property name: "do" in expression {{ do + 1 }}').toHaveBeenWarned() }) it('warn error in generated function (v-for)', () => { new Vue({ template: '
' }).$mount() expect('failed to compile template').toHaveBeenWarned() expect('invalid v-for alias "1"').toHaveBeenWarned() expect('invalid v-for iterator "2"').toHaveBeenWarned() expect('invalid expression: v-for="(1, 2) in a----"').toHaveBeenWarned() }) })