The Complete Unit Test Script
The following code is a full unit test for a user event script that executes on a beforeLoad entry point trigger. For information about the original script, see Hide a Column in a Sublist.
// import script
import script from "../src/FileCabinet/SuiteScripts/ue_hideSublistColumn";
// import modules used - log, serverWidget -form, field, sublist
import serverWidget from 'N/ui/serverWidget'
import log from 'N/log'
import Form from 'N/ui/serverWidget/form'
import Field from 'N/ui/serverWidget/field'
import Sublist from 'N/ui/serverWidget/sublist'
import record from 'N/record'
import Record from 'N/record/instance'
// mock each module
jest.mock('N/ui/serverWidget');
jest.mock('N/ui/serverWidget/form');
jest.mock('N/ui/serverWidget/sublist');
jest.mock('N/ui/serverWidget/field');
beforeEach(() => {
jest.clearAllMocks();
});
// define context
const context = {
UserEventType: {
CREATE: 'CREATE',
EDIT: 'EDIT',
VIEW: 'VIEW'
}
}
// enums used
serverWidget.FieldDisplayType = {
HIDDEN: 'HIDDEN'
}
describe('Hide a sublist column UE test', () => {
it('Should test beforeLoad function parameters', () => {
// given
context.type = context.UserEventType.VIEW; // incorrect parameter value
// when
script.beforeLoad(context);
// then
expect(Form.getSublist).not.toHaveBeenCalled();
expect(Sublist.getField).not.toHaveBeenCalled();
});
it('Should test hideColumnField function', () => {
// given
context.type = context.UserEventType.EDIT;
context.form = Form;
Form.getSublist.mockReturnValue(Sublist);
Sublist.getField.mockReturnValue(Field);
Field.updateDisplayType.mockReturnValue(Field);
const mySublistId = 'item';
const myFieldId = 'item';
// when
script.beforeLoad(context);
// then
expect(Form.getSublist).toHaveBeenCalledWith({id: mySublistId});
expect(Sublist.getField).toHaveBeenCalledWith({id: myFieldId});
expect(Field.updateDisplayType).toHaveBeenCalledWith({displayType: serverWidget.FieldDisplayType.HIDDEN});
});
});