X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/4f9f82a3eed951ca13a4947796fcfd7e988ce100..c031ffaa79a223a05a4a58de2854c9855e94cc18:/src/editor/modules/documentCanvas/canvas/canvas.test.js diff --git a/src/editor/modules/documentCanvas/canvas/canvas.test.js b/src/editor/modules/documentCanvas/canvas/canvas.test.js index 7a0380a..642438a 100644 --- a/src/editor/modules/documentCanvas/canvas/canvas.test.js +++ b/src/editor/modules/documentCanvas/canvas/canvas.test.js @@ -3,10 +3,9 @@ define([ 'libs/chai', 'libs/sinon', 'modules/documentCanvas/canvas/canvas', -'modules/documentCanvas/canvas/documentElement', 'modules/documentCanvas/canvas/utils', 'wlxml/wlxml' -], function($, chai, sinon, canvas, documentElement, utils, wlxml) { +], function($, chai, sinon, canvas, utils, wlxml) { 'use strict'; /* global describe, it, beforeEach, afterEach */ @@ -34,6 +33,7 @@ describe('new Canvas', function() { expect(c.doc().children()).to.have.length(3); expect(c.doc().children()[0].canvas).to.equal(c); + expect(c.doc().children()[0].wlxmlNode.sameNode(doc.root)); }); }); @@ -58,7 +58,7 @@ describe('Handling changes to the document', function() { c = canvas.fromXMLDocument(doc); var header = doc.root.replaceWith({tagName: 'header'}); - expect(c.doc().data('wlxmlNode').sameNode(header)).to.equal(true); + expect(c.doc().wlxmlNode.sameNode(header)).to.equal(true); }); }); @@ -104,7 +104,7 @@ describe('Listening to document changes', function() { /* Make sure we handle invalidation of reference to wlxmlNode after changing its tag */ expect(headerNode.getData('canvasElement').sameNode(headerElement)).to.equal(true, 'node->element'); - expect(headerElement.data('wlxmlNode').sameNode(headerNode)).to.equal(true, 'element->node'); + expect(headerElement.wlxmlNode.sameNode(headerNode)).to.equal(true, 'element->node'); }); it('Handles nodeDetached event for an empty text node', function(done) { @@ -120,7 +120,7 @@ describe('Listening to document changes', function() { wait(function() { var parent = aTextElement.parent(); expect(aTextElement.getText({raw:true})).to.equal(utils.unicode.ZWS, 'canvas represents this as empty node'); - aTextElement.data('wlxmlNode').detach(); + aTextElement.wlxmlNode.detach(); expect(parent.children().length).to.equal(1); expect(parent.children()[0].getWlxmlTag()).to.equal('span'); done(); @@ -128,6 +128,45 @@ describe('Listening to document changes', function() { }); }); +describe('Displaying span nodes', function() { + it('inlines a span element with a text', function() { + var c = getCanvasFromXML('
Alice
'), + spanElement = c.doc().children()[0]; + expect(spanElement.isBlock()).to.equal(false); + }); + it('renders non-span element as a block', function() { + var c = getCanvasFromXML('
'), + element = c.doc().children()[0], + node = element.wlxmlNode; + + expect(element.isBlock()).to.equal(false, 'initially inline'); + node = node.setTag('div'); + expect(node.getData('canvasElement').isBlock()).to.equal(true, 'block'); + }); + + it('inlines a span element if its block content gets removed', function() { + var c = getCanvasFromXML('
Alice
has
a cat!
'), + spanElement = c.doc().children()[0], + divNode = spanElement.wlxmlNode.contents()[1]; + + expect(spanElement.isBlock()).to.equal(true, 'initially a block'); + divNode.detach(); + expect(spanElement.isBlock()).to.equal(false, 'inlined after removing inner block'); + + spanElement.wlxmlNode.append({tagName: 'div'}); + + expect(spanElement.isBlock()).to.equal(true, 'block again after bringing back inner block'); + }); + + it('keeps showing element as a block after changing its node tag to span if it contains elements of non-span nodes', function() { + var c = getCanvasFromXML('
'), + outerDivElement = c.doc().children()[0], + outerDivNode = outerDivElement.wlxmlNode; + outerDivNode = outerDivNode.setTag('span'); + expect(c.doc().children()[0].isBlock()).to.equal(true); + }); +}); + describe('Cursor', function() { /* globals Node */ var getSelection;