trade360-nodejs-sdk
Version:
LSports Trade360 SDK for Node.js
285 lines • 14.7 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 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