X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/5281c07b13ea63c96602a232e61332fb41ca0779..02ea7eed98a6826504c4472a9309010277026a03:/src/smartxml/smartxml.test.js diff --git a/src/smartxml/smartxml.test.js b/src/smartxml/smartxml.test.js index 0826458..e7aa8d4 100644 --- a/src/smartxml/smartxml.test.js +++ b/src/smartxml/smartxml.test.js @@ -295,7 +295,7 @@ describe('smartxml', function() { it('wraps text spanning multiple sibling TextNodes', function() { var section = elementNodeFromXML('
Alice has a small cat
'), wrapper = section.wrapText({ - _with: {tag: 'span', attrs: {'attr1': 'value1'}}, + _with: {tagName: 'span', attrs: {'attr1': 'value1'}}, offsetStart: 6, offsetEnd: 4, textNodeIdx: [0,2] @@ -307,6 +307,7 @@ describe('smartxml', function() { var wrapper2 = section.contents()[1]; expect(wrapper2.sameNode(wrapper)).to.be.true; + expect(wrapper.getTagName()).to.equal('span'); var wrapperContents = wrapper.contents(); expect(wrapperContents.length).to.equal(3); @@ -368,6 +369,109 @@ describe('smartxml', function() { }); + describe('Events', function() { + it('emits nodeAdded event when appending new node', function() { + var node = elementNodeFromXML('
'), + spy = sinon.spy(); + node.document.on('change', spy); + + var appended = node.append({tagName:'div'}), + event = spy.args[0][0]; + expect(event.type).to.equal('nodeAdded'); + expect(event.meta.node.sameNode(appended)).to.be.true; + }); + + it('emits nodeMoved when appending aready existing node', function() { + var node = elementNodeFromXML('
'), + a = node.contents()[0], + b = node.contents()[1], + spy = sinon.spy(); + node.document.on('change', spy); + + var appended = a.append(b), + event = spy.args[0][0]; + + expect(spy.callCount).to.equal(1); + expect(event.type).to.equal('nodeMoved'); + expect(event.meta.node.sameNode(appended)).to.be.true; + }); + + it('emits nodeAdded event when prepending new node', function() { + var node = elementNodeFromXML('
'), + spy = sinon.spy(); + node.document.on('change', spy); + + var prepended = node.prepend({tagName:'div'}), + event = spy.args[0][0]; + expect(event.type).to.equal('nodeAdded'); + expect(event.meta.node.sameNode(prepended)).to.be.true; + }); + + it('emits nodeMoved when prepending aready existing node', function() { + var node = elementNodeFromXML('
'), + a = node.contents()[0], + b = node.contents()[1], + spy = sinon.spy(); + node.document.on('change', spy); + + var prepended = a.prepend(b), + event = spy.args[0][0]; + expect(spy.callCount).to.equal(1); + expect(event.type).to.equal('nodeMoved'); + expect(event.meta.node.sameNode(prepended)).to.be.true; + }); + + it('emits nodeAdded event when inserting node after another', function() { + var node = elementNodeFromXML('
').contents()[0], + spy = sinon.spy(); + node.document.on('change', spy); + + var inserted = node.after({tagName:'div'}), + event = spy.args[0][0]; + expect(event.type).to.equal('nodeAdded'); + expect(event.meta.node.sameNode(inserted)).to.be.true; + }); + + it('emits nodeMoved when inserting aready existing node after another', function() { + var node = elementNodeFromXML('
'), + a = node.contents()[0], + b = node.contents()[1], + spy = sinon.spy(); + node.document.on('change', spy); + var inserted = b.after(a), + event = spy.args[0][0]; + + expect(spy.callCount).to.equal(1); + expect(event.type).to.equal('nodeMoved'); + expect(event.meta.node.sameNode(inserted)).to.be.true; + }); + + it('emits nodeAdded event when inserting node before another', function() { + var node = elementNodeFromXML('
').contents()[0], + spy = sinon.spy(); + node.document.on('change', spy); + + var inserted = node.before({tagName:'div'}), + event = spy.args[0][0]; + expect(event.type).to.equal('nodeAdded'); + expect(event.meta.node.sameNode(inserted)).to.be.true; + }); + + it('emits nodeAdded when inserting aready existing node before another', function() { + var node = elementNodeFromXML('
'), + a = node.contents()[0], + b = node.contents()[1], + spy = sinon.spy(); + node.document.on('change', spy); + var inserted = a.before(b), + event = spy.args[0][0]; + + expect(spy.callCount).to.equal(1); + expect(event.type).to.equal('nodeMoved'); + expect(event.meta.node.sameNode(inserted)).to.be.true; + }); + }); + describe('Serializing document to WLXML', function() { it('keeps document intact when no changes have been made', function() { var xmlIn = '
Alice
has
a cat!
',