forked from mirrors/gecko-dev
--HG-- extra : commitid : F2OWKTvXUO4 extra : rebase_source : ec68631342e0edc59d77b6bab1cdc975ad175327
206 lines
6.9 KiB
JavaScript
206 lines
6.9 KiB
JavaScript
/*
|
|
Unit test for domutils
|
|
*/
|
|
|
|
assert = chai.assert;
|
|
|
|
|
|
// Tests the private Modules.domUtils object
|
|
// Modules.domUtils is unit tested as it has an interface access by other modules
|
|
|
|
|
|
describe('Modules.domutils', function() {
|
|
|
|
|
|
it('ownerDocument', function(){
|
|
var node = document.createElement('div');
|
|
assert.equal( Modules.domUtils.ownerDocument( node ).nodeType, 9);
|
|
});
|
|
|
|
|
|
it('innerHTML', function(){
|
|
var html = '<a href="http://glennjones.net">Glenn Jones</a>',
|
|
node = document.createElement('div');
|
|
|
|
node.innerHTML = html;
|
|
assert.equal( Modules.domUtils.innerHTML( node ), html );
|
|
});
|
|
|
|
|
|
it('hasAttribute', function(){
|
|
var node = document.createElement('a');
|
|
|
|
node.href = 'http://glennjones.net';
|
|
assert.isTrue( Modules.domUtils.hasAttribute( node, 'href' ) );
|
|
assert.isFalse( Modules.domUtils.hasAttribute( node, 'class' ) );
|
|
});
|
|
|
|
|
|
it('hasAttributeValue', function(){
|
|
var node = document.createElement('a');
|
|
|
|
node.href = 'http://glennjones.net';
|
|
assert.isTrue( Modules.domUtils.hasAttributeValue( node, 'href', 'http://glennjones.net' ) );
|
|
assert.isFalse( Modules.domUtils.hasAttributeValue( node, 'href', 'http://example.net' ) );
|
|
assert.isFalse( Modules.domUtils.hasAttributeValue( node, 'class', 'test' ) );
|
|
});
|
|
|
|
|
|
it('getAttribute', function(){
|
|
var node = document.createElement('a');
|
|
|
|
node.href = 'http://glennjones.net';
|
|
assert.equal( Modules.domUtils.getAttribute( node, 'href' ), 'http://glennjones.net' );
|
|
});
|
|
|
|
|
|
it('setAttribute', function(){
|
|
var node = document.createElement('a');
|
|
|
|
Modules.domUtils.setAttribute(node, 'href', 'http://glennjones.net')
|
|
assert.equal( Modules.domUtils.getAttribute( node, 'href' ), 'http://glennjones.net' );
|
|
});
|
|
|
|
|
|
it('removeAttribute', function(){
|
|
var node = document.createElement('a');
|
|
|
|
node.href = 'http://glennjones.net';
|
|
Modules.domUtils.removeAttribute(node, 'href')
|
|
assert.isFalse( Modules.domUtils.hasAttribute( node, 'href' ) );
|
|
});
|
|
|
|
|
|
it('getAttributeList', function(){
|
|
var node = document.createElement('a');
|
|
|
|
node.rel = 'next';
|
|
assert.deepEqual( Modules.domUtils.getAttributeList( node, 'rel'), ['next'] );
|
|
node.rel = 'next bookmark';
|
|
assert.deepEqual( Modules.domUtils.getAttributeList( node, 'rel'), ['next','bookmark'] );
|
|
});
|
|
|
|
|
|
it('hasAttributeValue', function(){
|
|
var node = document.createElement('a');
|
|
|
|
node.href = 'http://glennjones.net';
|
|
node.rel = 'next bookmark';
|
|
assert.isTrue( Modules.domUtils.hasAttributeValue( node, 'href', 'http://glennjones.net' ) );
|
|
assert.isFalse( Modules.domUtils.hasAttributeValue( node, 'href', 'http://codebits.glennjones.net' ) );
|
|
assert.isFalse( Modules.domUtils.hasAttributeValue( node, 'class', 'p-name' ) );
|
|
assert.isTrue( Modules.domUtils.hasAttributeValue( node, 'rel', 'bookmark' ) );
|
|
assert.isFalse( Modules.domUtils.hasAttributeValue( node, 'rel', 'previous' ) );
|
|
});
|
|
|
|
|
|
it('getNodesByAttribute', function(){
|
|
var node = document.createElement('ul');
|
|
node.innerHTML = '<li class="h-card">one</li><li>two</li><li class="h-card">three</li>';
|
|
|
|
assert.equal( Modules.domUtils.getNodesByAttribute( node, 'class' ).length, 2 );
|
|
assert.equal( Modules.domUtils.getNodesByAttribute( node, 'href' ).length, 0 );
|
|
});
|
|
|
|
|
|
it('getNodesByAttributeValue', function(){
|
|
var node = document.createElement('ul');
|
|
node.innerHTML = '<li class="h-card">one</li><li>two</li><li class="h-card">three</li><li class="p-name">four</li>';
|
|
|
|
assert.equal( Modules.domUtils.getNodesByAttributeValue( node, 'class', 'h-card' ).length, 2 );
|
|
assert.equal( Modules.domUtils.getNodesByAttributeValue( node, 'class', 'p-name' ).length, 1 );
|
|
assert.equal( Modules.domUtils.getNodesByAttributeValue( node, 'class', 'u-url' ).length, 0 );
|
|
});
|
|
|
|
|
|
it('getAttrValFromTagList', function(){
|
|
var node = document.createElement('a');
|
|
|
|
node.href = 'http://glennjones.net';
|
|
|
|
assert.equal( Modules.domUtils.getAttrValFromTagList( node, ['a','area'], 'href' ), 'http://glennjones.net' );
|
|
assert.equal( Modules.domUtils.getAttrValFromTagList( node, ['a','area'], 'class' ), null );
|
|
assert.equal( Modules.domUtils.getAttrValFromTagList( node, ['p'], 'href' ), null );
|
|
});
|
|
|
|
|
|
it('getSingleDescendant', function(){
|
|
var html = '<a class="u-url" href="http://glennjones.net">Glenn Jones</a>',
|
|
node = document.createElement('div');
|
|
|
|
node.innerHTML = html,
|
|
|
|
// one instance of a element
|
|
assert.equal( Modules.domUtils.getSingleDescendant( node ).outerHTML, html );
|
|
|
|
// two instances of a element
|
|
node.appendChild(document.createElement('a'));
|
|
assert.equal( Modules.domUtils.getSingleDescendant( node ), null );
|
|
|
|
});
|
|
|
|
|
|
it('getSingleDescendantOfType', function(){
|
|
var html = '<a class="u-url" href="http://glennjones.net">Glenn Jones</a>',
|
|
node = document.createElement('div');
|
|
|
|
node.innerHTML = html,
|
|
|
|
// one instance of a element
|
|
assert.equal( Modules.domUtils.getSingleDescendantOfType( node, ['a', 'link']).outerHTML, html );
|
|
assert.equal( Modules.domUtils.getSingleDescendantOfType( node, ['img','area']), null );
|
|
|
|
node.appendChild(document.createElement('p'));
|
|
assert.equal( Modules.domUtils.getSingleDescendantOfType( node, ['a', 'link']).outerHTML, html );
|
|
|
|
// two instances of a element
|
|
node.appendChild(document.createElement('a'));
|
|
assert.equal( Modules.domUtils.getSingleDescendantOfType( node, ['a', 'link']), null );
|
|
|
|
});
|
|
|
|
|
|
it('appendChild', function(){
|
|
var node = document.createElement('div'),
|
|
child = document.createElement('a');
|
|
|
|
Modules.domUtils.appendChild( node, child );
|
|
assert.equal( node.innerHTML, '<a></a>' );
|
|
});
|
|
|
|
|
|
it('removeChild', function(){
|
|
var node = document.createElement('div'),
|
|
child = document.createElement('a');
|
|
|
|
node.appendChild(child)
|
|
|
|
assert.equal( node.innerHTML, '<a></a>' );
|
|
Modules.domUtils.removeChild( child );
|
|
assert.equal( node.innerHTML, '' );
|
|
});
|
|
|
|
|
|
it('clone', function(){
|
|
var node = document.createElement('div');
|
|
|
|
node.innerHTML = 'text content';
|
|
assert.equal( Modules.domUtils.clone( node ).outerHTML, '<div>text content</div>' );
|
|
});
|
|
|
|
|
|
it('getElementText', function(){
|
|
assert.equal( Modules.domUtils.getElementText( {} ), '' );
|
|
});
|
|
|
|
|
|
it('getNodePath', function(){
|
|
var node = document.createElement('ul');
|
|
node.innerHTML = '<div><ul><li class="h-card">one</li><li>two</li><li class="h-card">three</li><li class="p-name">four</li></ul></div>';
|
|
var child = node.querySelector('.p-name');
|
|
|
|
assert.deepEqual( Modules.domUtils.getNodePath( child ), [0,0,3] );
|
|
});
|
|
|
|
|
|
});
|