UNPKG

trade360-nodejs-sdk

Version:

LSports Trade360 SDK for Node.js

113 lines 5.98 kB
"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