PHP Classes

File: public/js/tinymce/src/plugins/paste/src/test/js/browser/InternalClipboardTest.js

Recommend this page to a friend!
  Classes of Abed Nego Ragil Putra   GoLavaCMS   public/js/tinymce/src/plugins/paste/src/test/js/browser/InternalClipboardTest.js   Download  
File: public/js/tinymce/src/plugins/paste/src/test/js/browser/InternalClipboardTest.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: 9,381 bytes
 

Contents

Class file image Download
asynctest( 'browser.tinymce.plugins.paste.InternalClipboardTest', [ 'ephox.agar.api.GeneralSteps', 'ephox.agar.api.Logger', 'ephox.agar.api.Pipeline', 'ephox.agar.api.RawAssertions', 'ephox.agar.api.Step', 'ephox.agar.api.Waiter', 'ephox.mcagar.api.TinyApis', 'ephox.mcagar.api.TinyLoader', 'tinymce.plugins.paste.core.CutCopy', 'tinymce.plugins.paste.core.InternalHtml', 'tinymce.plugins.paste.core.Utils', 'tinymce.plugins.paste.Plugin', 'tinymce.plugins.paste.test.MockDataTransfer', 'tinymce.themes.modern.Theme' ], function ( GeneralSteps, Logger, Pipeline, RawAssertions, Step, Waiter, TinyApis, TinyLoader, CutCopy, InternalHtml, Utils, Plugin, MockDataTransfer, Theme ) { var success = arguments[arguments.length - 2]; var failure = arguments[arguments.length - 1]; var dataTransfer, lastPreProcessEvent, lastPostProcessEvent; Plugin(); Theme(); var sResetProcessEvents = Step.sync(function () { lastPreProcessEvent = null; lastPostProcessEvent = null; }); var sCutCopyDataTransferEvent = function (editor, type) { return Step.sync(function () { dataTransfer = MockDataTransfer.create({}); editor.fire(type, { clipboardData: dataTransfer }); }); }; var sPasteDataTransferEvent = function (editor, data) { return Step.sync(function () { dataTransfer = MockDataTransfer.create(data); editor.fire('paste', { clipboardData: dataTransfer }); }); }; var sAssertClipboardData = function (expectedHtml, expectedText) { return Step.sync(function () { RawAssertions.assertEq('text/html data should match', expectedHtml, dataTransfer.getData('text/html')); RawAssertions.assertEq('text/plain data should match', expectedText, dataTransfer.getData('text/plain')); }); }; var sCopy = function (editor, tinyApis, html, spath, soffset, fpath, foffset) { return GeneralSteps.sequence([ tinyApis.sSetContent(html), tinyApis.sSetSelection(spath, soffset, fpath, foffset), sCutCopyDataTransferEvent(editor, 'copy') ]); }; var sCut = function (editor, tinyApis, html, spath, soffset, fpath, foffset) { return GeneralSteps.sequence([ tinyApis.sSetContent(html), tinyApis.sSetSelection(spath, soffset, fpath, foffset), sCutCopyDataTransferEvent(editor, 'cut') ]); }; var sPaste = function (editor, tinyApis, startHtml, pasteData, spath, soffset, fpath, foffset) { return GeneralSteps.sequence([ tinyApis.sSetContent(startHtml), tinyApis.sSetSelection(spath, soffset, fpath, foffset), sResetProcessEvents, sPasteDataTransferEvent(editor, pasteData) ]); }; var sTestCopy = function (editor, tinyApis) { return Logger.t('Copy tests', GeneralSteps.sequence([ Logger.t('Copy simple text', GeneralSteps.sequence([ sCopy(editor, tinyApis, '<p>text</p>', [0, 0], 0, [0, 0], 4), sAssertClipboardData('text', 'text'), tinyApis.sAssertContent('<p>text</p>'), tinyApis.sAssertSelection([0, 0], 0, [0, 0], 4) ])), Logger.t('Copy inline elements', GeneralSteps.sequence([ sCopy(editor, tinyApis, '<p>te<em>x</em>t</p>', [0, 0], 0, [0, 2], 1), sAssertClipboardData('te<em>x</em>t', 'text'), tinyApis.sAssertContent('<p>te<em>x</em>t</p>'), tinyApis.sAssertSelection([0, 0], 0, [0, 2], 1) ])), Logger.t('Copy partialy selected inline elements', GeneralSteps.sequence([ sCopy(editor, tinyApis, '<p>a<em>cd</em>e</p>', [0, 0], 0, [0, 1, 0], 1), sAssertClipboardData('a<em>c</em>', 'ac'), tinyApis.sAssertContent('<p>a<em>cd</em>e</p>'), tinyApis.sAssertSelection([0, 0], 0, [0, 1, 0], 1) ])), Logger.t('Copy collapsed selection', GeneralSteps.sequence([ sCopy(editor, tinyApis, '<p>abc</p>', [0, 0], 1, [0, 0], 1), sAssertClipboardData('', ''), tinyApis.sAssertContent('<p>abc</p>'), tinyApis.sAssertSelection([0, 0], 1, [0, 0], 1) ])) ])); }; var sTestCut = function (editor, tinyApis) { var sWaitUntilAssertContent = function (expected) { return Waiter.sTryUntil('Cut is async now, so need to wait for content', tinyApis.sAssertContent(expected), 100, 1000); }; return Logger.t('Cut tests', GeneralSteps.sequence([ Logger.t('Cut simple text', GeneralSteps.sequence([ sCut(editor, tinyApis, '<p>text</p>', [0, 0], 0, [0, 0], 4), sAssertClipboardData('text', 'text'), sWaitUntilAssertContent(''), tinyApis.sAssertSelection([0], 0, [0], 0) ])), Logger.t('Cut inline elements', GeneralSteps.sequence([ sCut(editor, tinyApis, '<p>te<em>x</em>t</p>', [0, 0], 0, [0, 2], 1), sAssertClipboardData('te<em>x</em>t', 'text'), sWaitUntilAssertContent(''), tinyApis.sAssertSelection([0], 0, [0], 0) ])), Logger.t('Cut partialy selected inline elements', GeneralSteps.sequence([ sCut(editor, tinyApis, '<p>a<em>cd</em>e</p>', [0, 0], 0, [0, 1, 0], 1), sAssertClipboardData('a<em>c</em>', 'ac'), sWaitUntilAssertContent('<p><em>d</em>e</p>'), tinyApis.sAssertSelection([0, 0, 0], 0, [0, 0, 0], 0) ])), Logger.t('Cut collapsed selection', GeneralSteps.sequence([ sCut(editor, tinyApis, '<p>abc</p>', [0, 0], 1, [0, 0], 1), sAssertClipboardData('', ''), sWaitUntilAssertContent('<p>abc</p>'), tinyApis.sAssertSelection([0, 0], 1, [0, 0], 1) ])) ])); }; var sAssertLastPreProcessEvent = function (expectedData) { return Step.sync(function () { RawAssertions.assertEq('Internal property should be equal', expectedData.internal, lastPreProcessEvent.internal); RawAssertions.assertEq('Content property should be equal', expectedData.content, lastPreProcessEvent.content); }); }; var sAssertLastPostProcessEvent = function (expectedData) { return Step.sync(function () { RawAssertions.assertEq('Internal property should be equal', expectedData.internal, lastPostProcessEvent.internal); RawAssertions.assertEq('Content property should be equal', expectedData.content, lastPostProcessEvent.node.innerHTML); }); }; var sWaitForProcessEvents = Waiter.sTryUntil('Did not get any events fired', Step.sync(function () { RawAssertions.assertEq('PastePreProcess event object', lastPreProcessEvent !== null, true); RawAssertions.assertEq('PastePostProcess event object', lastPostProcessEvent !== null, true); }), 100, 100); var sTestPaste = function (editor, tinyApis) { return Logger.t('Paste tests', GeneralSteps.sequence([ Logger.t('Paste external content', GeneralSteps.sequence([ sPaste(editor, tinyApis, '<p>abc</p>', { 'text/plain': 'X', 'text/html': '<p>X</p>' }, [0, 0], 0, [0, 0], 3), sWaitForProcessEvents, sAssertLastPreProcessEvent({ internal: false, content: 'X' }), sAssertLastPostProcessEvent({ internal: false, content: 'X' }) ])), Logger.t('Paste external content treated as plain text', GeneralSteps.sequence([ sPaste(editor, tinyApis, '<p>abc</p>', { 'text/html': '<p>X</p>' }, [0, 0], 0, [0, 0], 3), sWaitForProcessEvents, sAssertLastPreProcessEvent({ internal: false, content: 'X' }), sAssertLastPostProcessEvent({ internal: false, content: 'X' }) ])), Logger.t('Paste internal content with mark', GeneralSteps.sequence([ sPaste(editor, tinyApis, '<p>abc</p>', { 'text/plain': 'X', 'text/html': InternalHtml.mark('<p>X</p>') }, [0, 0], 0, [0, 0], 3), sWaitForProcessEvents, sAssertLastPreProcessEvent({ internal: true, content: '<p>X</p>' }), sAssertLastPostProcessEvent({ internal: true, content: '<p>X</p>' }) ])), Logger.t('Paste internal content with mime', GeneralSteps.sequence([ sPaste(editor, tinyApis, '<p>abc</p>', { 'text/plain': 'X', 'text/html': '<p>X</p>', 'x-tinymce/html': '<p>X</p>' }, [0, 0], 0, [0, 0], 3 ), sWaitForProcessEvents, sAssertLastPreProcessEvent({ internal: true, content: '<p>X</p>' }), sAssertLastPostProcessEvent({ internal: true, content: '<p>X</p>' }) ])) ])); }; TinyLoader.setup(function (editor, onSuccess, onFailure) { var tinyApis = TinyApis(editor); // Disabled tests on Edge 15 due to broken clipboard API Pipeline.async({}, Utils.isMsEdge() ? [ ] : [ sTestCopy(editor, tinyApis), sTestCut(editor, tinyApis), sTestPaste(editor, tinyApis) ], onSuccess, onFailure); }, { plugins: 'paste', init_instance_callback: function (editor) { editor.on('PastePreProcess', function (evt) { lastPreProcessEvent = evt; }); editor.on('PastePostProcess', function (evt) { lastPostProcessEvent = evt; }); }, skin_url: '/project/src/skins/lightgray/dist/lightgray' }, success, failure); } );