Files
GDevelop/GDevelop.js/TestUtils/TestExtensions.js
T
Arthur Pacaud 2124133b4a Add an option to wait for a network request action to end before running other actions (#4023)
* In the future, there will be other actions where you can optionally wait for their tasks to be finished before running the rest of the actions. It makes logic easier and more straightforward to express in events.
* This is similar to the Wait action, except that it's optional.
2022-07-05 23:58:08 +02:00

259 lines
7.3 KiB
JavaScript

// Note: there are also test extensions for the IDE (for the Storybook and for the IDE tests).
// Search for "TestExtensions.js" in the codebase.
module.exports = {
/**
* Create dummy extensions into gd.JsPlatform
* @param gd The GD instance to use to create the extensions and find the platform.
*/
makeTestExtensions: (gd) => {
const platform = gd.JsPlatform.get();
{
const extension = new gd.PlatformExtension();
extension
.setExtensionInformation(
'AdMob',
'AdMob',
'Some fake extension mimicking the AdMob extension',
'Florian Rival',
'MIT'
)
.setExtensionHelpPath('/all-features/admob');
extension
.registerProperty('AdMobAppIdAndroid')
.setLabel('AdMob Android App ID')
.setDescription('ca-app-pub-XXXXXXXXXXXXXXXX~YYYYYYYYYY')
.setType('string');
extension
.registerProperty('AdMobAppIdIos')
.setLabel('AdMob iOS App ID')
.setDescription('ca-app-pub-XXXXXXXXXXXXXXXX~YYYYYYYYYY')
.setType('string');
extension
.addDependency()
.setName('AdMob Cordova plugin')
.setDependencyType('cordova')
.setExportName('gdevelop-cordova-admob-plus')
.setVersion('0.43.0')
.setExtraSetting(
'APP_ID_ANDROID',
new gd.PropertyDescriptor('AdMobAppIdAndroid').setType(
'ExtensionProperty'
)
)
.setExtraSetting(
'APP_ID_IOS',
new gd.PropertyDescriptor('AdMobAppIdIos').setType(
'ExtensionProperty'
)
)
.onlyIfSomeExtraSettingsNonEmpty();
extension
.addAction(
'ShowInterstitial',
'Show interstitial',
'Fake action that would show an interstitial screen.',
'Show the loaded interstitial',
'AdMob',
'JsPlatform/Extensions/admobicon24.png',
'JsPlatform/Extensions/admobicon16.png'
)
.getCodeExtraInformation()
.setIncludeFile('Extensions/FakeAdMob/admobtools.js')
.setFunctionName('gdjs.fakeAdMob.showInterstitial');
platform.addNewExtension(extension);
extension.delete(); // Release the extension as it was copied inside gd.JsPlatform
}
{
const extension = new gd.PlatformExtension();
extension.setExtensionInformation(
'FakeObjectWithUnsupportedCapability',
'Fake object not supporting the "effect" capability',
'Fake object not supporting the "effect" capability',
'',
'MIT'
);
const fakeObject = new gd.ObjectJsImplementation();
fakeObject.updateProperty = function (
objectContent,
propertyName,
newValue
) {
return false;
};
fakeObject.getProperties = function (objectContent) {
const objectProperties = new gd.MapStringPropertyDescriptor();
objectProperties
.getOrCreate('text')
.setValue(objectContent.text)
.setType('textarea')
.setLabel('Text');
return objectProperties;
};
fakeObject.setRawJSONContent(
JSON.stringify({
text: 'Some text.',
})
);
fakeObject.updateInitialInstanceProperty = function (
objectContent,
instance,
propertyName,
newValue,
project,
layout
) {
return false;
};
fakeObject.getInitialInstanceProperties = function (
content,
instance,
project,
layout
) {
var instanceProperties = new gd.MapStringPropertyDescriptor();
return instanceProperties;
};
const object = extension
.addObject(
'FakeObjectWithUnsupportedCapability',
'FakeObjectWithUnsupportedCapability',
'This is FakeObjectWithUnsupportedCapability',
'',
fakeObject
)
.addUnsupportedBaseObjectCapability('effect');
platform.addNewExtension(extension);
extension.delete(); // Release the extension as it was copied inside gd.JsPlatform
}
{
const extension = new gd.PlatformExtension();
extension.setExtensionInformation(
'FakeObjectWithAsyncAction',
'Fake object with an async action',
'Fake object with an async action',
'',
'MIT'
);
const fakeObject = new gd.ObjectJsImplementation();
fakeObject.updateProperty = function (
objectContent,
propertyName,
newValue
) {
return false;
};
fakeObject.getProperties = function (objectContent) {
const objectProperties = new gd.MapStringPropertyDescriptor();
return objectProperties;
};
fakeObject.setRawJSONContent(JSON.stringify({}));
fakeObject.updateInitialInstanceProperty = function (
objectContent,
instance,
propertyName,
newValue,
project,
layout
) {
return false;
};
fakeObject.getInitialInstanceProperties = function (
content,
instance,
project,
layout
) {
var instanceProperties = new gd.MapStringPropertyDescriptor();
return instanceProperties;
};
const object = extension.addObject(
'FakeObjectWithAsyncAction',
'FakeObjectWithAsyncAction',
'This is FakeObjectWithAsyncAction',
'',
fakeObject
);
object
.addScopedAction(
'DoAsyncAction',
'Some async action',
'Some async action.',
'Do some async action with _PARAM0_',
'',
'res/icon.png',
'res/icon.png'
)
.addParameter('object', 'Object', 'FakeObjectWithAsyncAction', false)
.getCodeExtraInformation()
.setAsyncFunctionName('doFakeAsyncAction');
object
.addScopedAction(
'DoOptionallyAsyncAction',
'Some optionally async action',
'Some optionally async action.',
'Do some optionally async action with _PARAM0_',
'',
'res/icon.png',
'res/icon.png'
)
.addParameter('object', 'Object', 'FakeObjectWithAsyncAction', false)
.getCodeExtraInformation()
.setFunctionName('noop')
.setAsyncFunctionName('doFakeAsyncAction');
platform.addNewExtension(extension);
extension.delete(); // Release the extension as it was copied inside gd.JsPlatform
}
{
const extension = new gd.PlatformExtension();
extension.setExtensionInformation(
'FakeOptionallyAsyncAction',
'Fake optionally async action',
'Fake optionally async action',
'',
'MIT'
);
extension
.addAction(
'DoOptionallyAsyncAction',
'Some optionally async action',
'Some optionally async action.',
'Optionally async action with _PARAM0_',
'',
'res/icon.png',
'res/icon.png'
)
.addParameter('expression', 'Wait time', '', false)
.getCodeExtraInformation()
.setFunctionName('gdjs.evtTools.runtimeScene.noop')
.setAsyncFunctionName('gdjs.evtTools.runtimeScene.wait');
platform.addNewExtension(extension);
extension.delete(); // Release the extension as it was copied inside gd.JsPlatform
}
},
};