import { tmpl, multiTmpl, domBackend, execWithWarn, composedBackend, shadowBackend, } from '../base/env' import { virtual as matchElementWithDom } from '../base/match' import * as glassEasel from '../../src' const domHtml = (elem: glassEasel.Element): string => { const domElem = elem.getBackendElement() as unknown as Element return domElem.innerHTML } const testCases = (testBackend: glassEasel.GeneralBackendContext) => { test('basic tree building', () => { const def = glassEasel .registerElement({ template: tmpl(`
Hello world!
`), }) .general() const elem = glassEasel.Component.createWithContext('root', def, testBackend) expect(domHtml(elem)).toBe('
Hello world!
') matchElementWithDom(elem) }) test('comments inside template', () => { const def = glassEasel .registerElement({ template: tmpl(` Hello world! `), }) .general() const elem = glassEasel.Component.createWithContext('root', def, testBackend) expect(domHtml(elem)).toBe('Hello world!') matchElementWithDom(elem) }) test('meta tags inside template', () => { const def = glassEasel .registerElement({ template: tmpl(` Hello world! `), }) .general() const elem = glassEasel.Component.createWithContext('root', def, testBackend) expect(domHtml(elem)).toBe('Hello world!') matchElementWithDom(elem) }) test('basic data binding', () => { const def = glassEasel .registerElement({ template: tmpl(`
{{c}}
`), data: { a: 123, c: 'abc', }, }) .general() const elem = glassEasel.Component.createWithContext('root', def, testBackend).general() expect(domHtml(elem)).toBe('
abc
') matchElementWithDom(elem) elem.setData({ a: true, c: false, }) expect(domHtml(elem)).toBe('
false
') matchElementWithDom(elem) }) test('if blocks', () => { const def = glassEasel .registerElement({ template: tmpl(`
a
b
c
d
e
f
`), data: { cond1: false, cond2: '', }, }) .general() const elem = glassEasel.Component.createWithContext('root', def, testBackend) expect(domHtml(elem)).toBe('
c
f
') matchElementWithDom(elem) elem.setData({ cond1: true, }) expect(domHtml(elem)).toBe('
a
c
d
') matchElementWithDom(elem) elem.setData({ cond2: 1, }) expect(domHtml(elem)).toBe('
a
b
d
') matchElementWithDom(elem) elem.setData({ cond1: null, }) expect(domHtml(elem)).toBe('
b
e
') matchElementWithDom(elem) }) test('if blocks in template-is', () => { const def = glassEasel .registerElement({ template: tmpl(`