Add tests for attributes module

pull/161/head
fix-fix 9 years ago
parent e68fb5884c
commit 4fe2f5fedf

@ -0,0 +1,59 @@
var assert = require('assert');
var snabbdom = require('../snabbdom');
var patch = snabbdom.init([
require('../modules/attributes'),
]);
var h = require('../h');
describe('attributes', function() {
var elm, vnode0;
beforeEach(function() {
elm = document.createElement('div');
vnode0 = elm;
});
it('have their provided values', function() {
var vnode1 = h('div', {attrs: {href: '/foo', minlength: 1, value: true}});
elm = patch(vnode0, vnode1).elm;
assert.strictEqual(elm.getAttribute('href'), '/foo');
assert.strictEqual(elm.getAttribute('minlength'), '1');
assert.strictEqual(elm.getAttribute('value'), 'true');
});
it('are not omitted when falsy values are provided', function() {
var vnode1 = h('div', {attrs: {href: null, minlength: 0, value: false}});
elm = patch(vnode0, vnode1).elm;
assert.strictEqual(elm.getAttribute('href'), 'null');
assert.strictEqual(elm.getAttribute('minlength'), '0');
assert.strictEqual(elm.getAttribute('value'), 'false');
});
describe('boolean attribute', function() {
it('is present if the value is truthy', function() {
var vnode1 = h('div', {attrs: {required: true, readonly: 1, noresize: 'truthy'}});
elm = patch(vnode0, vnode1).elm;
assert.strictEqual(elm.getAttribute('required'), 'true');
assert.strictEqual(elm.getAttribute('readonly'), '1');
assert.strictEqual(elm.getAttribute('noresize'), 'truthy');
});
it('is omitted if the value is falsy', function() {
var vnode1 = h('div', {attrs: {required: false, readonly: 0, noresize: null}});
elm = patch(vnode0, vnode1).elm;
assert.strictEqual(elm.getAttribute('required'), null);
assert.strictEqual(elm.getAttribute('readonly'), null);
assert.strictEqual(elm.getAttribute('noresize'), null);
});
});
describe('Object.prototype property', function() {
it('is not considered as a boolean attribute and shouldn\'t be omitted', function() {
var vnode1 = h('div', {attrs: {valueOf: true, toString: 1, constructor: 'truthy'}});
elm = patch(vnode0, vnode1).elm;
assert.strictEqual(elm.getAttribute('valueOf'), 'true');
assert.strictEqual(elm.getAttribute('toString'), '1');
assert.strictEqual(elm.getAttribute('constructor'), 'truthy');
var vnode2 = h('div', {attrs: {valueOf: false, toString: 0, constructor: null}});
elm = patch(vnode0, vnode2).elm;
assert.strictEqual(elm.getAttribute('valueOf'), 'false');
assert.strictEqual(elm.getAttribute('toString'), '0');
assert.strictEqual(elm.getAttribute('constructor'), 'null');
})
});
});

@ -4,3 +4,4 @@ require('./dataset');
require('./eventlisteners');
require('./attachto');
require('./thunk');
require('./attributes');

Loading…
Cancel
Save