import { assert } from 'chai' import { init } from '../../package/init' import { h } from '../../package/h' import { attributesModule } from '../../package/modules/attributes' 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) }) })