X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/9fc9629a92ebc396c5f3f3cbe3dc8a7acc53f9c3..72006ca5628befdc32bb1cd31002f22c4a7c8bca:/modules/documentCanvas/canvas/canvas.test3.js diff --git a/modules/documentCanvas/canvas/canvas.test3.js b/modules/documentCanvas/canvas/canvas.test3.js index 0ffa9d9..56f8ee6 100644 --- a/modules/documentCanvas/canvas/canvas.test3.js +++ b/modules/documentCanvas/canvas/canvas.test3.js @@ -208,6 +208,71 @@ describe('Canvas', function() { expect(children[1]).to.be.instanceOf(documentElement.DocumentNodeElement); expect(children[1].sameNode(added)).to.be.true; }); + it('can put new DocumentNodeElement before DocumentTextElement', function() { + var c = canvas.fromXML('
Alice
'), + text = c.doc().children()[0], + added = text.before({tag: 'p'}), + children = c.doc().children(); + + expect(children.length).to.equal(2); + expect(children[0]).to.be.instanceOf(documentElement.DocumentNodeElement); + expect(children[0].sameNode(added)).to.be.true; + expect(children[1]).to.be.instanceOf(documentElement.DocumentTextElement); + expect(children[1].getText()).to.equal('Alice'); + }); + }); + + describe('Splitting text', function() { + + it('splits DocumentTextElement\'s parent into two DocumentNodeElements of the same type', function() { + var c = canvas.fromXML('
Some header
'), + section = c.doc(), + text = section.children()[0].children()[0]; + + text.split({offset: 5}); + expect(section.children().length).to.equal(2, 'section has two children'); + + var header1 = section.children()[0]; + var header2 = section.children()[1]; + + expect(header1.wlxmlTag).to.equal('header', 'first section child represents wlxml header'); + expect(header1.children().length).to.equal(1, 'first header has one text child'); + expect(header1.children()[0].getText()).to.equal('Some ', 'first header has correct content'); + expect(header2.wlxmlTag).to.equal('header', 'second section child represents wlxml header'); + expect(header2.children().length).to.equal(1, 'second header has one text child'); + expect(header2.children()[0].getText()).to.equal('header', 'second header has correct content'); + }); + + it('keeps DocumentTextElement\'s parent\'s children elements intact', function() { + var c = canvas.fromXML('\ +
\ +
\ + A fancy and nice header\ +
\ +
'), + section = c.doc(), + header = section.children()[0], + textAnd = header.children()[2]; + + textAnd.split({offset: 2}); + + var sectionChildren = section.children(); + expect(sectionChildren.length).to.equal(2, 'Section has two children'); + expect(sectionChildren[0].wlxmlTag).to.equal('header', 'First section element is a wlxml header'); + expect(sectionChildren[1].wlxmlTag).to.equal('header', 'Second section element is a wlxml header'); + + var firstHeaderChildren = sectionChildren[0].children(); + expect(firstHeaderChildren.length).to.equal(3, 'First header has three children'); + expect(firstHeaderChildren[0].getText()).to.equal('A ', 'First header starts with a text'); + expect(firstHeaderChildren[1].wlxmlTag).to.equal('span', 'First header has span in the middle'); + expect(firstHeaderChildren[2].getText()).to.equal(' a', 'First header ends with text'); + + var secondHeaderChildren = sectionChildren[1].children(); + expect(secondHeaderChildren.length).to.equal(3, 'Second header has three children'); + expect(secondHeaderChildren[0].getText()).to.equal('nd ', 'Second header starts with text'); + expect(secondHeaderChildren[1].wlxmlTag).to.equal('span', 'Second header has span in the middle'); + expect(secondHeaderChildren[2].getText()).to.equal(' header', 'Second header ends with text'); + }); }); describe('wrapping', function() { @@ -285,6 +350,29 @@ describe('Canvas', function() { }); }); + describe('Lists api', function() { + it('allows creation of a list from existing sibling DocumentElements', function() { + var c = canvas.fromXML('\ +
\ + Alice\ +
has
\ + a\ +
cat
\ +
'), + section = c.doc(), + textAlice = section.children()[0], + divCat = section.children()[3] + + c.list.create({element1: textAlice, element2: divCat}); + + expect(section.children().length).to.equal(1, 'section has one child element'); + + var list = section.children()[0]; + expect(list.is('list')).to.equal(true, 'section\'s only child is a list'); + expect(list.children().length).to.equal(4, 'list contains four elements'); + }); + }); + }); });