});
node.setData(this.getData());
+ this._$.replaceWith(node._$);
this._setNativeNode(node._$[0]);
this.triggerChangeEvent('nodeTagChange', {oldTagName: oldTagName, newTagName: this.getTagName()});
},
});
describe('Changing node tag', function() {
+ it('can change tag name', function() {
+ var doc = getDocumentFromXML('<div><header></header></div>'),
+ header = doc.root.contents()[0];
+ header.setTag('span');
+ expect(header.getTagName()).to.equal('span');
+
+ // DOM specifies ElementNode tag as a read-only property, so
+ // changing it in a seamless way is a little bit tricky. For this reason
+ // the folowing expectations are required, despite the fact that they actually are
+ // motivated by implemetation detail.
+ expect(header.parent().sameNode(doc.root)).to.equal(true, 'ensure we stayed in a document');
+ });
+
it('keeps custom data', function() {
var node = elementNodeFromXML('<div></div>');