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.
60 lines
2.0 KiB
TypeScript
60 lines
2.0 KiB
TypeScript
5 years ago
|
import { assert } from 'chai'
|
||
9 years ago
|
|
||
5 years ago
|
import { datasetModule } from '../../package/modules/dataset'
|
||
5 years ago
|
import { init } from '../../package/init'
|
||
5 years ago
|
import { h } from '../../package/h'
|
||
5 years ago
|
|
||
4 years ago
|
const patch = init([
|
||
5 years ago
|
datasetModule
|
||
5 years ago
|
])
|
||
9 years ago
|
|
||
5 years ago
|
describe('dataset', function () {
|
||
5 years ago
|
before(function () {
|
||
|
if (!Object.hasOwnProperty.call(HTMLElement.prototype, 'dataset')) {
|
||
5 years ago
|
this.skip()
|
||
5 years ago
|
}
|
||
5 years ago
|
})
|
||
5 years ago
|
|
||
4 years ago
|
let elm: any, vnode0: any
|
||
5 years ago
|
beforeEach(function () {
|
||
5 years ago
|
elm = document.createElement('div')
|
||
|
vnode0 = elm
|
||
|
})
|
||
5 years ago
|
it('is set on initial element creation', function () {
|
||
5 years ago
|
elm = patch(vnode0, h('div', { dataset: { foo: 'foo' } })).elm
|
||
|
assert.strictEqual(elm.dataset.foo, 'foo')
|
||
|
})
|
||
5 years ago
|
it('updates dataset', function () {
|
||
4 years ago
|
const vnode1 = h('i', { dataset: { foo: 'foo', bar: 'bar' } })
|
||
|
const vnode2 = h('i', { dataset: { baz: 'baz' } })
|
||
5 years ago
|
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)
|
||
|
})
|
||
5 years ago
|
it('can be memoized', function () {
|
||
4 years ago
|
const cachedDataset = { foo: 'foo', bar: 'bar' }
|
||
|
const vnode1 = h('i', { dataset: cachedDataset })
|
||
|
const vnode2 = h('i', { dataset: cachedDataset })
|
||
5 years ago
|
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')
|
||
|
})
|
||
5 years ago
|
it('handles string conversions', function () {
|
||
4 years ago
|
const vnode1 = h('i', { dataset: { empty: '', dash: '-', dashed: 'foo-bar', camel: 'fooBar', integer: 0 as any, float: 0.1 as any } })
|
||
5 years ago
|
elm = patch(vnode0, vnode1).elm
|
||
9 years ago
|
|
||
5 years ago
|
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')
|
||
|
})
|
||
|
})
|