+
+ describe('mergin text with preceding content', function() {
+ it('does nothing if text node parent has no preceding element', function() {
+ var doc = getDocumentFromXML('<section><div><div>some text</div></div></section>'),
+ text = getTextNode('some text', doc),
+ spy = sinon.spy();
+
+ doc.on('change', spy);
+ text.mergeContentUp();
+ expect(spy.callCount).to.equal(0);
+ });
+ it('does nothing if text node parent is precedeed by text node', function() {
+ var doc = getDocumentFromXML('<section><div></div>another text<div>some text</div></section>'),
+ text = getTextNode('some text', doc),
+ spy = sinon.spy();
+
+ doc.on('change', spy);
+ text.mergeContentUp();
+ expect(spy.callCount).to.equal(0);
+ });
+ it('does nothing if text node is not first child of its parent', function() {
+ var doc = getDocumentFromXML('<section><div></div><div><a></a>some text</div></section>'),
+ text = getTextNode('some text', doc),
+ spy = sinon.spy();
+
+ doc.on('change', spy);
+ text.mergeContentUp();
+ expect(spy.callCount).to.equal(0);
+ });
+ it('moves text node and its siblings to the block element preceding text node parent', function() {
+ var doc = getDocumentFromXML('<section><div></div><div>some text<span>is</span> here!</div></section>'),
+ text = getTextNode('some text', doc);
+
+ text.mergeContentUp();
+
+ var contents = doc.root.contents();
+ expect(contents.length).to.equal(1);
+ expect(contents[0].contents().length).to.equal(3);
+ expect(contents[0].contents()[0].getText()).to.equal('some text');
+ expect(contents[0].contents()[1].getTagName()).to.equal('span');
+ expect(contents[0].contents()[2].getText()).to.equal(' here!');
+ });
+ });