</section>\
');
var expected = '<div wlxml-tag="section">'
- + 'This is some text without its own wrapping tag.'
- + '<div wlxml-tag="div" wlxml-class="p-subclass">This is a paragraph.</div>'
- + '<div wlxml-tag="div">This is text in a div <div wlxml-tag="span">with some inline text</div>.</div>'
- + 'This is some text without its own wrapping tag.'
+ + '<div wlxml-text>This is some text without its own wrapping tag.</div>'
+ + '<div wlxml-tag="div" wlxml-class="p-subclass">'
+ + '<div wlxml-text>This is a paragraph.</div>'
+ + '</div>'
+ + '<div wlxml-tag="div">'
+ + '<div wlxml-text>This is text in a div </div>'
+ + '<div wlxml-tag="span">'
+ + '<div wlxml-text>with some inline text</div>'
+ + '</div>'
+ + '<div wlxml-text>.</div>'
+ + '</div>'
+ + '<div wlxml-text>This is some text without its own wrapping tag.</div>'
+ '</div>';
expect(c.doc().dom()[0].isEqualNode($(expected)[0])).to.be.true;
});
});
describe('Internal HTML representation of a DocumentTextElement', function() {
- it('is just a TextNode', function() {
+ it('is text node wrapped in a div with wlxml-text attribute set', function() {
var dom = canvas.fromXML('<section>Alice</section>').doc().children()[0].dom();
- expect(dom[0].nodeType === Node.TEXT_NODE);
+ expect(dom.prop('tagName')).to.equal('DIV');
+ expect(dom.attr('wlxml-text')).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');
});
});
expect(c.doc().getWlxmlTag()).to.equal('section');
});
+ describe('root element', function() {
+ it('has no parent', function() {
+ var c = canvas.fromXML('<section></section>');
+ expect(c.doc().parent()).to.be.null;
+ });
+ });
+
describe('DocumentTextElement', function() {
it('can have its content set', function() {
var c = canvas.fromXML('<section>Alice</section>'),
it('returns DocumentTextElement instance from Text Node', function() {
var c = canvas.fromXML('<section>Alice</section>'),
- textNode = c.doc().children(0)[0].dom().get(0),
+ aliceElement = c.doc().children()[0],
+ textNode = aliceElement.dom().contents()[0],
element = c.getDocumentElement(textNode);
+
+ expect(textNode.nodeType).to.equal(Node.TEXT_NODE, 'text node selected');
+ expect($(textNode).text()).to.equal('Alice');
+
expect(element).to.be.instanceOf(documentElement.DocumentTextElement);
expect(element.sameNode(c.doc().children()[0]));
});
describe('unwrapping', function() {
it('unwraps DocumentTextElement from its parent DocumentNodeElement if it\'s its only child', function() {
- var c = canvas.fromXML('<section><div>Alice has a cat</div></section>'),
+ var c = canvas.fromXML('<section>Alice <span>has a</span> cat</section>'),
section = c.doc(),
- text = section.children()[0].children()[0];
+ text = section.children()[1].children()[0];
text.unwrap();
- expect(section.children().length).to.equal(1);
+ expect(section.children().length).to.equal(1, 'section has one child');
expect(section.children()[0].getText()).to.equal('Alice has a cat');
})
});
it('returns position when browser selection collapsed', function() {
var c = canvas.fromXML('<section>Alice has a cat</section>'),
dom = c.doc().dom(),
- text = dom.contents(0);
+ text = $(dom.contents()[0]).contents()[0];
- expect(text.text()).to.equal('Alice has a cat');
+ expect(text.nodeType).to.equal(Node.TEXT_NODE, 'correct node selected');
+ expect($(text).text()).to.equal('Alice has a cat');
getSelection.returns({
- anchorNode: text[0],
- focusNode: text[0],
+ anchorNode: text,
+ focusNode: text,
anchorOffset: 5,
focusOffset: 5,
isCollapsed: true