X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/5281c07b13ea63c96602a232e61332fb41ca0779..ea6df9066799de1d2bfda2132ad06c2d8f57582e:/src/smartxml/smartxml.test.js diff --git a/src/smartxml/smartxml.test.js b/src/smartxml/smartxml.test.js index 0826458..4c9b860 100644 --- a/src/smartxml/smartxml.test.js +++ b/src/smartxml/smartxml.test.js @@ -368,6 +368,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!
',