new dataset Module and Test

pull/91/head
hville 9 years ago
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…
Cancel
Save