UNPKG

trade360-nodejs-sdk

Version:
285 lines 14.7 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 venues_request_dto_1 = require("../../../src/api/common/metadata/dtos/venues-request.dto"); const cities_request_dto_1 = require("../../../src/api/common/metadata/dtos/cities-request.dto"); const states_request_dto_1 = require("../../../src/api/common/metadata/dtos/states-request.dto"); const incidents_request_1 = require("../../../src/api/common/metadata/requests/incidents-request"); const venues_request_1 = require("../../../src/api/common/metadata/requests/venues-request"); const cities_request_1 = require("../../../src/api/common/metadata/requests/cities-request"); const states_request_1 = require("../../../src/api/common/metadata/requests/states-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 create target instance without copying unregistered properties', () => { // 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); // The mapper creates an instance of the target class but respects type safety expect(result).toBeInstanceOf(incidents_request_1.IncidentsFilter); expect(result.notAFilterProperty).toBeUndefined(); // Unregistered properties are not copied // Standard IncidentsFilter properties should be undefined expect(result.ids).toBeUndefined(); expect(result.sports).toBeUndefined(); expect(result.searchText).toBeUndefined(); expect(result.from).toBeUndefined(); }); // 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([]); }); }); describe('Mapper - GetVenues Flow', () => { const packageCredentials = { username: 'test-user', password: 'test-password', packageId: 123, }; let mapper; beforeEach(() => { mapper = new mapper_1.Mapper(packageCredentials); }); it('should map VenueFilterDto to VenuesFilter with all fields', () => { const filterDto = new venues_request_dto_1.VenueFilterDto({ venueIds: [1, 2, 3], countryIds: [100, 200], stateIds: [10, 20], cityIds: [1000, 2000], }); const filter = mapper.map(filterDto, venues_request_1.VenuesFilter); expect(filter).toBeInstanceOf(venues_request_1.VenuesFilter); expect(filter.venueIds).toEqual(filterDto.venueIds); expect(filter.countryIds).toEqual(filterDto.countryIds); expect(filter.stateIds).toEqual(filterDto.stateIds); expect(filter.cityIds).toEqual(filterDto.cityIds); }); it('should map GetVenuesRequestDto to GetVenuesRequest with filter and credentials', () => { const filterDto = new venues_request_dto_1.VenueFilterDto({ venueIds: [1, 2], countryIds: [100], }); const requestDto = new venues_request_dto_1.GetVenuesRequestDto({ filter: filterDto, }); const request = mapper.map(requestDto, venues_request_1.GetVenuesRequest); expect(request).toBeInstanceOf(venues_request_1.GetVenuesRequest); expect(request.filter).toBeInstanceOf(venues_request_1.VenuesFilter); expect(request.filter?.venueIds).toEqual(filterDto.venueIds); expect(request.filter?.countryIds).toEqual(filterDto.countryIds); expect(request.username).toBe(packageCredentials.username); expect(request.password).toBe(packageCredentials.password); expect(request.packageId).toBe(packageCredentials.packageId); }); it('should map GetVenuesRequestDto to GetVenuesRequest without filter', () => { const requestDto = new venues_request_dto_1.GetVenuesRequestDto(); const request = mapper.map(requestDto, venues_request_1.GetVenuesRequest); expect(request).toBeInstanceOf(venues_request_1.GetVenuesRequest); expect(request.filter).toBeUndefined(); expect(request.username).toBe(packageCredentials.username); expect(request.password).toBe(packageCredentials.password); expect(request.packageId).toBe(packageCredentials.packageId); }); it('should handle empty arrays in venue filter fields', () => { const filterDto = new venues_request_dto_1.VenueFilterDto({ venueIds: [], countryIds: [], stateIds: [], cityIds: [], }); const filter = mapper.map(filterDto, venues_request_1.VenuesFilter); expect(filter.venueIds).toEqual([]); expect(filter.countryIds).toEqual([]); expect(filter.stateIds).toEqual([]); expect(filter.cityIds).toEqual([]); }); }); describe('Mapper - GetCities Flow', () => { const packageCredentials = { username: 'test-user', password: 'test-password', packageId: 123, }; let mapper; beforeEach(() => { mapper = new mapper_1.Mapper(packageCredentials); }); it('should map CityFilterDto to CitiesFilter with all fields', () => { const filterDto = new cities_request_dto_1.CityFilterDto({ cityIds: [1, 2, 3], countryIds: [100, 200], stateIds: [10, 20], }); const filter = mapper.map(filterDto, cities_request_1.CitiesFilter); expect(filter).toBeInstanceOf(cities_request_1.CitiesFilter); expect(filter.cityIds).toEqual(filterDto.cityIds); expect(filter.countryIds).toEqual(filterDto.countryIds); expect(filter.stateIds).toEqual(filterDto.stateIds); }); it('should map GetCitiesRequestDto to GetCitiesRequest with filter and credentials', () => { const filterDto = new cities_request_dto_1.CityFilterDto({ cityIds: [1, 2], countryIds: [100], }); const requestDto = new cities_request_dto_1.GetCitiesRequestDto({ filter: filterDto, }); const request = mapper.map(requestDto, cities_request_1.GetCitiesRequest); expect(request).toBeInstanceOf(cities_request_1.GetCitiesRequest); expect(request.filter).toBeInstanceOf(cities_request_1.CitiesFilter); expect(request.filter?.cityIds).toEqual(filterDto.cityIds); expect(request.filter?.countryIds).toEqual(filterDto.countryIds); expect(request.username).toBe(packageCredentials.username); expect(request.password).toBe(packageCredentials.password); expect(request.packageId).toBe(packageCredentials.packageId); }); it('should map GetCitiesRequestDto to GetCitiesRequest without filter', () => { const requestDto = new cities_request_dto_1.GetCitiesRequestDto(); const request = mapper.map(requestDto, cities_request_1.GetCitiesRequest); expect(request).toBeInstanceOf(cities_request_1.GetCitiesRequest); expect(request.filter).toBeUndefined(); expect(request.username).toBe(packageCredentials.username); expect(request.password).toBe(packageCredentials.password); expect(request.packageId).toBe(packageCredentials.packageId); }); }); describe('Mapper - GetStates Flow', () => { const packageCredentials = { username: 'test-user', password: 'test-password', packageId: 123, }; let mapper; beforeEach(() => { mapper = new mapper_1.Mapper(packageCredentials); }); it('should map StateFilterDto to StatesFilter with all fields', () => { const filterDto = new states_request_dto_1.StateFilterDto({ stateIds: [1, 2, 3], countryIds: [100, 200], }); const filter = mapper.map(filterDto, states_request_1.StatesFilter); expect(filter).toBeInstanceOf(states_request_1.StatesFilter); expect(filter.stateIds).toEqual(filterDto.stateIds); expect(filter.countryIds).toEqual(filterDto.countryIds); }); it('should map GetStatesRequestDto to GetStatesRequest with filter and credentials', () => { const filterDto = new states_request_dto_1.StateFilterDto({ stateIds: [1, 2], countryIds: [100], }); const requestDto = new states_request_dto_1.GetStatesRequestDto({ filter: filterDto, }); const request = mapper.map(requestDto, states_request_1.GetStatesRequest); expect(request).toBeInstanceOf(states_request_1.GetStatesRequest); expect(request.filter).toBeInstanceOf(states_request_1.StatesFilter); expect(request.filter?.stateIds).toEqual(filterDto.stateIds); expect(request.filter?.countryIds).toEqual(filterDto.countryIds); expect(request.username).toBe(packageCredentials.username); expect(request.password).toBe(packageCredentials.password); expect(request.packageId).toBe(packageCredentials.packageId); }); it('should map GetStatesRequestDto to GetStatesRequest without filter', () => { const requestDto = new states_request_dto_1.GetStatesRequestDto(); const request = mapper.map(requestDto, states_request_1.GetStatesRequest); expect(request).toBeInstanceOf(states_request_1.GetStatesRequest); expect(request.filter).toBeUndefined(); expect(request.username).toBe(packageCredentials.username); expect(request.password).toBe(packageCredentials.password); expect(request.packageId).toBe(packageCredentials.packageId); }); }); //# sourceMappingURL=mapper.spec.js.map