本文整理匯總了TypeScript中@ephox/agar.Chain.fromParent方法的典型用法代碼示例。如果您正苦於以下問題:TypeScript Chain.fromParent方法的具體用法?TypeScript Chain.fromParent怎麽用?TypeScript Chain.fromParent使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類@ephox/agar.Chain
的用法示例。
在下文中一共展示了Chain.fromParent方法的10個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: TinyUi
TinyLoader.setup(function (editor, onSuccess, onFailure) {
const tinyUi = TinyUi(editor);
Pipeline.async({}, [
Logger.t('insert url by typing', GeneralSteps.sequence([
tinyUi.sClickOnToolbar('click on link button', 'div[aria-label="Insert/edit link"] > button'),
Chain.asStep({}, [
Chain.fromParent(tinyUi.cWaitForPopup('Wait for dialog', 'div[role="dialog"]'),
[
Chain.fromChains([
UiFinder.cFindIn('div > label:contains("Url") + div > input'),
UiControls.cSetValue('http://www.test.com/'),
cFakeEvent('keyup')
]),
Chain.fromChains([
UiFinder.cFindIn('label:contains("Text to display") + input'),
UiControls.cGetValue,
Assertions.cAssertEq('should be the same url', 'http://www.test.com/')
]),
cCloseDialog
]
)
])
])),
Logger.t('insert url by pasting', GeneralSteps.sequence([
tinyUi.sClickOnToolbar('click on link button', 'div[aria-label="Insert/edit link"] > button'),
Chain.asStep({}, [
Chain.fromParent(tinyUi.cWaitForPopup('Wait for dialog', 'div[role="dialog"]'),
[
Chain.fromChains([
UiFinder.cFindIn('div > label:contains("Url") + div > input'),
UiControls.cSetValue('http://www.test.com/'),
cFakeEvent('paste')
]),
Chain.fromChains([
UiFinder.cFindIn('label:contains("Text to display") + input'),
UiControls.cGetValue,
Assertions.cAssertEq('should be the same url', 'http://www.test.com/')
]),
cCloseDialog
]
)
])
]))
], onSuccess, onFailure);
}, {
示例2: Plugin
UnitTest.asynctest('browser.tinymce.plugins.media.NoAdvancedTabTest', (success, failure) => {
Plugin();
Theme();
Pipeline.async({}, [
Log.chainsAsStep('TBA', 'Media: if alt source and poster set to false, do not show advance tab', [
Chain.fromParent(
Editor.cFromSettings({
plugins: ['media'],
toolbar: 'media',
media_alt_source: false,
media_poster: false,
theme: 'silver',
base_url: '/project/tinymce/js/tinymce'
}),
[
Chain.fromChains([
UiChains.cClickOnToolbar('click button', 'button[aria-label="Insert/edit media"]'),
Chain.inject(Body.body()),
UiFinder.cWaitForVisible('wait for popup', 'div.tox-dialog'),
Utils.cNotExists('div.tox-tab:contains(Advanced)')
]),
Editor.cRemove
]
)
]),
Log.chainsAsStep('TBA', 'Media: if alt source and poster not set to false, show advance tab', [
Chain.fromParent(
Editor.cFromSettings({
plugins: ['media'],
toolbar: 'media',
theme: 'silver',
base_url: '/project/tinymce/js/tinymce'
}),
[
Chain.fromChains([
UiChains.cClickOnToolbar('click button', 'button[aria-label="Insert/edit media"]'),
Chain.inject(Body.body()),
UiFinder.cWaitForVisible('wait for popup', 'div.tox-dialog'),
Utils.cExists('div.tox-tab:contains(Advanced)')
]),
Editor.cRemove
]
)
])
], () => success(), failure);
});
示例3: TinyUi
TinyLoader.setup(function (editor, onSuccess, onFailure) {
const tinyUi = TinyUi(editor);
const tinyApis = TinyApis(editor);
Pipeline.async({}, [
tinyApis.sFocus,
Logger.t('test cached response', GeneralSteps.sequence([
tinyUi.sClickOnToolbar('click media button', 'div[aria-label="Insert/edit media"] > button'),
Chain.asStep({}, [
Chain.fromParent(
tinyUi.cWaitForPopup('wait for media dialog', 'div[role="dialog"]'), [
Chain.fromChains([
Utils.cSetSourceInput(tinyUi, 'test'),
Utils.cFakeEvent('paste')
]),
Chain.fromChains([
cAssertEmbedValue('<div>x</div>')
]),
Chain.fromChains([
Utils.cSetSourceInput(tinyUi, 'XXX')
]),
Chain.fromChains([
UiFinder.cFindIn('button:contains("Ok")'),
Mouse.cClick
])
])
]),
sWaitForAndAssertNotification('Media embed handler threw unknown error.'),
tinyApis.sAssertContent('')
]))
], onSuccess, onFailure);
}, {
示例4: SilverTheme
UnitTest.asynctest('Default image dialog on empty data', (success, failure) => {
SilverTheme();
ImagePlugin();
Pipeline.async({}, [
Log.chainsAsStep('TBA', 'Image: default image dialog on empty data', [
Editor.cFromSettings(silverSettings),
cExecCommand('mceImage', true),
cWaitForDialog(),
Chain.fromParent(Chain.identity, [
cAssertInputValue(generalTabSelectors.src, ''),
cAssertInputValue(generalTabSelectors.alt, ''),
cAssertInputValue(generalTabSelectors.height, ''),
cAssertInputValue(generalTabSelectors.width, '')
]),
cFillActiveDialog({
src: {
value: 'src'
},
alt: 'alt',
dimensions: {
width: '200',
height: '100'
}
}),
cSubmitDialog(),
cAssertCleanHtml('Checking output', '<p><img src="src" alt="alt" width="200" height="100" /></p>'),
Editor.cRemove
])
], () => success(), failure);
});
示例5: TinyApis
TinyLoader.setup(function (editor, onSuccess, onFailure) {
const tinyApis = TinyApis(editor);
const tinyActions = TinyActions(editor);
Pipeline.async({},
Log.steps('TBA', 'Anchor: Add anchor by selecting text content, then check that anchor is inserted correctly', [
tinyApis.sFocus,
tinyApis.sSetContent('<p>abc 123</p>'),
tinyApis.sSetSelection([0, 0], 4, [0, 0], 7),
tinyActions.sContentKeystroke(Keys.space(), {}),
tinyApis.sExecCommand('mceanchor'),
Chain.asStep(Element.fromDom(document.body), [
Chain.fromParent(UiFinder.cWaitForVisible('wait for dialog', 'div[role="dialog"].tox-dialog'),
[
Chain.fromChains([
UiFinder.cFindIn('input'),
UiControls.cSetValue('abc')
]),
Chain.fromChains([
UiFinder.cFindIn('button:contains("Save")'),
Mouse.cClick
])
]
)
]),
tinyApis.sAssertContent('<p>abc <a id="abc"></a>123</p>')
])
, onSuccess, onFailure);
}, {
示例6: TinyApis
TinyLoader.setup(function (editor, onSuccess, onFailure) {
const tinyApis = TinyApis(editor);
const tinyActions = TinyActions(editor);
Pipeline.async({}, [
tinyApis.sFocus,
tinyApis.sSetContent('<p>abc 123</p>'),
tinyApis.sSetSelection([0, 0], 4, [0, 0], 7),
tinyActions.sContentKeystroke(Keys.space(), {}),
tinyApis.sExecCommand('mceanchor'),
Chain.asStep(Element.fromDom(document.body), [
Chain.fromParent(UiFinder.cWaitForVisible('wait for dialog', 'div[aria-label="Anchor"][role="dialog"]'),
[
Chain.fromChains([
UiFinder.cFindIn('input'),
UiControls.cSetValue('abc')
]),
Chain.fromChains([
UiFinder.cFindIn('button:contains("Ok")'),
Mouse.cClick
])
]
)
]),
tinyApis.sAssertContent('<p>abc <a id="abc"></a>123</p>')
], onSuccess, onFailure);
}, {
示例7: function
const sTestIsXYInContentArea = function (editor, deltaX, deltaY) {
const dx1 = - 25 - deltaX;
const dy1 = -25 - deltaY;
const dx2 = - 5 - deltaX;
const dy2 = - 5 - deltaY;
return Step.label('Check points relative to deltaX=' + deltaX + ' deltaY=' + deltaY, Chain.asStep({}, [
Chain.fromParent(
Chain.label(
'Calculate bounding rectangle',
Chain.injectThunked(() => getIframeClientRect(editor))
), [
Chain.label(
'Check 〈bottom right〉 + (' + dx1 + ', ' + dy1 + ') is inside editor',
Chain.op((rect) => Assertions.assertEq(
'Should be inside the area since the scrollbars are excluded',
true,
EditorView.isXYInContentArea(editor, rect.width + dx1, rect.height + dy1)
))
),
Chain.label(
'Check 〈bottom right〉 + (' + dx2 + ', ' + dy2 + ') is ' + (hiddenScrollbar ? 'inside' : 'outside') + ' editor',
Chain.op((rect) => Assertions.assertEq(
(hiddenScrollbar ?
'Should be inside the area since the scrollbars are hidden' :
'Should be outside the area since the cordinate is on the scrollbars'),
hiddenScrollbar,
EditorView.isXYInContentArea(editor, rect.width + dx2, rect.height + dy2)
))
)
]
)
]));
};
示例8: TinyUi
TinyLoader.setup(function (editor, onSuccess, onFailure) {
const tinyUi = TinyUi(editor);
const tinyApis = TinyApis(editor);
Pipeline.async({}, [
tinyApis.sFocus,
Log.stepsAsStep('TBA', 'Media: test cached response', [
tinyUi.sClickOnToolbar('click media button', 'button[aria-label="Insert/edit media"]'),
Chain.asStep({}, [
Chain.fromParent(
tinyUi.cWaitForPopup('wait for media dialog', 'div[role="dialog"]'), [
Chain.fromChains([
Utils.cSetSourceInput(tinyUi, 'test'),
Utils.cFakeEvent('paste'),
Chain.wait(0) // wait is needed because paste is triggered async
]),
Chain.runStepsOnValue(() => [ Utils.sAssertEmbedData(tinyUi, '<div>x</div>') ]),
Chain.fromChains([
Utils.cSetSourceInput(tinyUi, 'XXX')
]),
Chain.fromChains([
UiFinder.cFindIn(Utils.selectors.saveButton),
Mouse.cClick
])
]
)
]),
sWaitForAndAssertNotification('<p>Media embed handler threw unknown error.</p>'),
tinyApis.sAssertContent('')
])
], onSuccess, onFailure);
}, {
示例9: TinyUi
TinyLoader.setup(function (editor, onSuccess, onFailure) {
const tinyUi = TinyUi(editor);
Pipeline.async({}, [
Log.stepsAsStep('TBA', 'Image: image proportion constrains should work directly', [
tinyUi.sClickOnToolbar('click image button', 'button[aria-label="Insert/edit image"]'),
Chain.asStep({}, [
Chain.fromParent(tinyUi.cWaitForPopup('Wait for dialog', 'div[role="dialog"]'),
[
Chain.fromChains([
UiFinder.cFindIn('button.tox-browse-url'),
Mouse.cClick
]),
Chain.control(
cAssertInputValue(generalTabSelectors.width, '1'),
Guard.tryUntil('did not find width input with value 1', 10, 1000)
),
cSetInputValue(generalTabSelectors.height, '5'),
Chain.control(
cAssertInputValue(generalTabSelectors.width, '5'),
Guard.tryUntil('did not find width input with value 5', 10, 1000)
),
]
),
tinyUi.cSubmitDialog(),
Chain.inject(editor),
cAssertCleanHtml('Checking output', '<p><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="" width="5" height="5" /></p>')
])
])
], onSuccess, onFailure);
}, {
示例10: Plugin
UnitTest.asynctest('browser.tinymce.plugins.media.NoAdvancedTabTest', (success, failure) => {
Plugin();
Theme();
Pipeline.async({}, [
Logger.t('if alt source and poster set to false, do not show advance tab', Chain.asStep({}, [
Chain.fromParent(
Editor.cFromSettings({
plugins: ['media'],
toolbar: 'media',
media_alt_source: false,
media_poster: false,
skin_url: '/project/js/tinymce/skins/lightgray'
}),
[
Chain.fromChains([
UiChains.cClickOnToolbar('click button', 'div[aria-label="Insert/edit media"]'),
Chain.inject(Body.body()),
UiFinder.cWaitForVisible('wait for popup', 'div.mce-floatpanel[aria-label="Insert/edit media"]'),
cNotExists('div.mce-tab:contains("Advanced")')
]),
Editor.cRemove
]
)
])),
Logger.t('if alt source and poster not set to false, show advance tab', Chain.asStep({}, [
Chain.fromParent(
Editor.cFromSettings({
plugins: ['media'],
toolbar: 'media',
skin_url: '/project/js/tinymce/skins/lightgray'
}),
[
Chain.fromChains([
UiChains.cClickOnToolbar('click button', 'div[aria-label="Insert/edit media"]'),
Chain.inject(Body.body()),
UiFinder.cWaitForVisible('wait for popup', 'div.mce-floatpanel[aria-label="Insert/edit media"]'),
cExists('div.mce-tab:contains("Advanced")')
]),
Editor.cRemove
]
)
]))
], () => success(), failure);
});