trade360-nodejs-sdk
Version:
LSports Trade360 SDK for Node.js
82 lines • 4.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const class_transformer_1 = require("class-transformer");
const current_incident_1 = require("../../../../src/entities/core-entities/livescore/current-incident");
const incident_confirmation_1 = require("../../../../src/entities/core-entities/enums/incident-confirmation");
const incident_type_1 = require("../../../../src/entities/core-entities/enums/incident-type");
describe('CurrentIncident Entity', () => {
it('should deserialize a plain object into a CurrentIncident instance', () => {
const plain = {
Id: incident_type_1.IncidentType.Corners,
Name: 'Incident1',
LastUpdate: '2024-06-01T12:00:00Z',
Confirmation: incident_confirmation_1.IncidentConfirmation.Confirmed,
};
const incident = (0, class_transformer_1.plainToInstance)(current_incident_1.CurrentIncident, plain, { excludeExtraneousValues: true });
expect(incident).toBeInstanceOf(current_incident_1.CurrentIncident);
expect(incident.id).toBe(incident_type_1.IncidentType.Corners);
expect(incident.name).toBe('Incident1');
expect(incident.lastUpdate).toBeInstanceOf(Date);
expect(incident.lastUpdate?.toISOString()).toBe('2024-06-01T12:00:00.000Z');
expect(incident.confirmation).toBe(incident_confirmation_1.IncidentConfirmation.Confirmed);
});
it('should handle missing properties', () => {
const plain = {};
const incident = (0, class_transformer_1.plainToInstance)(current_incident_1.CurrentIncident, plain, { excludeExtraneousValues: true });
expect(incident.id).toBeUndefined();
expect(incident.name).toBeUndefined();
expect(incident.lastUpdate).toBeUndefined();
expect(incident.confirmation).toBeUndefined();
});
it('should handle different confirmation enum values', () => {
const plainConfirmed = {
Id: incident_type_1.IncidentType.ShotsOnTarget,
Name: 'Confirmed Incident',
Confirmation: incident_confirmation_1.IncidentConfirmation.Confirmed,
};
const plainTBD = {
Id: incident_type_1.IncidentType.ShotsOffTarget,
Name: 'TBD Incident',
Confirmation: incident_confirmation_1.IncidentConfirmation.TBD,
};
const plainCancelled = {
Id: incident_type_1.IncidentType.Attacks,
Name: 'Cancelled Incident',
Confirmation: incident_confirmation_1.IncidentConfirmation.Cancelled,
};
const confirmedIncident = (0, class_transformer_1.plainToInstance)(current_incident_1.CurrentIncident, plainConfirmed, { excludeExtraneousValues: true });
const tbdIncident = (0, class_transformer_1.plainToInstance)(current_incident_1.CurrentIncident, plainTBD, { excludeExtraneousValues: true });
const cancelledIncident = (0, class_transformer_1.plainToInstance)(current_incident_1.CurrentIncident, plainCancelled, { excludeExtraneousValues: true });
expect(confirmedIncident.confirmation).toBe(incident_confirmation_1.IncidentConfirmation.Confirmed);
expect(tbdIncident.confirmation).toBe(incident_confirmation_1.IncidentConfirmation.TBD);
expect(cancelledIncident.confirmation).toBe(incident_confirmation_1.IncidentConfirmation.Cancelled);
});
it('should ignore extraneous properties', () => {
const plain = {
Id: incident_type_1.IncidentType.Goal,
Name: 'Test Incident',
Extra: 'ignore me',
};
const incident = (0, class_transformer_1.plainToInstance)(current_incident_1.CurrentIncident, plain, { excludeExtraneousValues: true });
expect(incident.Extra).toBeUndefined();
});
it('should handle IncidentType enum values correctly', () => {
const testCases = [
{ type: incident_type_1.IncidentType.NotSet, value: 0 },
{ type: incident_type_1.IncidentType.Corners, value: 1 },
{ type: incident_type_1.IncidentType.Goal, value: 9 },
{ type: incident_type_1.IncidentType.YellowCard, value: 6 },
{ type: incident_type_1.IncidentType.RedCard, value: 7 },
];
testCases.forEach(({ type, value }) => {
const plain = {
Id: value,
Name: 'Test',
};
const incident = (0, class_transformer_1.plainToInstance)(current_incident_1.CurrentIncident, plain, { excludeExtraneousValues: true });
expect(incident.id).toBe(type);
expect(incident.id).toBe(value);
});
});
});
//# sourceMappingURL=current-incident.spec.js.map