X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/d87cc76a0a10ab488729d77c2c712f18f88eb341..9a93c89991001d4ed088bee3b20cea374aa91d37:/src/smartxml/smartxml.test.js diff --git a/src/smartxml/smartxml.test.js b/src/smartxml/smartxml.test.js index 86f16de..15fe394 100644 --- a/src/smartxml/smartxml.test.js +++ b/src/smartxml/smartxml.test.js @@ -1,7 +1,8 @@ define([ 'libs/chai', + 'libs/sinon', './smartxml.js' -], function(chai, smartxml) { +], function(chai, sinon, smartxml) { 'use strict'; /*jshint expr:true */ @@ -84,6 +85,19 @@ describe('smartxml', function() { expect(node.getTagName()).to.equal('span'); }); + it('emits nodeTagChange event', function() { + var node = elementNodeFromXML('
'), + spy = sinon.spy(); + + node.document.on('change', spy); + node.setTag('span'); + var event = spy.args[0][0]; + + expect(event.type).to.equal('nodeTagChange'); + expect(event.meta.node.sameNode(node)).to.be.true; + expect(event.meta.oldTagName).to.equal('div'); + }); + describe('Implementation specific expectations', function() { // DOM specifies ElementNode tag as a read-only property, so // changing it in a seamless way is a little bit tricky. For this reason @@ -119,7 +133,50 @@ describe('smartxml', function() { }); }); + describe('Setting node attributes', function() { + it('can set node attribute', function() { + var node = elementNodeFromXML('
'); + + node.setAttr('key', 'value'); + expect(node.getAttr('key')).to.equal('value'); + }); + it('emits nodeAttrChange event', function() { + var node = elementNodeFromXML('
'), + spy = sinon.spy(); + + node.document.on('change', spy); + node.setAttr('key', 'value2'); + var event = spy.args[0][0]; + + expect(event.type).to.equal('nodeAttrChange'); + expect(event.meta.node.sameNode(node)).to.be.true; + expect(event.meta.attr).to.equal('key'); + expect(event.meta.oldVal).to.equal('value1'); + }); + }); + + }); + }); + + describe('Basic TextNode properties', function() { + it('can have its text set', function() { + var node = elementNodeFromXML('
Alice
'), + textNode = node.contents()[0]; + + textNode.setText('Cat'); + expect(textNode.getText()).to.equal('Cat'); + }); + + it('emits nodeTextChange', function() { + var node = elementNodeFromXML('
Alice
'), + textNode = node.contents()[0], + spy = sinon.spy(); + + textNode.document.on('change', spy); + textNode.setText('Cat'); + var event = spy.args[0][0]; + expect(event.type).to.equal('nodeTextChange'); }); });