suitescript-mocks
Version:
Set of mocks for unit testing Netsuite Suitescript 2.*
101 lines (89 loc) • 2.41 kB
JavaScript
const recordStub = require("suitecloud-unit-testing-stubs/stubs/record");
const SuiteScriptMocks = require("../../index.cjs");
const { addPromise, options } = require("../../helpers.cjs");
const Record = require("./Record.cjs");
const Field = require("./Field.cjs");
const Sublist = require("./Sublist.cjs");
class RecordModule {
Record = Record;
Field = Field;
Sublist = Sublist;
Type = recordStub.Type;
()
("record", "to", "attributes")
attach = (options) => {};
()
("type", "id", "isDynamic", "defaultValues")
copy = (options) => {
const record = this.load(options);
record.id = null;
return record;
};
()
("type", "isDynamic", "defaultValues")
create = (options) => {
return new Record({
id: null,
type: options.type,
isDynamic: options?.isDynamic,
fields: options?.defaultValues || {},
});
};
()
("type", "id")
delete = (options) => {
const rec = SuiteScriptMocks.records.get(options);
if (!rec) {
throw new Error("Record does not exist");
}
SuiteScriptMocks.deletedRecords.push(rec);
SuiteScriptMocks.records.delete(rec);
return rec.id;
};
()
("record", "from", "attributes")
detach = (options) => {};
()
("type", "id", "isDynamic", "defaultValues")
load = (options) => {
const record = SuiteScriptMocks.records.get(options);
if (!record) {
throw new Error("Record does not exist");
}
return new Record({
...record,
isDynamic: Boolean(options.isDynamic) || false,
fields: {
...record.fields,
...(options.defaultValues || {}),
},
});
};
()
("type", "id", "values", "options")
submitFields = (options) => {
const record = SuiteScriptMocks.records.get(options);
if (!record) {
throw new Error("Record does not exist");
}
const copy = new Record({
...record,
fields: {
...record.fields,
...options.values,
},
version: record.version + 1,
});
SuiteScriptMocks.records.set(copy);
return copy.id;
};
()
("fromType", "fromId", "toType", "isDynamic", "defaultValues")
transform = (options) => {
const record = this.load(options.fromType, options.fromId, options.isDynamic, options.defaultValues);
record.type = options.toType;
record.id = null;
return record;
};
}
module.exports = new RecordModule();