nsmockup
Version:
Test your Suitescripts before deploying to NetSuite
274 lines (232 loc) • 10.8 kB
JavaScript
;
var should = require('should'),
nsmockup = require('../');
var base = __dirname + '/_input-files/record-data';
/**
* Test Suites
*/
describe('<Unit Test - Netsuite Create User Event>', function() {
this.timeout(5000);
let opts = {
name: 'customscript_add_user-event',
files: [
__dirname + '/_input-files/scripts/fake-user-event.js'
],
functions: {
beforeLoad: 'FakeUserEvent.beforeLoad',
beforeSubmit: 'FakeUserEvent.beforeSubmit',
afterSubmit: 'FakeUserEvent.afterSubmit'
},
params: {
'fake-param': 23,
'field-param': 'custrecord_id_code_id'
},
records: ['customrecord_codeg_ids']
};
beforeEach(done => {
let metadata = [
base + '/meta/customrecord_codeg_ids.json'
],
records = {
'customrecord_codeg_ids': base + '/data/customrecord_codeg_ids.json'
};
nsmockup.init({records, metadata}, done);
});
describe('Create Script - User Event', () => {
it('user-event: type - "createUserEvent"', done => {
nsmockup.createUserEvent(opts, (ctx) => {
should(ctx.FakeUserEvent).be.ok();
let init = {
custrecord_id_code_id: 434,
custrecord_id_title_id: 'japo 434'
},
record = nlapiCreateRecord('customrecord_codeg_ids', init);
nlapiSubmitRecord(record);
let context = ctx.nlapiGetContext();
should(context).be.ok();
let beforeSubmitType = context.getSessionObject('before-submit-type'),
beforeSubmitParam = context.getSessionObject('before-submit-param');
should(beforeSubmitType).be.equal('create');
should(beforeSubmitParam).be.equal('23');
let beforeSubmitOldCode = context.getSessionObject('before-submit-old-code'),
beforeSubmitNewCode = context.getSessionObject('before-submit-new-code'),
beforeSubmitRecId = context.getSessionObject('before-submit-rec-id'),
beforeSubmitRecType = context.getSessionObject('before-submit-rec-type');
should(beforeSubmitOldCode).be.equal(null);
should(beforeSubmitNewCode).be.equal('434');
should(beforeSubmitRecId).be.equal('-1');
should(beforeSubmitRecType).be.equal('customrecord_codeg_ids');
let afterSubmitType = context.getSessionObject('after-submit-type'),
afterSubmitParam = context.getSessionObject('after-submit-param');
should(afterSubmitType).be.equal('create');
should(afterSubmitParam).be.equal('23');
let afterSubmitOldCode = context.getSessionObject('after-submit-old-code'),
afterSubmitNewCode = context.getSessionObject('after-submit-new-code'),
afterSubmitRecId = context.getSessionObject('after-submit-rec-id'),
afterSubmitRecType = context.getSessionObject('after-submit-rec-type');
should(afterSubmitOldCode).be.equal(null);
should(afterSubmitNewCode).be.equal('434');
should(afterSubmitRecId).be.equal('90');
should(afterSubmitRecType).be.equal('customrecord_codeg_ids');
return done();
});
});
it('user-event: type - "edit"', done => {
nsmockup.createUserEvent(opts, (ctx) => {
should(ctx.FakeUserEvent).be.ok();
let record = nlapiLoadRecord('customrecord_codeg_ids', 219);
record.setFieldValue('custrecord_id_code_id', 2190);
nlapiSubmitRecord(record);
let context = ctx.nlapiGetContext();
should(context).be.ok();
let beforeSubmitType = context.getSessionObject('before-submit-type'),
beforeSubmitParam = context.getSessionObject('before-submit-param');
should(beforeSubmitType).be.equal('edit');
should(beforeSubmitParam).be.equal('23');
let beforeSubmitOldCode = context.getSessionObject('before-submit-old-code'),
beforeSubmitNewCode = context.getSessionObject('before-submit-new-code'),
beforeSubmitRecId = context.getSessionObject('before-submit-rec-id'),
beforeSubmitRecType = context.getSessionObject('before-submit-rec-type');
should(beforeSubmitOldCode).be.equal('219');
should(beforeSubmitNewCode).be.equal('2190');
should(beforeSubmitRecId).be.equal('219');
should(beforeSubmitRecType).be.equal('customrecord_codeg_ids');
let afterSubmitType = context.getSessionObject('after-submit-type'),
afterSubmitParam = context.getSessionObject('after-submit-param');
should(afterSubmitType).be.equal('edit');
should(afterSubmitParam).be.equal('23');
let afterSubmitOldCode = context.getSessionObject('after-submit-old-code'),
afterSubmitNewCode = context.getSessionObject('after-submit-new-code'),
afterSubmitRecId = context.getSessionObject('after-submit-rec-id'),
afterSubmitRecType = context.getSessionObject('after-submit-rec-type');
should(afterSubmitOldCode).be.equal('219');
should(afterSubmitNewCode).be.equal('2190');
should(afterSubmitRecId).be.equal('219');
should(afterSubmitRecType).be.equal('customrecord_codeg_ids');
return done();
});
});
it('user-event: type - "create" using "funcs"', done => {
let _opts = JSON.parse(JSON.stringify(opts));
_opts.funcs = _opts.functions;
delete _opts.functions;
nsmockup.createUserEvent(_opts, (ctx) => {
should(ctx.FakeUserEvent).be.ok();
let init = {
custrecord_id_code_id: 434,
custrecord_id_title_id: 'japo 434'
},
record = nlapiCreateRecord('customrecord_codeg_ids', init);
nlapiSubmitRecord(record);
let context = ctx.nlapiGetContext();
should(context).be.ok();
let beforeSubmitType = context.getSessionObject('before-submit-type'),
beforeSubmitParam = context.getSessionObject('before-submit-param');
should(beforeSubmitType).be.equal('create');
should(beforeSubmitParam).be.equal('23');
return done();
});
});
it('user-event: missing "opt.files"', done => {
const errorDone = 'missing "opt.files"',
errorMsg = 'script needs libraries: "opt.files"';
try {
nsmockup.createUserEvent(null, () => {
return done(errorDone);
});
} catch (e) {
should(e).have.property('message', errorMsg);
}
try {
nsmockup.createUserEvent({}, () => {
return done(errorDone);
});
} catch (e) {
should(e).have.property('message', errorMsg);
}
try {
nsmockup.createUserEvent({file: {}}, () => {
return done(errorDone);
});
} catch (e) {
should(e).have.property('message', errorMsg);
}
try {
nsmockup.createUserEvent({files: []}, () => {
return done(errorDone);
});
} catch (e) {
should(e).have.property('message', errorMsg);
}
return done();
});
it('user-event: missing "opt.records"', done => {
const errorDone = 'missing "opt.records"',
errorMsg = 'user event needs one Record Type: "opt.records"',
opts = {
files:[__dirname + '/_input-files/scripts/fake-user-event.js']
};
try {
nsmockup.createUserEvent(opts, () => {
return done(errorDone);
});
} catch (e) {
should(e).have.property('message', errorMsg);
}
return done();
});
it('user-event: missing "opt.functions"', done => {
const errorDone = 'missing "opt.functions"',
errorMsg = 'principal functions not def: "opt.functions"',
opts = {
files:[__dirname + '/_input-files/scripts/fake-user-event.js'],
record: 'customrecord_codeg_ids'
};
try {
nsmockup.createUserEvent(opts, () => {
return done(errorDone);
});
} catch (e) {
should(e).have.property('message', errorMsg);
}
return done();
});
it('user-event: empty "opt.functions"', done => {
const errorDone = 'missing "opt.functions"',
errorMsg = 'principal functions was empty: "opt.functions"',
opts = {
files:[__dirname + '/_input-files/scripts/fake-user-event.js'],
record: 'customrecord_codeg_ids',
functions: {}
};
try {
nsmockup.createUserEvent(opts, () => {
return done(errorDone);
});
} catch (e) {
should(e).have.property('message', errorMsg);
}
return done();
});
it('user-event: invalid step "opt.functions"', done => {
const errorDone = 'invalid step "opt.functions"',
errorMsg = 'invalid step opa',
opts = {
files:[__dirname + '/_input-files/scripts/fake-user-event.js'],
record: 'customrecord_codeg_ids',
functions: {opa: 'legal'}
};
try {
nsmockup.createUserEvent(opts, () => {
return done(errorDone);
});
} catch (e) {
should(e).have.property('message', errorMsg);
}
return done();
});
});
afterEach(done => {
nsmockup.destroy(done);
});
});