X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/ee5531417e78b332ff150401a27eec8fe67ef125..765844777c85210d541321bfed7582c07a1b4b00:/src/wlxml/wlxml.test.js diff --git a/src/wlxml/wlxml.test.js b/src/wlxml/wlxml.test.js index 2b495a8..93b6df9 100644 --- a/src/wlxml/wlxml.test.js +++ b/src/wlxml/wlxml.test.js @@ -239,6 +239,36 @@ describe('WLXMLDocument', function() { expect(testClassNode.object.testTransformation2().sameNode(testClassNode)).to.equal(true, '2'); }); }); + + describe('Context roots', function() { + var doc = getDocumentFromXML('
'); + doc.registerExtension({wlxmlClass: {a: {methods: { + isContextRoot: function(node) { + return node.getClass() === 'b'; + } + }}}}); + + var divA = doc.root.contents()[0], + divB = divA.contents()[0], + divC = divB.contents()[0]; + + it('allows extensions declaring a node as a context root', function() { + expect(divC.isContextRoot()).to.equal(false, 'c is not a context root'); + expect(divB.isContextRoot()).to.equal(true, 'b is a context root'); + expect(divA.isContextRoot()).to.equal(false, 'a is not a context root'); + }); + + it('closes context for parent context quering methods', function() { + expect(divC.isInside('b')).to.equal(true, 'c inside b'); + expect(divC.isInside('a')).to.equal(false, 'c not inside a'); + expect(divC.isInside({tagName: 'section'})).to.equal(false, 'c not inside section'); + + expect(divB.isInside('a')).to.equal(true, 'b inside a'); + expect(divB.isInside({tagName: 'section'})).to.equal(true, 'b inside section'); + + expect(divA.isInside({tagName: 'section'})).to.equal(true, 'a inside section'); + }); + }); }); }); \ No newline at end of file