Mocks for suitescript entry point scriptContext
npm install @availentdev/suitemocksnpm install @availentdev/suitemocks --save-dev
import afterSubmitContext from 'N/ScriptContext/afterSubmitContext';
./path/to/file/afterSubmitContext
javascript
const SuiteCloudJestConfiguration = require('@oracle/suitecloud-unit-testing/jest-configuration/SuiteCloudJestConfiguration');
const cliConfig = require('./suitecloud.config');
const TESTING_FRAMEWORK_PATH = '@oracle/suitecloud-unit-testing';
const CORE_STUBS_PATH = ${TESTING_FRAMEWORK_PATH}/stubs;
const nodeModulesToTransform = [CORE_STUBS_PATH].join('|');
const build = SuiteCloudJestConfiguration.build({
projectFolder: cliConfig.defaultProjectFolder,
projectType: SuiteCloudJestConfiguration.ProjectType.ACP,
customStubs: [
{
module: 'N/ScriptContext/beforeLoadContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/UserEvent/beforeLoadContext.js',
},
{
module: 'N/ScriptContext/beforeSubmitContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/UserEvent/beforeSubmitContext.js',
},
{
module: 'N/ScriptContext/afterSubmitContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/UserEvent/afterSubmitContext.js',
},
{
module: 'N/ScriptContext/inputContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/MapReduce/inputContext.js',
},
{
module: 'N/ScriptContext/mapContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/MapReduce/mapContext.js',
},
{
module: 'N/ScriptContext/reduceContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/MapReduce/reduceContext.js',
},
{
module: 'N/ScriptContext/summaryContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/MapReduce/summaryContext.js',
},
{
module: 'N/ScriptContext/pageInitContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/ClientScript/pageInitContext.js',
},
{
module: 'N/ScriptContext/saveRecordContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/ClientScript/saveRecordContext.js',
},
{
module: 'N/ScriptContext/fieldChangedContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/ClientScript/fieldChangedContext.js',
},
{
module: 'N/ScriptContext/sublistChangedContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/ClientScript/sublistChangedContext.js',
},
{
module: 'N/ScriptContext/postSourcingContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/ClientScript/postSourcingContext.js',
},
{
module: 'N/ScriptContext/lineInitContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/ClientScript/lineInitContext.js',
},
{
module: 'N/ScriptContext/validateFieldContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/ClientScript/validateFieldContext.js',
},
{
module: 'N/ScriptContext/validateLineContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/ClientScript/validateLineContext.js',
},
{
module: 'N/ScriptContext/validateInsertContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/ClientScript/validateInsertContext.js',
},
{
module: 'N/ScriptContext/validateDeleteContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/ClientScript/validateDeleteContext.js',
},
{
module: 'N/ScriptContext/eachParamsContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/MassUpdate/eachParamsContext.js',
},
{
module: 'N/ScriptContext/executeContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/ScheduledScript/executeContext.js',
},
{
module: 'N/ScriptContext/onRequestContext',
path: '/node_modules/@availentdev/suitemocks/customStubs/Suitelet/onRequestContext.js',
},
],
});
build.transformIgnorePatterns = [ /node_modules/(?!(${nodeModulesToTransform}|@availentdev/suitemocks)/)];
module.exports = build;
``
* Each scriptContext mock contains the properties normally found in the scriptContext for that entry point
* Properties representing SuiteScript module objects are included with each of their methods as a jest function
* Properties of primitive data types default to undefined
* Enums are included
* Example for User Event afterSubmit:
``javascript
{
oldRecord = recordObj,
newRecord = recordObj,
type = undefined,
UserEventType = {
COPY: 'copy',
CREATE: 'create',
VIEW: 'view',
EDIT: 'edit',
XEDIT: 'xedit',
DELETE: 'delete',
DROPSHIP: 'dropship',
SPECIALORDER: 'specialorder',
ORDERITEMS: 'orderitems',
CANCEL: 'cancel',
APPROVE: 'approve',
REJECT: 'reject',
RETRACT: 'retract',
SAVESUBMIT: 'savesubmit',
PACK: 'pack',
SHIP: 'ship',
EDITFORECAST: 'editforecast',
REASSIGN: 'reassign',
MARKCOMPLETE: 'markcomplete',
PRINT: 'print',
EMAIL: 'email',
CHANGEPASSWORD: 'changepassword',
TRANSFORM: 'transform',
PAYBILLS: 'paybills',
QUICKVIEW: 'quickview',
}
}
``
* oldRecord and newRecord in this example represent record.record objects
* Each method is a jest function
* Immediately available in tests expect(afterSubmitScriptContextMock.getValue).toHaveBeenCalled();`