trade360-nodejs-sdk
Version:
LSports Trade360 SDK for Node.js
54 lines • 2.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const class_transformer_1 = require("class-transformer");
const scoreboard_1 = require("../../../../src/entities/core-entities/livescore/scoreboard");
const fixture_status_1 = require("../../../../src/entities/core-entities/enums/fixture-status");
const status_description_1 = require("../../../../src/entities/core-entities/enums/status-description");
const result_1 = require("../../../../src/entities/core-entities/livescore/result");
const clock_1 = require("../../../../src/entities/core-entities/livescore/clock");
const clock_status_1 = require("../../../../src/entities/core-entities/enums/clock-status");
describe('Scoreboard Entity', () => {
it('should deserialize a plain object into a Scoreboard instance', () => {
const plain = {
Status: fixture_status_1.FixtureStatus.InProgress,
Description: status_description_1.StatusDescription.HT,
CurrentPeriod: 2,
Time: '45:00',
Clock: {
Status: clock_status_1.ClockStatus.Running,
Seconds: 45
},
Results: [{ id: 1 }, { id: 2 }],
};
const scoreboard = (0, class_transformer_1.plainToInstance)(scoreboard_1.Scoreboard, plain, { excludeExtraneousValues: true });
expect(scoreboard).toBeInstanceOf(scoreboard_1.Scoreboard);
expect(scoreboard.status).toBe(fixture_status_1.FixtureStatus.InProgress);
expect(scoreboard.description).toBe(status_description_1.StatusDescription.HT);
expect(scoreboard.currentPeriod).toBe(2);
expect(scoreboard.time).toBe('45:00');
expect(scoreboard.clock).toBeInstanceOf(clock_1.Clock);
expect(scoreboard.clock?.status).toBe(clock_status_1.ClockStatus.Running);
expect(scoreboard.clock?.seconds).toBe(45);
expect(Array.isArray(scoreboard.results)).toBe(true);
expect(scoreboard.results?.[0]).toBeInstanceOf(result_1.Result);
});
it('should handle missing properties', () => {
const plain = {};
const scoreboard = (0, class_transformer_1.plainToInstance)(scoreboard_1.Scoreboard, plain, { excludeExtraneousValues: true });
expect(scoreboard.status).toBeUndefined();
expect(scoreboard.description).toBeUndefined();
expect(scoreboard.currentPeriod).toBeUndefined();
expect(scoreboard.time).toBeUndefined();
expect(scoreboard.clock).toBeUndefined();
expect(scoreboard.results).toBeUndefined();
});
it('should ignore extraneous properties', () => {
const plain = {
Status: fixture_status_1.FixtureStatus.Finished,
Extra: 'ignore me',
};
const scoreboard = (0, class_transformer_1.plainToInstance)(scoreboard_1.Scoreboard, plain, { excludeExtraneousValues: true });
expect(scoreboard.Extra).toBeUndefined();
});
});
//# sourceMappingURL=scoreboard.spec.js.map