new dataset Module and Test
parent
3d2916a951
commit
5b164c780a
@ -0,0 +1,19 @@
|
||||
function updateDataset(oldVnode, vnode) {
|
||||
var elm = vnode.elm,
|
||||
oldDataset = oldVnode.data.dataset || {},
|
||||
dataset = vnode.data.dataset || {},
|
||||
key
|
||||
|
||||
for (key in oldDataset) {
|
||||
if (!dataset[key]) {
|
||||
delete elm.dataset[key];
|
||||
}
|
||||
}
|
||||
for (key in dataset) {
|
||||
if (oldDataset[key] !== dataset[key]) {
|
||||
elm.dataset[key] = dataset[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {create: updateDataset, update: updateDataset}
|
@ -0,0 +1,44 @@
|
||||
var assert = require('assert');
|
||||
var fakeRaf = require('fake-raf');
|
||||
|
||||
var snabbdom = require('../snabbdom');
|
||||
fakeRaf.use();
|
||||
var patch = snabbdom.init([
|
||||
require('../modules/dataset'),
|
||||
]);
|
||||
var h = require('../h');
|
||||
|
||||
describe('dataset', function() {
|
||||
var elm, vnode0;
|
||||
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.equal(elm.dataset.foo, 'foo');
|
||||
});
|
||||
it('updates dataset', function() {
|
||||
var vnode1 = h('i', {dataset: {foo: 'foo', bar: 'bar'}});
|
||||
var vnode2 = h('i', {dataset: {baz: 'baz'}});
|
||||
elm = patch(vnode0, vnode1).elm;
|
||||
assert.equal(elm.dataset.foo, 'foo');
|
||||
assert.equal(elm.dataset.bar, 'bar');
|
||||
elm = patch(vnode1, vnode2).elm;
|
||||
assert.equal(elm.dataset.baz, 'baz');
|
||||
assert.equal(elm.dataset.foo, undefined);
|
||||
});
|
||||
it('handles string conversions', function() {
|
||||
var vnode1 = h('i', {dataset: {dash: '-', dashed:'a-b', camel: 'aB', integer:0, float:0.1}});
|
||||
elm = patch(vnode0, vnode1).elm;
|
||||
|
||||
assert.equal(elm.dataset.dash, '-');
|
||||
assert.equal(elm.dataset.dashed, 'aB');
|
||||
assert.equal(elm.dataset.camel, 'aB');
|
||||
assert.equal(elm.dataset.integer, '0');
|
||||
assert.equal(elm.dataset.float, '0.1');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
fakeRaf.restore();
|
Loading…
Reference in New Issue