import { Assertions } from '@ephox/agar'; import { describe, it } from '@ephox/bedrock-client'; import { SugarElement } from '@ephox/sugar'; import { assert } from 'chai'; import * as CaretContainer from 'tinymce/core/caret/CaretContainer'; import * as CaretContainerRemove from 'tinymce/core/caret/CaretContainerRemove'; import CaretPosition from 'tinymce/core/caret/CaretPosition'; import * as ViewBlock from '../../module/test/ViewBlock'; describe('browser.tinymce.core.CaretContainerRemoveTest', () => { const viewBlock = ViewBlock.bddSetup(); const getRoot = viewBlock.get; const setupHtml = viewBlock.update; it('remove', () => { setupHtml('1'); CaretContainer.insertInline(getRoot().firstChild as Node, true); assert.isTrue(CaretContainer.isCaretContainerInline(getRoot().firstChild), 'Should be inline container'); CaretContainerRemove.remove(getRoot().firstChild); assert.isFalse(CaretContainer.isCaretContainerInline(getRoot().firstChild), 'Should not be inline container'); }); it('removeAndReposition block in same parent at offset', () => { setupHtml('1'); CaretContainer.insertBlock('p', getRoot().firstChild as Node, true); assert.isTrue(CaretContainer.isCaretContainerBlock(getRoot().firstChild), 'Should be block container'); const pos = CaretContainerRemove.removeAndReposition(getRoot().firstChild as Node, CaretPosition(getRoot(), 0)); assert.equal(pos.offset(), 0, 'Should be unchanged offset'); Assertions.assertDomEq('Should be unchanged container', SugarElement.fromDom(getRoot()), SugarElement.fromDom(pos.container())); assert.isFalse(CaretContainer.isCaretContainerBlock(getRoot().firstChild), 'Should not be block container'); }); it('removeAndReposition block in same parent before offset', () => { setupHtml('12'); CaretContainer.insertBlock('p', getRoot().childNodes[1], true); assert.isTrue(CaretContainer.isCaretContainerBlock(getRoot().childNodes[1]), 'Should be block container'); const pos = CaretContainerRemove.removeAndReposition(getRoot().childNodes[1], CaretPosition(getRoot(), 0)); assert.equal(pos.offset(), 0, 'Should be unchanged offset'); Assertions.assertDomEq('Should be unchanged container', SugarElement.fromDom(getRoot()), SugarElement.fromDom(pos.container())); assert.isFalse(CaretContainer.isCaretContainerBlock(getRoot().childNodes[1]), 'Should not be block container'); }); it('removeAndReposition block in same parent after offset', () => { setupHtml('12'); CaretContainer.insertBlock('p', getRoot().childNodes[1], true); assert.isTrue(CaretContainer.isCaretContainerBlock(getRoot().childNodes[1]), 'Should be block container'); const pos = CaretContainerRemove.removeAndReposition(getRoot().childNodes[1], CaretPosition(getRoot(), 3)); assert.equal(pos.offset(), 2, 'Should be changed offset'); Assertions.assertDomEq('Should be unchanged container', SugarElement.fromDom(getRoot()), SugarElement.fromDom(pos.container())); assert.isFalse(CaretContainer.isCaretContainerBlock(getRoot().childNodes[1]), 'Should not be block container'); }); });