UNPKG

trade360-nodejs-sdk

Version:

LSports Trade360 SDK for Node.js

79 lines 3.59 kB
"use strict"; 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