X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/b2f1929ee729de25d516b0f9cdb49f265ce2d848..ecf3b34e969acfeeb5d09b7287b233ce4bffed83:/modules/documentCanvas/canvas/canvas.test3.js?ds=inline
diff --git a/modules/documentCanvas/canvas/canvas.test3.js b/modules/documentCanvas/canvas/canvas.test3.js
index 3b14b19..3c53f09 100644
--- a/modules/documentCanvas/canvas/canvas.test3.js
+++ b/modules/documentCanvas/canvas/canvas.test3.js
@@ -2,8 +2,9 @@ define([
'libs/chai',
'libs/sinon',
'modules/documentCanvas/canvas/canvas',
-'modules/documentCanvas/canvas/documentElement'
-], function(chai, sinon, canvas, documentElement) {
+'modules/documentCanvas/canvas/documentElement',
+'modules/documentCanvas/canvas/utils'
+], function(chai, sinon, canvas, documentElement, utils) {
'use strict';
@@ -30,10 +31,10 @@ describe('Canvas', function() {
});
describe('Internal HTML representation of a DocumentTextElement', function() {
- it('is text node wrapped in a div with wlxml-text attribute set', function() {
+ it('is text node wrapped in a div with document-text-element attribute set', function() {
var dom = canvas.fromXML('').doc().children()[0].dom();
expect(dom.prop('tagName')).to.equal('DIV');
- expect(dom.attr('wlxml-text')).to.equal('');
+ expect(dom.attr('document-text-element')).to.equal('');
expect(dom.contents().length).to.equal(1);
expect(dom.contents()[0].nodeType).to.equal(Node.TEXT_NODE);
expect($(dom.contents()[0]).text()).to.equal('Alice');
@@ -1111,6 +1112,25 @@ describe('Canvas', function() {
expect(cursor.isSelectingSiblings()).to.equal(false, '"has" and "big" are not children');
})
+
+ describe('zero width space handling', function() {
+ it('position range includes ZWS at the boundries of text in case when native selection api doesn\'t', function() {
+ var c = canvas.fromXML(""),
+ dom = c.doc().dom(),
+ textNode = findTextNode(dom, 'Alice'),
+ cursor = c.getCursor();
+
+ textNode.data = utils.unicode.ZWS + 'Alice';
+ getSelection.returns({anchorNode: textNode, anchorOffset: 1, focusNode: textNode, focusOffset: 1});
+ expect(cursor.getPosition().offset).to.equal(0);
+ expect(cursor.getPosition().offsetAtBeginning).to.equal(true, 'offset at beginning');
+
+ textNode.data = 'Alice' + utils.unicode.ZWS;
+ getSelection.returns({anchorNode: textNode, anchorOffset: 5, focusNode: textNode, focusOffset: 5});
+ expect(cursor.getPosition().offset).to.equal(6);
+ expect(cursor.getPosition().offsetAtEnd).to.equal(true, 'offset at end');
+ });
+ });
});
describe('Serializing document to WLXML', function() {