diff --git a/packages/runtime-vapor/__tests__/rendererElement.spec.ts b/packages/runtime-vapor/__tests__/rendererElement.spec.ts new file mode 100644 index 000000000..c33f2cba9 --- /dev/null +++ b/packages/runtime-vapor/__tests__/rendererElement.spec.ts @@ -0,0 +1,78 @@ +import { makeRender } from './_utils' +import { template } from '../src/dom/template' + +const define = makeRender() + +describe('renderer: element', () => { + it('should create an element', () => { + const { html } = define({ + render() { + return template(`
`)() + }, + }).render() + + expect(html()).toBe('
') + }) + + it('should create an element with props', () => { + const { html } = define({ + render() { + return template(`
`)() + }, + }).render() + + expect(html()).toBe('
') + }) + + it('should create an element with direct text children', () => { + const { html } = define({ + render() { + return template(`
foo bar`)() + }, + }).render() + + expect(html()).toBe('
foo bar
') + }) + + it('should create an element with direct text children and props', () => { + const { html } = define({ + render() { + return template(`
bar`)() + }, + }).render() + + expect(html()).toBe('
bar
') + }) + + it.fails('should update an element tag which is already mounted', () => { + const { html } = define({ + render() { + return template(`
foo`)() + }, + }).render() + expect(html()).toBe('
foo
') + + define({ + render() { + return template(`foo`)() + }, + }).render() + expect(html()).toBe('foo') + }) + + it.fails('should update element props which is already mounted', () => { + const { html } = define({ + render() { + return template(`
foo`)() + }, + }).render() + expect(html()).toBe('
foo
') + + define({ + render() { + return template(`
foo`)() + }, + }).render() + expect(html()).toBe('
foo
') + }) +})