trade360-nodejs-sdk
Version:
LSports Trade360 SDK for Node.js
79 lines • 3.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const class_transformer_1 = require("class-transformer");
const bet_1 = require("../../../../src/entities/core-entities/market/bet");
const base_bet_1 = require("../../../../src/entities/core-entities/market/base-bet");
const id_transformation_error_1 = require("../../../../src/entities/errors/id-transformation.error");
describe('Bet Entity', () => {
it('should deserialize a plain object into a Bet instance', () => {
const plain = {
Id: 1,
Name: 'Home',
ProviderBetId: 'PB123',
};
const bet = (0, class_transformer_1.plainToInstance)(bet_1.Bet, plain, { excludeExtraneousValues: true });
expect(bet).toBeInstanceOf(bet_1.Bet);
expect(bet).toBeInstanceOf(base_bet_1.BaseBet);
expect(bet.id).toBe(1n);
expect(bet.name).toBe('Home');
expect(bet.providerBetId).toBe('PB123');
});
it('should throw IdTransformationError when Id is missing', () => {
const plain = {};
expect(() => {
(0, class_transformer_1.plainToInstance)(bet_1.Bet, plain, { excludeExtraneousValues: true });
}).toThrow(id_transformation_error_1.IdTransformationError);
try {
(0, class_transformer_1.plainToInstance)(bet_1.Bet, plain, { excludeExtraneousValues: true });
}
catch (error) {
expect(error.message).toContain('Field is required but received null or undefined');
expect(error.fieldName).toBe('Id');
}
});
it('should handle missing optional properties with valid Id', () => {
const plain = { Id: 123 };
const bet = (0, class_transformer_1.plainToInstance)(bet_1.Bet, plain, { excludeExtraneousValues: true });
expect(bet.id).toBe(123n);
expect(bet.name).toBeUndefined();
expect(bet.providerBetId).toBeUndefined();
});
it('should ignore extraneous properties', () => {
const plain = {
Id: 2,
Name: 'Test Bet',
ProviderBetId: 'PB999',
Extra: 'ignore me',
};
const bet = (0, class_transformer_1.plainToInstance)(bet_1.Bet, plain, { excludeExtraneousValues: true });
expect(bet.Extra).toBeUndefined();
});
it('should inherit all BaseBet functionality', () => {
const plain = {
Id: '11060329315062111', // Large number as string
Name: 'Large ID Bet',
ProviderBetId: 'PB_LARGE',
Line: '2.5',
Status: 1,
Price: '1.95',
};
const bet = (0, class_transformer_1.plainToInstance)(bet_1.Bet, plain, { excludeExtraneousValues: true });
// Test inherited BaseBet properties
expect(bet.id).toBe(11060329315062111n);
expect(bet.name).toBe('Large ID Bet');
expect(bet.line).toBe('2.5');
expect(bet.status).toBe(1);
expect(bet.price).toBe('1.95');
// Test Bet-specific property
expect(bet.providerBetId).toBe('PB_LARGE');
});
it('should handle invalid Id values by throwing IdTransformationError', () => {
const invalidValues = [null, undefined, '', 'invalid', 123.45, NaN, Infinity];
invalidValues.forEach((invalidId) => {
expect(() => {
(0, class_transformer_1.plainToInstance)(bet_1.Bet, { Id: invalidId }, { excludeExtraneousValues: true });
}).toThrow(id_transformation_error_1.IdTransformationError);
});
});
});
//# sourceMappingURL=bet.spec.js.map