X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/4f9f82a3eed951ca13a4947796fcfd7e988ce100..fc54b1e72b7ed4992bbc4a2ef3ae7f02393d174d:/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(''),
+ 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(''),
+ 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;