import { domBackend, composedBackend, shadowBackend } from '../base/env'
import * as glassEasel from '../../src'
const domHtml = (elem: glassEasel.Element): string => {
const domElem = elem.getBackendElement() as unknown as Element
return domElem.outerHTML
}
const testCases = (testBackend: glassEasel.GeneralBackendContext) => {
const componentSpace = new glassEasel.ComponentSpace()
componentSpace.updateComponentOptions({
writeFieldsToNode: true,
writeIdToDOM: true,
})
componentSpace.defineComponent({
is: '',
})
it('duplicated class names', () => {
const element = componentSpace.createComponentByUrl('root', '', {}, testBackend)
element.setNodeClass('foo bar foo')
expect(element.class).toBe('foo bar foo')
expect(domHtml(element)).toBe('')
element.classList!.toggle('foo', false)
expect(element.class).toBe('bar foo')
expect(domHtml(element)).toBe('')
element.classList!.toggle('foo', false)
expect(element.class).toBe('bar')
expect(domHtml(element)).toBe('')
element.classList!.toggle('foo', true)
expect(element.class).toBe('bar foo')
expect(domHtml(element)).toBe('')
element.class = 'foo bar foo'
expect(element.class).toBe('foo bar foo')
expect(domHtml(element)).toBe('')
element.class = 'foo bar'
expect(element.class).toBe('foo bar')
expect(domHtml(element)).toBe('')
})
}
describe('classList (DOM backend)', () => testCases(domBackend))
describe('classList (shadow backend)', () => testCases(shadowBackend))
describe('classList (composed backend)', () => testCases(composedBackend))