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});
   });
}); 

        

General Notices