You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
import { assert } from 'chai'
|
|
|
|
import { init, h, attributesModule } from '../../src/index';
|
|
|
|
const patch = init([
|
|
attributesModule
|
|
])
|
|
|
|
describe('svg', function () {
|
|
let elm: any, vnode0: any
|
|
beforeEach(function () {
|
|
elm = document.createElement('svg')
|
|
vnode0 = elm
|
|
})
|
|
|
|
it('removes child svg elements', function () {
|
|
const a = h('svg', {}, [
|
|
h('g'),
|
|
h('g')
|
|
])
|
|
const b = h('svg', {}, [
|
|
h('g')
|
|
])
|
|
const result = patch(patch(vnode0, a), b).elm as SVGElement
|
|
assert.strictEqual(result.childNodes.length, 1)
|
|
})
|
|
|
|
it('adds correctly xlink namespaced attribute', function () {
|
|
const xlinkNS = 'http://www.w3.org/1999/xlink'
|
|
const testUrl = '/test'
|
|
const a = h('svg', {}, [
|
|
h('use', {
|
|
attrs: { 'xlink:href': testUrl }
|
|
}, [])
|
|
])
|
|
|
|
const result = patch(vnode0, a).elm as SVGElement
|
|
assert.strictEqual(result.childNodes.length, 1)
|
|
const child = result.childNodes[0] as SVGUseElement
|
|
assert.strictEqual(child.getAttribute('xlink:href'), testUrl)
|
|
assert.strictEqual(child.getAttributeNS(xlinkNS, 'href'), testUrl)
|
|
})
|
|
|
|
it('adds correctly xml namespaced attribute', function () {
|
|
const xmlNS = 'http://www.w3.org/XML/1998/namespace'
|
|
const testAttrValue = 'und'
|
|
const a = h('svg', { attrs: { 'xml:lang': testAttrValue } }, [])
|
|
|
|
const result = patch(vnode0, a).elm as SVGElement
|
|
assert.strictEqual(result.getAttributeNS(xmlNS, 'lang'), testAttrValue)
|
|
assert.strictEqual(result.getAttribute('xml:lang'), testAttrValue)
|
|
})
|
|
})
|