X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/26de8c3163f128baa02c78d172effcdf38a8adbc..6330b31da3fdc3a5c18a6497a3757ab8ea7fab4d:/modules/documentCanvas/canvas/canvas.test3.js
diff --git a/modules/documentCanvas/canvas/canvas.test3.js b/modules/documentCanvas/canvas/canvas.test3.js
index c4dc610..9877bb6 100644
--- a/modules/documentCanvas/canvas/canvas.test3.js
+++ b/modules/documentCanvas/canvas/canvas.test3.js
@@ -576,10 +576,11 @@ describe('Canvas', function() {
section = c.doc(),
text = section.children()[1].children()[0];
- text.unwrap();
+ var newTextContainer = text.unwrap();
expect(section.children().length).to.equal(1, 'section has one child');
expect(section.children()[0].getText()).to.equal('Alice has a cat');
+ expect(newTextContainer.sameNode(c.doc())).to.equal(true, 'unwrap returns new text parent DocumentNodeElement');
})
});
});
@@ -1087,6 +1088,178 @@ describe('Canvas', function() {
})
});
+
+ describe('Serializing document to WLXML', function() {
+ it('keeps document intact when no changes have been made', function() {
+ var xmlIn = '',
+ c = canvas.fromXML(xmlIn),
+ xmlOut = c.toXML();
+
+ var parser = new DOMParser(),
+ input = parser.parseFromString(xmlIn, "application/xml").childNodes[0],
+ output = parser.parseFromString(xmlOut, "application/xml").childNodes[0];
+
+ expect(input.isEqualNode(output)).to.be.true;
+ });
+
+ it('keeps arbitrary node attributes intact', function() {
+ var xmlIn = '',
+ $xmlOut = $(canvas.fromXML(xmlIn).toXML());
+
+ expect($xmlOut.attr('a')).to.equal('1');
+ expect($xmlOut.attr('xmlns:dcterms')).to.equal('http://purl.org/dc/terms/');
+ });
+
+ it('doesn\' serialize meta attribute if its empty', function() {
+ var c;
+
+ c = canvas.fromXML('');
+ c.doc().setWlxmlMetaAttr('uri', '');
+ expect($(c.toXML()).attr('meta-uri')).to.equal(undefined, 'overriding attribute with zero length string');
+
+ c = canvas.fromXML('');
+ c.doc().setWlxmlMetaAttr('uri', '');
+ expect($(c.toXML()).attr('meta-uri')).to.equal(undefined, 'setting attribute to zero length string');
+ });
+
+ describe('output xml', function() {
+ it('keeps entities intact', function() {
+ var xmlIn = '',
+ c = canvas.fromXML(xmlIn),
+ xmlOut = c.toXML();
+ expect(xmlOut).to.equal(xmlIn);
+ });
+ it('keeps entities intact when they form html/xml', function() {
+ var xmlIn = '',
+ c = canvas.fromXML(xmlIn),
+ xmlOut = c.toXML();
+ expect(xmlOut).to.equal(xmlIn);
+ });
+ });
+
+ describe('formatting output xml', function() {
+ /*it('keeps white spaces at the edges of input xml', function() {
+ var xmlIn = ' ',
+ c = canvas.fromXML(xmlIn),
+ xmlOut = c.toXML();
+
+ expect(xmlOut.substr(4)).to.equal(' <', 'start');
+ expect(xmlOut.substr(-2)).to.equal('> ', 'end');
+ });*/
+ it('keeps white space between XML nodes', function() {
+ var xmlIn = '',
+ c = canvas.fromXML(xmlIn),
+ xmlOut = c.toXML();
+
+ var partsIn = xmlIn.split('\n\n\n'),
+ partsOut = xmlOut.split('\n\n\n');
+
+ expect(partsIn).to.deep.equal(partsOut);
+ });
+
+ it('keeps white space between XML nodes - inline case', function() {
+ var xmlIn = '',
+ c = canvas.fromXML(xmlIn),
+ xmlOut = c.toXML();
+
+ var partsIn = xmlIn.split('\n\n\n'),
+ partsOut = xmlOut.split('\n\n\n');
+
+ expect(partsIn).to.deep.equal(partsOut);
+ });
+
+ it('keeps white space at the beginning of text', function() {
+ var xmlIn = '',
+ c = canvas.fromXML(xmlIn),
+ xmlOut = c.toXML();
+
+ expect(xmlOut).to.equal(xmlIn);
+ });
+
+ it('nests new children block elements', function() {
+ var c = canvas.fromXML('');
+
+ c.doc().append({tag: 'header'});
+
+ var xmlOut = c.toXML();
+ expect(xmlOut.split('\n ')[0]).to.equal('', 'nesting start ok');
+ expect(xmlOut.split('\n').slice(-1)[0]).to.equal('', 'nesting end ok');
+
+ });
+
+ it('doesn\'t nest new children inline elements', function() {
+ var c = canvas.fromXML('');
+
+ c.doc().append({tag: 'span'});
+
+ var xmlOut = c.toXML();
+ expect(xmlOut).to.equal('');
+ });
+
+ it('keeps original white space at the end of text', function() {
+
+ var xmlIn = ' Some text ended with white space \
+ \
+ Some text some text\
+ \
+ ',
+ c = canvas.fromXML(xmlIn);
+
+ var xmlOut = c.toXML();
+ console.log(xmlOut);
+ expect(xmlOut).to.equal(xmlIn);
+ });
+
+ it('keeps white space around text node', function() {
+ var xmlIn = '\
+ \
+ Some text surrounded by white space\
+ \
+ ',
+ c = canvas.fromXML(xmlIn);
+
+ var xmlOut = c.toXML();
+ expect(xmlOut).to.equal(xmlIn);
+ });
+
+ it('keeps white space around text node - last node case', function() {
+ var xmlIn = '\
+ \
+ \
+ Some text surrounded by white space\
+ \
+ ',
+ c = canvas.fromXML(xmlIn);
+
+ var xmlOut = c.toXML();
+ expect(xmlOut).to.equal(xmlIn);
+ });
+
+ it('keeps white space after detaching text element', function() {
+ var xmlIn = '\n\
+ \n\
+ text1\n\
+ \n\
+ ',
+ expectedXmlOut = '',
+ c = canvas.fromXML(xmlIn),
+ children = c.doc().children(),
+ text = children[children.length-1];
+
+ expect(text.getText()).to.equal('text1');
+
+ text.detach();
+
+ var xmlOut = c.toXML();
+ expect(xmlOut).to.equal(expectedXmlOut);
+ });
+
+ })
+ })
});