trade360-nodejs-sdk
Version:
LSports Trade360 SDK for Node.js
48 lines • 2.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const class_transformer_1 = require("class-transformer");
const provider_bet_1 = require("../../../../src/entities/core-entities/market/provider-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('ProviderBet Entity', () => {
it('should deserialize a plain object into a ProviderBet instance', () => {
const plain = {
Id: 1,
Name: 'Provider Bet',
};
const providerBet = (0, class_transformer_1.plainToInstance)(provider_bet_1.ProviderBet, plain, { excludeExtraneousValues: true });
expect(providerBet).toBeInstanceOf(provider_bet_1.ProviderBet);
expect(providerBet).toBeInstanceOf(base_bet_1.BaseBet);
expect(providerBet.id).toBe(1n);
expect(providerBet.name).toBe('Provider Bet');
});
it('should throw IdTransformationError when Id is missing', () => {
const plain = {};
expect(() => {
(0, class_transformer_1.plainToInstance)(provider_bet_1.ProviderBet, plain, { excludeExtraneousValues: true });
}).toThrow(id_transformation_error_1.IdTransformationError);
try {
(0, class_transformer_1.plainToInstance)(provider_bet_1.ProviderBet, 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 providerBet = (0, class_transformer_1.plainToInstance)(provider_bet_1.ProviderBet, plain, { excludeExtraneousValues: true });
expect(providerBet.id).toBe(123n);
expect(providerBet.name).toBeUndefined();
});
it('should ignore extraneous properties', () => {
const plain = {
Id: 2,
Name: 'Test ProviderBet',
Extra: 'ignore me',
};
const providerBet = (0, class_transformer_1.plainToInstance)(provider_bet_1.ProviderBet, plain, { excludeExtraneousValues: true });
expect(providerBet.Extra).toBeUndefined();
});
});
//# sourceMappingURL=provider-bet.spec.js.map