patchClass.spec.ts 1.0 KB

12345678910111213141516171819202122232425262728293031
  1. import { patchProp } from '../src/patchProp'
  2. import { ElementWithTransition, vtcKey } from '../src/components/Transition'
  3. import { svgNS } from '../src/nodeOps'
  4. describe('runtime-dom: class patching', () => {
  5. test('basics', () => {
  6. const el = document.createElement('div')
  7. patchProp(el, 'class', null, 'foo')
  8. expect(el.className).toBe('foo')
  9. patchProp(el, 'class', null, null)
  10. expect(el.className).toBe('')
  11. })
  12. test('transition class', () => {
  13. const el = document.createElement('div') as ElementWithTransition
  14. el[vtcKey] = new Set(['bar', 'baz'])
  15. patchProp(el, 'class', null, 'foo')
  16. expect(el.className).toBe('foo bar baz')
  17. patchProp(el, 'class', null, null)
  18. expect(el.className).toBe('bar baz')
  19. delete el[vtcKey]
  20. patchProp(el, 'class', null, 'foo')
  21. expect(el.className).toBe('foo')
  22. })
  23. test('svg', () => {
  24. const el = document.createElementNS(svgNS, 'svg')
  25. patchProp(el, 'class', null, 'foo', true)
  26. expect(el.getAttribute('class')).toBe('foo')
  27. })
  28. })