2023-02-09 22:21:20 -06:00
|
|
|
import { RecordValue } from '../src/models/RecordValue';
|
|
|
|
|
import { expect } from 'chai';
|
|
|
|
|
import { RecordValueType } from '../src/enums/RecordValueType';
|
2023-02-10 23:22:41 -06:00
|
|
|
import { Attachment } from '../src/models/Attachment';
|
|
|
|
|
import { Delegate } from '../src/models/Delegate';
|
|
|
|
|
import { ScoringGroup } from '../src/models/ScoringGroup';
|
|
|
|
|
import { TimeSpanData } from '../src/models/TimeSpanData';
|
2023-02-13 17:05:50 -06:00
|
|
|
import { FileStorageSite } from '../src/enums/FileStorageSite';
|
|
|
|
|
import { DelegateType } from '../src/enums/DelegateType';
|
|
|
|
|
import { TimeSpanRecurrenceType } from '../src/enums/TimeSpanRecurrenceType';
|
|
|
|
|
import { TimeSpanIncrement } from '../src/enums/TimeSpanIncrement';
|
2023-02-09 22:21:20 -06:00
|
|
|
|
|
|
|
|
describe('RecordValue', function () {
|
|
|
|
|
it('should be defined', function () {
|
|
|
|
|
expect(RecordValue).to.not.be.undefined;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should have a constructor', function () {
|
|
|
|
|
expect(RecordValue).to.have.property('constructor');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should have a constructor that has 3 parameters', function () {
|
|
|
|
|
expect(RecordValue).to.have.lengthOf(3);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should have a constructor that sets its properties correctly', function () {
|
|
|
|
|
const recordValue = new RecordValue(
|
|
|
|
|
RecordValueType.Date,
|
|
|
|
|
2,
|
|
|
|
|
new Date().toUTCString()
|
|
|
|
|
);
|
|
|
|
|
expect(recordValue).to.have.property('type', RecordValueType.Date);
|
|
|
|
|
expect(recordValue).to.have.property('fieldId', 2);
|
|
|
|
|
expect(recordValue).to.have.property('value', new Date().toUTCString());
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should have a type property', function () {
|
|
|
|
|
expect(
|
|
|
|
|
new RecordValue(RecordValueType.Date, 2, new Date().toUTCString())
|
|
|
|
|
).to.have.property('type');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should have a fieldId property', function () {
|
|
|
|
|
expect(
|
|
|
|
|
new RecordValue(RecordValueType.Date, 2, new Date().toUTCString())
|
|
|
|
|
).to.have.property('fieldId');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should have a value property', function () {
|
|
|
|
|
expect(
|
|
|
|
|
new RecordValue(RecordValueType.Date, 2, new Date().toUTCString())
|
|
|
|
|
).to.have.property('value');
|
|
|
|
|
});
|
2023-02-10 23:22:41 -06:00
|
|
|
|
|
|
|
|
describe('asString', function () {
|
|
|
|
|
it('should be defined', function () {
|
|
|
|
|
expect(RecordValue.prototype.asString).to.not.be.undefined;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should be a function', function () {
|
|
|
|
|
expect(RecordValue.prototype.asString).to.be.a('function');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should return the value as a string for valid types', function () {
|
|
|
|
|
const value = 'test';
|
|
|
|
|
const validTypes = [RecordValueType.String, RecordValueType.Guid];
|
|
|
|
|
|
|
|
|
|
validTypes.forEach((type) => {
|
|
|
|
|
expect(new RecordValue(type, 2, value).asString())
|
|
|
|
|
.to.equal(value)
|
|
|
|
|
.and.to.be.a('string');
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should throw an error if called on record value with incorrect type', function () {
|
|
|
|
|
expect(() =>
|
|
|
|
|
new RecordValue(RecordValueType.Date, 2, 'test').asString()
|
|
|
|
|
).to.throw();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
describe('asNumber', function () {
|
|
|
|
|
it('should be defined', function () {
|
|
|
|
|
expect(RecordValue.prototype.asNumber).to.not.be.undefined;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should be a function', function () {
|
|
|
|
|
expect(RecordValue.prototype.asNumber).to.be.a('function');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should return the value as a number for valid types', function () {
|
|
|
|
|
const value = 1;
|
|
|
|
|
const validTypes = [RecordValueType.Integer, RecordValueType.Decimal];
|
|
|
|
|
|
|
|
|
|
validTypes.forEach((type) => {
|
|
|
|
|
expect(new RecordValue(type, 2, value).asNumber())
|
|
|
|
|
.to.equal(value)
|
|
|
|
|
.and.to.be.a('number');
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should throw an error if called on record value with incorrect type', function () {
|
|
|
|
|
expect(() =>
|
|
|
|
|
new RecordValue(RecordValueType.Date, 2, 2).asNumber()
|
|
|
|
|
).to.throw();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
describe('asDate', function () {
|
|
|
|
|
it('should be defined', function () {
|
|
|
|
|
expect(RecordValue.prototype.asDate).to.not.be.undefined;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should be a function', function () {
|
|
|
|
|
expect(RecordValue.prototype.asDate).to.be.a('function');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should return the value as a date for valid type', function () {
|
2023-02-13 17:05:50 -06:00
|
|
|
const value = new Date();
|
2023-02-10 23:22:41 -06:00
|
|
|
expect(new RecordValue(RecordValueType.Date, 2, value).asDate())
|
2023-02-13 17:05:50 -06:00
|
|
|
.to.deep.equal(value)
|
2023-02-10 23:22:41 -06:00
|
|
|
.and.to.be.a('date');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should throw an error if called on record value with incorrect type', function () {
|
|
|
|
|
expect(() =>
|
|
|
|
|
new RecordValue(RecordValueType.Integer, 2, 'test').asDate()
|
|
|
|
|
).to.throw();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
describe('asAttachmentArray', function () {
|
|
|
|
|
it('should be defined', function () {
|
|
|
|
|
expect(RecordValue.prototype.asAttachmentArray).to.not.be.undefined;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should be a function', function () {
|
|
|
|
|
expect(RecordValue.prototype.asAttachmentArray).to.be.a('function');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should return the value as an array of attachments for valid type', function () {
|
|
|
|
|
const value = [
|
2023-02-13 17:05:50 -06:00
|
|
|
new Attachment(1, 'test', 'test', FileStorageSite.Internal),
|
|
|
|
|
new Attachment(1, 'test', 'test', FileStorageSite.Internal),
|
|
|
|
|
new Attachment(1, 'test', null, FileStorageSite.Internal),
|
2023-02-10 23:22:41 -06:00
|
|
|
];
|
|
|
|
|
|
|
|
|
|
const attachmentArray = new RecordValue(
|
|
|
|
|
RecordValueType.AttachmentList,
|
|
|
|
|
2,
|
|
|
|
|
value
|
|
|
|
|
).asAttachmentArray();
|
|
|
|
|
|
|
|
|
|
expect(attachmentArray).to.be.an('array');
|
|
|
|
|
|
|
|
|
|
attachmentArray.forEach((attachment) => {
|
|
|
|
|
expect(attachment).to.be.an.instanceOf(Attachment);
|
|
|
|
|
expect(attachment).to.have.property('fileId');
|
|
|
|
|
expect(attachment).to.have.property('fileName');
|
|
|
|
|
expect(attachment).to.have.property('notes');
|
|
|
|
|
expect(attachment).to.have.property('storageLocation');
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should throw an error if called on record value with incorrect type', function () {
|
|
|
|
|
expect(() =>
|
|
|
|
|
new RecordValue(RecordValueType.Integer, 2, []).asAttachmentArray()
|
|
|
|
|
).to.throw();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
describe('asNumberArray', function () {
|
|
|
|
|
it('should be defined', function () {
|
|
|
|
|
expect(RecordValue.prototype.asNumberArray).to.not.be.undefined;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should be a function', function () {
|
|
|
|
|
expect(RecordValue.prototype.asNumberArray).to.be.a('function');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should return the value as an array of numbers for valid types', function () {
|
|
|
|
|
const value = [1, 2, 3];
|
|
|
|
|
const validTypes = [
|
|
|
|
|
RecordValueType.FileList,
|
|
|
|
|
RecordValueType.IntegerList,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
validTypes.forEach((type) => {
|
|
|
|
|
const recordValue = new RecordValue(type, 2, value).asNumberArray();
|
|
|
|
|
expect(recordValue).to.deep.equal(value).and.to.be.an('array');
|
|
|
|
|
|
|
|
|
|
recordValue.forEach((item) => {
|
|
|
|
|
expect(item).to.be.a('number');
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should throw an error if called on record value with incorrect type', function () {
|
|
|
|
|
expect(() =>
|
|
|
|
|
new RecordValue(RecordValueType.Integer, 2, []).asNumberArray()
|
|
|
|
|
).to.throw();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
describe('asStringArray', function () {
|
|
|
|
|
it('should be defined', function () {
|
|
|
|
|
expect(RecordValue.prototype.asStringArray).to.not.be.undefined;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should be a function', function () {
|
|
|
|
|
expect(RecordValue.prototype.asStringArray).to.be.a('function');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should return the value as an array of strings for valid types', function () {
|
|
|
|
|
const value = ['test', 'test', 'test'];
|
|
|
|
|
const validTypes = [RecordValueType.StringList, RecordValueType.GuidList];
|
|
|
|
|
|
|
|
|
|
validTypes.forEach((type) => {
|
|
|
|
|
const recordValue = new RecordValue(type, 2, value).asStringArray();
|
|
|
|
|
expect(recordValue).to.deep.equal(value).and.to.be.an('array');
|
|
|
|
|
|
|
|
|
|
recordValue.forEach((item) => {
|
|
|
|
|
expect(item).to.be.a('string');
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should throw an error if called on record value with incorrect type', function () {
|
|
|
|
|
expect(() =>
|
|
|
|
|
new RecordValue(RecordValueType.Integer, 2, []).asStringArray()
|
|
|
|
|
).to.throw();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
describe('asDelegateArray', function () {
|
|
|
|
|
it('should be defined', function () {
|
|
|
|
|
expect(RecordValue.prototype.asDelegateArray).to.not.be.undefined;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should be a function', function () {
|
|
|
|
|
expect(RecordValue.prototype.asDelegateArray).to.be.a('function');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should return the value as an array of delegates for valid type', function () {
|
|
|
|
|
const value = [
|
2023-02-13 17:05:50 -06:00
|
|
|
new Delegate(
|
|
|
|
|
DelegateType.External,
|
|
|
|
|
'test',
|
|
|
|
|
'test@test.com',
|
|
|
|
|
new Date(),
|
|
|
|
|
new Date()
|
|
|
|
|
),
|
|
|
|
|
new Delegate(
|
|
|
|
|
DelegateType.External,
|
|
|
|
|
null,
|
|
|
|
|
'test@test.com',
|
|
|
|
|
new Date(),
|
|
|
|
|
null
|
|
|
|
|
),
|
|
|
|
|
new Delegate(
|
|
|
|
|
DelegateType.External,
|
|
|
|
|
'test',
|
|
|
|
|
'test@test.com',
|
|
|
|
|
new Date(),
|
|
|
|
|
new Date()
|
|
|
|
|
),
|
2023-02-10 23:22:41 -06:00
|
|
|
];
|
|
|
|
|
|
|
|
|
|
const recordValue = new RecordValue(
|
2023-02-13 17:05:50 -06:00
|
|
|
RecordValueType.DelegateList,
|
2023-02-10 23:22:41 -06:00
|
|
|
2,
|
|
|
|
|
value
|
|
|
|
|
).asDelegateArray();
|
|
|
|
|
|
|
|
|
|
expect(recordValue).to.be.an('array');
|
|
|
|
|
recordValue.forEach((item) => {
|
|
|
|
|
expect(item).to.be.an.instanceOf(Delegate);
|
|
|
|
|
expect(item).to.have.property('delegateType');
|
|
|
|
|
expect(item).to.have.property('name');
|
|
|
|
|
expect(item).to.have.property('emailAddress');
|
|
|
|
|
expect(item).to.have.property('delegationDateTime');
|
|
|
|
|
expect(item).to.have.property('delegationCompletedDateTime');
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should throw an error if called on record value with incorrect type', function () {
|
|
|
|
|
expect(() =>
|
|
|
|
|
new RecordValue(RecordValueType.Integer, 2, []).asDelegateArray()
|
|
|
|
|
).to.throw();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
describe('asScoringGroupArray', function () {
|
|
|
|
|
it('should be defined', function () {
|
|
|
|
|
expect(RecordValue.prototype.asScoringGroupArray).to.not.be.undefined;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should be a function', function () {
|
|
|
|
|
expect(RecordValue.prototype.asScoringGroupArray).to.be.a('function');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should return the value as an array of scoring groups for valid type', function () {
|
2023-02-13 17:05:50 -06:00
|
|
|
const value = [new ScoringGroup('1', 'test', 1, 1)];
|
2023-02-10 23:22:41 -06:00
|
|
|
|
|
|
|
|
const recordValue = new RecordValue(
|
|
|
|
|
RecordValueType.ScoringGroupList,
|
|
|
|
|
2,
|
|
|
|
|
value
|
|
|
|
|
).asScoringGroupArray();
|
|
|
|
|
|
|
|
|
|
expect(recordValue).to.deep.equal(value).and.to.be.an('array');
|
|
|
|
|
|
|
|
|
|
recordValue.forEach((item) => {
|
|
|
|
|
expect(item).to.be.an.instanceOf(ScoringGroup);
|
|
|
|
|
expect(item).to.have.property('listValueId');
|
|
|
|
|
expect(item).to.have.property('name');
|
|
|
|
|
expect(item).to.have.property('score');
|
|
|
|
|
expect(item).to.have.property('maximumScore');
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should throw an error if called on record value with incorrect type', function () {
|
|
|
|
|
expect(() =>
|
|
|
|
|
new RecordValue(RecordValueType.Integer, 2, []).asScoringGroupArray()
|
|
|
|
|
).to.throw();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
describe('asTimeSpanData', function () {
|
|
|
|
|
it('should be defined', function () {
|
|
|
|
|
expect(RecordValue.prototype.asTimeSpanData).to.not.be.undefined;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should be a function', function () {
|
|
|
|
|
expect(RecordValue.prototype.asTimeSpanData).to.be.a('function');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should return the value as a TimeSpanData for valid type', function () {
|
|
|
|
|
const cases = [
|
2023-02-13 17:05:50 -06:00
|
|
|
new TimeSpanData(
|
|
|
|
|
1,
|
|
|
|
|
TimeSpanIncrement.Days,
|
|
|
|
|
TimeSpanRecurrenceType.None,
|
|
|
|
|
1,
|
|
|
|
|
new Date()
|
|
|
|
|
),
|
|
|
|
|
new TimeSpanData(1, TimeSpanIncrement.Days, null, null, null),
|
|
|
|
|
new TimeSpanData(
|
|
|
|
|
1,
|
|
|
|
|
TimeSpanIncrement.Days,
|
|
|
|
|
TimeSpanRecurrenceType.None,
|
|
|
|
|
1,
|
|
|
|
|
new Date()
|
|
|
|
|
),
|
2023-02-10 23:22:41 -06:00
|
|
|
];
|
|
|
|
|
|
|
|
|
|
cases.forEach((value) => {
|
|
|
|
|
const recordValue = new RecordValue(
|
|
|
|
|
RecordValueType.TimeSpan,
|
|
|
|
|
2,
|
|
|
|
|
value
|
|
|
|
|
).asTimeSpanData();
|
|
|
|
|
|
|
|
|
|
expect(recordValue).to.be.an.instanceOf(TimeSpanData);
|
|
|
|
|
expect(recordValue).to.have.property('quantity');
|
|
|
|
|
expect(recordValue).to.have.property('increment');
|
|
|
|
|
expect(recordValue).to.have.property('recurrence');
|
|
|
|
|
expect(recordValue).to.have.property('endAfterOccurrences');
|
|
|
|
|
expect(recordValue).to.have.property('endByDate');
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should throw an error if called on record value with incorrect type', function () {
|
|
|
|
|
expect(() =>
|
|
|
|
|
new RecordValue(RecordValueType.Integer, 2, []).asTimeSpanData()
|
|
|
|
|
).to.throw();
|
|
|
|
|
});
|
|
|
|
|
});
|
2023-02-09 22:21:20 -06:00
|
|
|
});
|