|
|
|
import { assert } from 'chai'
|
|
|
|
|
|
|
|
import { datasetModule, init, h } from '../../src/index';
|
|
|
|
|
|
|
|
const patch = init([
|
|
|
|
datasetModule
|
|
|
|
])
|
|
|
|
|
|
|
|
describe('dataset', function () {
|
|
|
|
before(function () {
|
|
|
|
if (!Object.hasOwnProperty.call(HTMLElement.prototype, 'dataset')) {
|
|
|
|
this.skip()
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
let elm: any, vnode0: any
|
|
|
|
beforeEach(function () {
|
|
|
|
elm = document.createElement('div')
|
|
|
|
vnode0 = elm
|
|
|
|
})
|
|
|
|
it('is set on initial element creation', function () {
|
|
|
|
elm = patch(vnode0, h('div', { dataset: { foo: 'foo' } })).elm
|
|
|
|
assert.strictEqual(elm.dataset.foo, 'foo')
|
|
|
|
})
|
|
|
|
it('updates dataset', function () {
|
|
|
|
const vnode1 = h('i', { dataset: { foo: 'foo', bar: 'bar' } })
|
|
|
|
const vnode2 = h('i', { dataset: { baz: 'baz' } })
|
|
|
|
elm = patch(vnode0, vnode1).elm
|
|
|
|
assert.strictEqual(elm.dataset.foo, 'foo')
|
|
|
|
assert.strictEqual(elm.dataset.bar, 'bar')
|
|
|
|
elm = patch(vnode1, vnode2).elm
|
|
|
|
assert.strictEqual(elm.dataset.baz, 'baz')
|
|
|
|
assert.strictEqual(elm.dataset.foo, undefined)
|
|
|
|
})
|
|
|
|
it('can be memoized', function () {
|
|
|
|
const cachedDataset = { foo: 'foo', bar: 'bar' }
|
|
|
|
const vnode1 = h('i', { dataset: cachedDataset })
|
|
|
|
const vnode2 = h('i', { dataset: cachedDataset })
|
|
|
|
elm = patch(vnode0, vnode1).elm
|
|
|
|
assert.strictEqual(elm.dataset.foo, 'foo')
|
|
|
|
assert.strictEqual(elm.dataset.bar, 'bar')
|
|
|
|
elm = patch(vnode1, vnode2).elm
|
|
|
|
assert.strictEqual(elm.dataset.foo, 'foo')
|
|
|
|
assert.strictEqual(elm.dataset.bar, 'bar')
|
|
|
|
})
|
|
|
|
it('handles string conversions', function () {
|
|
|
|
const vnode1 = h('i', { dataset: { empty: '', dash: '-', dashed: 'foo-bar', camel: 'fooBar', integer: 0 as any, float: 0.1 as any } })
|
|
|
|
elm = patch(vnode0, vnode1).elm
|
|
|
|
|
|
|
|
assert.strictEqual(elm.dataset.empty, '')
|
|
|
|
assert.strictEqual(elm.dataset.dash, '-')
|
|
|
|
assert.strictEqual(elm.dataset.dashed, 'foo-bar')
|
|
|
|
assert.strictEqual(elm.dataset.camel, 'fooBar')
|
|
|
|
assert.strictEqual(elm.dataset.integer, '0')
|
|
|
|
assert.strictEqual(elm.dataset.float, '0.1')
|
|
|
|
})
|
|
|
|
})
|