@kickscondor/umbrellajs
Version:
Lightweight and intuitive javascript library
78 lines (56 loc) • 2.18 kB
JavaScript
// Based on
if(u(document.createDocumentFragment()).append('<div>').children().length == 0) {
Object.defineProperty(DocumentFragment.prototype, "children", {"get" : function() {
var arr = [],
child = this.firstChild;
while (child) {
if (child.nodeType == 1) arr.push(child);
child = child.nextSibling;
}
return arr;
}});
};
// Testing the replace plugin main file
describe(".replace(newValue)", function() {
afterEach(function(){
base.find('button.update').remove();
});
it("should be a function", function() {
expect(typeof base.replace).to.equal('function');
});
it("replace the single node string case", function() {
base.append('<a class="save">Save</a>');
base.find('a.save').replace('<button class="update">Update</button>');
size('.base > button.update', 1);
base.find('button.update').remove();
});
it("returns the correct values", function(){
base.append('<a class="save">Save</a>');
var button = base.find('a.save').replace('<button class="update">Update</button>').first();
expect(button.nodeName).to.equal('BUTTON');
expect(u(button).closest('body').length).to.equal(1);
base.find('button.update').remove();
});
it("replace multi nodes string case", function() {
base.append('<a class="save">Save</a><a class="save">Save</a>');
base.find('a.save').replace('<button class="update">Update</button>');
size('.base > button.update', 2);
base.find('button.update').remove();
});
it("replace the single node function case", function() {
base.append('<a class="save">Save</a>');
base.find('a.save').replace(function(link){
return '<button class="update">' + link.innerHTML + '</button>';
});
size('.base > button.update', 1);
base.find('button.update').remove();
});
it("replace multi nodes function case", function() {
base.append('<a class="save">Save</a><a class="save">Save</a>');
base.find('a.save').replace(function(link){
return '<button class="update">' + link.innerHTML + '</button>';
});
size('.base > button.update', 2);
base.find('button.update').remove();
});
});