X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/ac4496abba91123b880ec644f9ab986f71d39462..d61535cf50c7a8cb597db7f1d9681901a06efaa5:/src/smartxml/smartxml.test.js?ds=sidebyside diff --git a/src/smartxml/smartxml.test.js b/src/smartxml/smartxml.test.js index 3eed027..86f16de 100644 --- a/src/smartxml/smartxml.test.js +++ b/src/smartxml/smartxml.test.js @@ -30,6 +30,15 @@ describe('smartxml', function() { var doc = getDocumentFromXML('
'); expect(doc.root.getTagName()).to.equal('div'); }); + + it('can resets its content entirely', function() { + var doc = getDocumentFromXML('
'); + + expect(doc.root.getTagName()).to.equal('div'); + + doc.loadXML('
'); + expect(doc.root.getTagName()).to.equal('header'); + }); }); describe('Basic ElementNode properties', function() { @@ -66,6 +75,52 @@ describe('smartxml', function() { expect(node.getData()).to.eql({key1: 'value1', key2: 'value2'}); }); }); + + describe('Changing node tag', function() { + + it('can change tag name', function() { + var node = elementNodeFromXML('
'); + node.setTag('span'); + expect(node.getTagName()).to.equal('span'); + }); + + describe('Implementation specific expectations', function() { + // 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 details. + + it('keeps node in the document', function() { + var doc = getDocumentFromXML('
'), + header = doc.root.contents()[0]; + header.setTag('span'); + expect(header.parent().sameNode(doc.root)).to.be.true; + }); + it('keeps custom data', function() { + var node = elementNodeFromXML('
'); + + node.setData('key', 'value'); + node.setTag('header'); + + expect(node.getTagName()).to.equal('header'); + expect(node.getData()).to.eql({key: 'value'}); + }); + + it('can change document root tag name', function() { + var doc = getDocumentFromXML('
'); + doc.root.setTag('span'); + expect(doc.root.getTagName()).to.equal('span'); + }); + + it('keeps contents', function() { + var node = elementNodeFromXML('
'); + node.setTag('header'); + expect(node.contents()).to.have.length(1); + }); + }); + + + }); }); describe('Manipulations', function() { @@ -121,6 +176,19 @@ describe('smartxml', function() { expect(input.isEqualNode(output)).to.be.true; }); + + it('keeps entities intact', function() { + var xmlIn = '
< >
', + doc = getDocumentFromXML(xmlIn), + xmlOut = doc.toXML(); + expect(xmlOut).to.equal(xmlIn); + }); + it('keeps entities intact when they form html/xml', function() { + var xmlIn = '
<abc>
', + doc = getDocumentFromXML(xmlIn), + xmlOut = doc.toXML(); + expect(xmlOut).to.equal(xmlIn); + }); }); });