import Vue from 'vue' describe('Directive v-html', () => { it('should render html', () => { const vm = new Vue({ template: '
', data: { a: 'hello' } }).$mount() expect(vm.$el.innerHTML).toBe('hello') }) it('should encode html entities', () => { const vm = new Vue({ template: '
', data: { a: '<' } }).$mount() expect(vm.$el.innerHTML).toBe('<') }) it('should work inline', () => { const vm = new Vue({ template: `
` }).$mount() expect(vm.$el.innerHTML).toBe('<') }) it('should work inline in DOM', () => { const el = document.createElement('div') el.innerHTML = `
` const vm = new Vue({ el }) expect(vm.$el.children[0].innerHTML).toBe('<') }) it('should support all value types', done => { const vm = new Vue({ template: '
', data: { a: false } }).$mount() waitForUpdate(() => { expect(vm.$el.innerHTML).toBe('false') vm.a = [] }) .then(() => { expect(vm.$el.innerHTML).toBe('[]') vm.a = {} }) .then(() => { expect(vm.$el.innerHTML).toBe('{}') vm.a = { toString() { return 'foo' } } }) .then(() => { expect(vm.$el.innerHTML).toBe('foo') vm.a = { toJSON() { return { foo: 'bar' } } } }) .then(() => { expect(vm.$el.innerHTML).toBe('{\n "foo": "bar"\n}') vm.a = 123 }) .then(() => { expect(vm.$el.innerHTML).toBe('123') vm.a = 0 }) .then(() => { expect(vm.$el.innerHTML).toBe('0') vm.a = ' ' }) .then(() => { expect(vm.$el.innerHTML).toBe(' ') vm.a = ' ' }) .then(() => { expect(vm.$el.innerHTML).toBe(' ') vm.a = null }) .then(() => { expect(vm.$el.innerHTML).toBe('') vm.a = undefined }) .then(() => { expect(vm.$el.innerHTML).toBe('') }) .then(done) }) })