X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/180cd85dd5dcdcb29eb1a4626e3c6412558caddb..9ce300f6e7b27995b982c14b79785e8ca4bed4f0:/src/smartxml/smartxml.test.js diff --git a/src/smartxml/smartxml.test.js b/src/smartxml/smartxml.test.js index 4f9a72a..8154ff5 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); @@ -369,6 +370,20 @@ describe('smartxml', function() { }); describe('Events', function() { + it('emits nodeDetached event on node detach', function() { + var node = elementNodeFromXML('
'), + innerNode = node.contents()[0], + spy = sinon.spy(); + node.document.on('change', spy); + + var detached = innerNode.detach(), + event = spy.args[0][0]; + + expect(event.type).to.equal('nodeDetached'); + expect(event.meta.node.sameNode(detached, 'detached node in event meta')); + expect(event.meta.parent.sameNode(node), 'original parent node in event meta'); + }), + it('emits nodeAdded event when appending new node', function() { var node = elementNodeFromXML('
'), spy = sinon.spy(); @@ -380,14 +395,19 @@ describe('smartxml', function() { expect(event.meta.node.sameNode(appended)).to.be.true; }); - it('doesn\'t emit nodeAdded when appending aready existing node', function() { + 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); - a.append(b); - expect(spy.callCount).to.equal(0); + + 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() { @@ -401,14 +421,18 @@ describe('smartxml', function() { expect(event.meta.node.sameNode(prepended)).to.be.true; }); - it('doesn\'t emit nodeAdded when prepending aready existing node', function() { + 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); - a.prepend(b); - expect(spy.callCount).to.equal(0); + + 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() { @@ -422,14 +446,18 @@ describe('smartxml', function() { expect(event.meta.node.sameNode(inserted)).to.be.true; }); - it('doesn\'t emit nodeAdded when inserting aready existing node after another', function() { + 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); - b.after(a); - expect(spy.callCount).to.equal(0); + 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() { @@ -443,14 +471,18 @@ describe('smartxml', function() { expect(event.meta.node.sameNode(inserted)).to.be.true; }); - it('doesn\'t emit nodeAdded when inserting aready existing node before another', function() { + 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); - a.before(b); - expect(spy.callCount).to.equal(0); + 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; }); });