trade360-nodejs-sdk
Version:
LSports Trade360 SDK for Node.js
113 lines • 5.98 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const moment_1 = __importDefault(require("moment"));
const mapper_1 = require("../../../src/api/common/mapper");
const incidents_request_dto_1 = require("../../../src/api/common/metadata/dtos/incidents-request.dto");
const incidents_request_1 = require("../../../src/api/common/metadata/requests/incidents-request");
describe('Mapper - GetIncidents Flow', () => {
// Setup
const packageCredentials = {
username: 'test-user',
password: 'test-password',
packageId: 123,
};
let mapper;
beforeEach(() => {
mapper = new mapper_1.Mapper(packageCredentials);
});
// Test Case 2.1: Mapping IncidentsFilterDto to IncidentsFilter - All Fields
it('should map IncidentsFilterDto to IncidentsFilter with all fields', () => {
const filterDto = new incidents_request_dto_1.IncidentsFilterDto({
ids: [1, 2, 3],
sports: [6046, 6047],
searchText: ['Goal', 'Penalty'],
from: (0, moment_1.default)('2023-10-01 10:00:00'),
});
const filter = mapper.map(filterDto, incidents_request_1.IncidentsFilter);
expect(filter).toBeInstanceOf(incidents_request_1.IncidentsFilter);
expect(filter.ids).toEqual(filterDto.ids);
expect(filter.sports).toEqual(filterDto.sports);
expect(filter.searchText).toEqual(filterDto.searchText);
expect(filter.from).toBe('2023-10-01 10:00:00');
});
// Test Case 2.2: Mapping IncidentsFilterDto to IncidentsFilter - Optional Fields Missing
it('should map IncidentsFilterDto to IncidentsFilter with optional fields missing', () => {
const filterDto = new incidents_request_dto_1.IncidentsFilterDto({
sports: [6046],
searchText: ['Goal'],
// ids and from are missing
});
const filter = mapper.map(filterDto, incidents_request_1.IncidentsFilter);
expect(filter).toBeInstanceOf(incidents_request_1.IncidentsFilter);
expect(filter.sports).toEqual(filterDto.sports);
expect(filter.searchText).toEqual(filterDto.searchText);
expect(filter.ids).toBeUndefined();
expect(filter.from).toBeUndefined();
});
// Test Case 2.3: Mapping GetIncidentsRequestDto to GetIncidentsRequest - With Filter
it('should map GetIncidentsRequestDto to GetIncidentsRequest with filter', () => {
const filterDto = new incidents_request_dto_1.IncidentsFilterDto({
sports: [6046],
searchText: ['Goal'],
});
const requestDto = new incidents_request_dto_1.GetIncidentsRequestDto({
filter: filterDto,
});
const request = mapper.map(requestDto, incidents_request_1.GetIncidentsRequest);
expect(request).toBeInstanceOf(incidents_request_1.GetIncidentsRequest);
expect(request.filter).toBeInstanceOf(incidents_request_1.IncidentsFilter);
expect(request.filter?.sports).toEqual(filterDto.sports);
expect(request.filter?.searchText).toEqual(filterDto.searchText);
// Package credentials should be added
expect(request.userName).toBe(packageCredentials.username);
expect(request.password).toBe(packageCredentials.password);
expect(request.packageId).toBe(packageCredentials.packageId);
});
// Test Case 2.4: Mapping GetIncidentsRequestDto to GetIncidentsRequest - Without Filter
it('should map GetIncidentsRequestDto to GetIncidentsRequest without filter', () => {
const requestDto = new incidents_request_dto_1.GetIncidentsRequestDto();
const request = mapper.map(requestDto, incidents_request_1.GetIncidentsRequest);
expect(request).toBeInstanceOf(incidents_request_1.GetIncidentsRequest);
expect(request.filter).toBeUndefined();
// Package credentials should be added
expect(request.userName).toBe(packageCredentials.username);
expect(request.password).toBe(packageCredentials.password);
expect(request.packageId).toBe(packageCredentials.packageId);
});
// Test Case 2.5: Map with an invalid source type
it('should return an empty object when mapping with an unregistered mapping', () => {
// Create an object that doesn't implement BaseEntity and doesn't match expected type
const invalidSource = { notAFilterProperty: 'test' };
// Attempt to map to IncidentsFilter with an object that
// doesn't match any registered mappings
const result = mapper.map(invalidSource, incidents_request_1.IncidentsFilter);
// In this implementation, the mapper returns an empty object for unmapped types
expect(result).toEqual({});
});
// Edge Case 2.6: Timezone edge cases
it('should format dates consistently regardless of timezone', () => {
// Create a filterDto with a specific date
const filterDto = new incidents_request_dto_1.IncidentsFilterDto({
from: (0, moment_1.default)('2023-10-01 10:00:00', 'YYYY-MM-DD HH:mm:ss', true),
});
const filter = mapper.map(filterDto, incidents_request_1.IncidentsFilter);
// The date should be formatted in the 'YYYY-MM-DD HH:mm:ss' format
expect(filter.from).toBe('2023-10-01 10:00:00');
});
// Edge Case 2.7: Empty arrays
it('should handle empty arrays in filter fields', () => {
const filterDto = new incidents_request_dto_1.IncidentsFilterDto({
ids: [],
sports: [],
searchText: [],
});
const filter = mapper.map(filterDto, incidents_request_1.IncidentsFilter);
expect(filter.ids).toEqual([]);
expect(filter.sports).toEqual([]);
expect(filter.searchText).toEqual([]);
});
});
//# sourceMappingURL=mapper.spec.js.map