PHP Classes

File: public/js/tinymce/src/core/src/test/js/browser/delete/BlockBoundaryTest.js

Recommend this page to a friend!
  Classes of Abed Nego Ragil Putra   GoLavaCMS   public/js/tinymce/src/core/src/test/js/browser/delete/BlockBoundaryTest.js   Download  
File: public/js/tinymce/src/core/src/test/js/browser/delete/BlockBoundaryTest.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: GoLavaCMS
Publish content on Web pages with SEO support
Author: By
Last change:
Date: 6 years ago
Size: 5,818 bytes
 

Contents

Class file image Download
asynctest( 'browser.tinymce.core.delete.BlockBoundaryTest', [ 'ephox.agar.api.Assertions', 'ephox.agar.api.Chain', 'ephox.agar.api.GeneralSteps', 'ephox.agar.api.Logger', 'ephox.agar.api.Pipeline', 'ephox.katamari.api.Fun', 'ephox.sugar.api.dom.Hierarchy', 'ephox.sugar.api.node.Element', 'global!document', 'tinymce.core.delete.BlockBoundary', 'tinymce.core.test.ViewBlock' ], function (Assertions, Chain, GeneralSteps, Logger, Pipeline, Fun, Hierarchy, Element, document, BlockBoundary, ViewBlock) { var success = arguments[arguments.length - 2]; var failure = arguments[arguments.length - 1]; var viewBlock = ViewBlock(); var cSetHtml = function (html) { return Chain.op(function () { viewBlock.update(html); }); }; var cReadBlockBoundary = function (forward, cursorPath, cursorOffset) { return Chain.mapper(function (viewBlock) { var container = Hierarchy.follow(Element.fromDom(viewBlock.get()), cursorPath).getOrDie(); var rng = document.createRange(); rng.setStart(container.dom(), cursorOffset); rng.setEnd(container.dom(), cursorOffset); return BlockBoundary.read(viewBlock.get(), forward, rng); }); }; var cAssertBlockBoundaryPositions = function (fromPath, fromOffset, toPath, toOffset) { return Chain.op(function (blockBoundaryOption) { var fromContainer = Hierarchy.follow(Element.fromDom(viewBlock.get()), fromPath).getOrDie(); var toContainer = Hierarchy.follow(Element.fromDom(viewBlock.get()), toPath).getOrDie(); var blockBoundary = blockBoundaryOption.getOrDie(); Assertions.assertDomEq('Should be expected from container', fromContainer, Element.fromDom(blockBoundary.from().position().container())); Assertions.assertEq('Should be expected from offset', fromOffset, blockBoundary.from().position().offset()); Assertions.assertDomEq('Should be expected to container', toContainer, Element.fromDom(blockBoundary.to().position().container())); Assertions.assertEq('Should be expected to offset', toOffset, blockBoundary.to().position().offset()); }); }; var cAssertBlockBoundaryBlocks = function (fromBlockPath, toBlockPath) { return Chain.op(function (blockBoundaryOption) { var expectedFromBlock = Hierarchy.follow(Element.fromDom(viewBlock.get()), fromBlockPath).getOrDie(); var expectedToBlock = Hierarchy.follow(Element.fromDom(viewBlock.get()), toBlockPath).getOrDie(); var blockBoundary = blockBoundaryOption.getOrDie(); Assertions.assertDomEq('Should be expected from block', expectedFromBlock, blockBoundary.from().block()); Assertions.assertDomEq('Should be expected to block', expectedToBlock, blockBoundary.to().block()); }); }; var cAssertBlockBoundaryNone = Chain.op(function (blockBoundaryOption) { Assertions.assertEq('BlockBoundary should be none', true, blockBoundaryOption.isNone()); }); viewBlock.attach(); Pipeline.async({}, [ Logger.t('None block boundaries', GeneralSteps.sequence([ Logger.t('Should be none since it is a single block', Chain.asStep(viewBlock, [ cSetHtml('<p>a</p>'), cReadBlockBoundary(true, [0, 0], 0), cAssertBlockBoundaryNone ])), Logger.t('Should be none since it is a single block', Chain.asStep(viewBlock, [ cSetHtml('<p>a</p>'), cReadBlockBoundary(false, [0, 0], 1), cAssertBlockBoundaryNone ])), Logger.t('Should be none since it is in the middle of a block', Chain.asStep(viewBlock, [ cSetHtml('<p>ab</p><p>c</p>'), cReadBlockBoundary(true, [0, 0], 1), cAssertBlockBoundaryNone ])), Logger.t('Should be none since it is in the middle of a block', Chain.asStep(viewBlock, [ cSetHtml('<p>c</p><p>ab</p>'), cReadBlockBoundary(true, [1, 0], 1), cAssertBlockBoundaryNone ])) ])), Logger.t('Some block boundaries', GeneralSteps.sequence([ Logger.t('Should some between simple blocks (forwards: true)', Chain.asStep(viewBlock, [ cSetHtml('<p>a</p><p>b</p>'), cReadBlockBoundary(true, [0, 0], 1), cAssertBlockBoundaryPositions([0, 0], 1, [1, 0], 0), cAssertBlockBoundaryBlocks([0], [1]) ])), Logger.t('Should some between simple blocks (forwards: false)', Chain.asStep(viewBlock, [ cSetHtml('<p>a</p><p>b</p>'), cReadBlockBoundary(false, [1, 0], 0), cAssertBlockBoundaryPositions([1, 0], 0, [0, 0], 1), cAssertBlockBoundaryBlocks([1], [0]) ])), Logger.t('Should some between complex blocks (forwards: true)', Chain.asStep(viewBlock, [ cSetHtml('<p><em>a</em></p><p><em>b</em></p>'), cReadBlockBoundary(true, [0, 0, 0], 1), cAssertBlockBoundaryPositions([0, 0, 0], 1, [1, 0, 0], 0), cAssertBlockBoundaryBlocks([0], [1]) ])), Logger.t('Should some between complex blocks (forwards: false)', Chain.asStep(viewBlock, [ cSetHtml('<p><em>a</em></p><p><em>b</em></p>'), cReadBlockBoundary(false, [1, 0, 0], 0), cAssertBlockBoundaryPositions([1, 0, 0], 0, [0, 0, 0], 1), cAssertBlockBoundaryBlocks([1], [0]) ])), Logger.t('Should some between blocks with br (forwards: true)', Chain.asStep(viewBlock, [ cSetHtml('<p>a<br></p><p>b</p>'), cReadBlockBoundary(true, [0, 0], 1), cAssertBlockBoundaryPositions([0, 0], 1, [1, 0], 0), cAssertBlockBoundaryBlocks([0], [1]) ])) ])) ], function () { viewBlock.detach(); success(); }, failure); } );