adding ad default parameters to .env
This commit is contained in:
		
							parent
							
								
									10f4d1a0dc
								
							
						
					
					
						commit
						f5ce6ca005
					
				
							
								
								
									
										13
									
								
								.env.dist
								
								
								
								
							
							
						
						
									
										13
									
								
								.env.dist
								
								
								
								
							| 
						 | 
					@ -15,3 +15,16 @@ RMQ_EXCHANGE=mobicoop
 | 
				
			||||||
REDIS_HOST=v3-redis
 | 
					REDIS_HOST=v3-redis
 | 
				
			||||||
REDIS_PASSWORD=redis
 | 
					REDIS_PASSWORD=redis
 | 
				
			||||||
REDIS_PORT=6379
 | 
					REDIS_PORT=6379
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# DEFAULT CARPOOL DEPARTURE MARGIN (in seconds)
 | 
				
			||||||
 | 
					DEPARTURE_MARGIN=900
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# DEFAULT ROLE
 | 
				
			||||||
 | 
					ROLE=passenger
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# SEATS PROVIDED AS DRIVER / REQUESTED AS PASSENGER
 | 
				
			||||||
 | 
					SEATS_PROVIDED=3
 | 
				
			||||||
 | 
					SEATS_REQUESTED=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ACCEPT ONLY SAME FREQUENCY REQUESTS 
 | 
				
			||||||
 | 
					STRICT_FREQUENCY=false 
 | 
				
			||||||
| 
						 | 
					@ -6,20 +6,19 @@ import { IProvideParams } from '../../domain/interfaces/param-provider.interface
 | 
				
			||||||
@Injectable()
 | 
					@Injectable()
 | 
				
			||||||
export class DefaultParamsProvider implements IProvideParams {
 | 
					export class DefaultParamsProvider implements IProvideParams {
 | 
				
			||||||
  constructor(private readonly configService: ConfigService) {}
 | 
					  constructor(private readonly configService: ConfigService) {}
 | 
				
			||||||
  //TODO adding config service
 | 
					 | 
				
			||||||
  getParams = (): DefaultParams => {
 | 
					  getParams = (): DefaultParams => {
 | 
				
			||||||
    return {
 | 
					    return {
 | 
				
			||||||
      MON_MARGIN: 900,
 | 
					      MON_MARGIN: this.configService.get('DEPARTURE_MARGIN'),
 | 
				
			||||||
      TUE_MARGIN: 900,
 | 
					      TUE_MARGIN: this.configService.get('DEPARTURE_MARGIN'),
 | 
				
			||||||
      WED_MARGIN: 900,
 | 
					      WED_MARGIN: this.configService.get('DEPARTURE_MARGIN'),
 | 
				
			||||||
      THU_MARGIN: 900,
 | 
					      THU_MARGIN: this.configService.get('DEPARTURE_MARGIN'),
 | 
				
			||||||
      FRI_MARGIN: 900,
 | 
					      FRI_MARGIN: this.configService.get('DEPARTURE_MARGIN'),
 | 
				
			||||||
      SAT_MARGIN: 900,
 | 
					      SAT_MARGIN: this.configService.get('DEPARTURE_MARGIN'),
 | 
				
			||||||
      SUN_MARGIN: 900,
 | 
					      SUN_MARGIN: this.configService.get('DEPARTURE_MARGIN'),
 | 
				
			||||||
      DRIVER: false,
 | 
					      DRIVER: this.configService.get('ROLE') == 'driver' ? true : false,
 | 
				
			||||||
      DRIVER_SEAT: 0,
 | 
					      SEATS_PROVIDED: this.configService.get('SEATS_PROVIDED'),
 | 
				
			||||||
      PASSENGER: true,
 | 
					      PASSENGER: this.configService.get('ROLE') == 'passenger' ? true : false,
 | 
				
			||||||
      PASSENGER_SEATS: 1,
 | 
					      SEATS_REQUESTED: this.configService.get('SEATS_REQUESTED'),
 | 
				
			||||||
      STRICT: false,
 | 
					      STRICT: false,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -50,7 +50,6 @@ export class CreateAdRequest {
 | 
				
			||||||
  @AutoMap()
 | 
					  @AutoMap()
 | 
				
			||||||
  frequency: Frequency;
 | 
					  frequency: Frequency;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // TODO create a proper validator
 | 
					 | 
				
			||||||
  @ValidateIf((ad) => ad.frequency === 'PUNCTUAL')
 | 
					  @ValidateIf((ad) => ad.frequency === 'PUNCTUAL')
 | 
				
			||||||
  @Type(() => Date)
 | 
					  @Type(() => Date)
 | 
				
			||||||
  @IsDate()
 | 
					  @IsDate()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,8 +4,7 @@ import {
 | 
				
			||||||
  ValidationOptions,
 | 
					  ValidationOptions,
 | 
				
			||||||
  buildMessage,
 | 
					  buildMessage,
 | 
				
			||||||
} from 'class-validator';
 | 
					} from 'class-validator';
 | 
				
			||||||
// TODO refactor ??
 | 
					
 | 
				
			||||||
// TODO propely set driver max limit
 | 
					 | 
				
			||||||
export function hasProperDriverSeats(value: any, args: ValidationArguments) {
 | 
					export function hasProperDriverSeats(value: any, args: ValidationArguments) {
 | 
				
			||||||
  if (value === true && typeof args.object['seatsDriver'] === 'number')
 | 
					  if (value === true && typeof args.object['seatsDriver'] === 'number')
 | 
				
			||||||
    return args.object['seatsDriver'] > 0;
 | 
					    return args.object['seatsDriver'] > 0;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,8 +4,7 @@ import {
 | 
				
			||||||
  ValidationOptions,
 | 
					  ValidationOptions,
 | 
				
			||||||
  buildMessage,
 | 
					  buildMessage,
 | 
				
			||||||
} from 'class-validator';
 | 
					} from 'class-validator';
 | 
				
			||||||
// TODO refactor ??
 | 
					
 | 
				
			||||||
// TODO propely set passenger max limit
 | 
					 | 
				
			||||||
export function hasProperPassengerSeats(value: any, args: ValidationArguments) {
 | 
					export function hasProperPassengerSeats(value: any, args: ValidationArguments) {
 | 
				
			||||||
  if (value === true && typeof args.object['seatsPassenger'] === 'number')
 | 
					  if (value === true && typeof args.object['seatsPassenger'] === 'number')
 | 
				
			||||||
    return args.object['seatsPassenger'] > 0;
 | 
					    return args.object['seatsPassenger'] > 0;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,8 +3,6 @@ import { CreateAdRequest } from '../dtos/create-ad.request';
 | 
				
			||||||
import { Frequency } from '../types/frequency.enum';
 | 
					import { Frequency } from '../types/frequency.enum';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class ReccurentNormaliser {
 | 
					export class ReccurentNormaliser {
 | 
				
			||||||
  constructor() {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  fromDateResolver(createAdRequest: CreateAdRequest): Date {
 | 
					  fromDateResolver(createAdRequest: CreateAdRequest): Date {
 | 
				
			||||||
    if (createAdRequest.frequency === Frequency.PUNCTUAL)
 | 
					    if (createAdRequest.frequency === Frequency.PUNCTUAL)
 | 
				
			||||||
      return createAdRequest.departure;
 | 
					      return createAdRequest.departure;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,8 +7,8 @@ export type DefaultParams = {
 | 
				
			||||||
  SAT_MARGIN: number;
 | 
					  SAT_MARGIN: number;
 | 
				
			||||||
  SUN_MARGIN: number;
 | 
					  SUN_MARGIN: number;
 | 
				
			||||||
  DRIVER: boolean;
 | 
					  DRIVER: boolean;
 | 
				
			||||||
  DRIVER_SEAT: number;
 | 
					  SEATS_PROVIDED: number;
 | 
				
			||||||
  PASSENGER: boolean;
 | 
					  PASSENGER: boolean;
 | 
				
			||||||
  PASSENGER_SEATS: number;
 | 
					  SEATS_REQUESTED: number;
 | 
				
			||||||
  STRICT: boolean;
 | 
					  STRICT: boolean;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,7 +11,6 @@ import { IProvideParams } from '../interfaces/param-provider.interface';
 | 
				
			||||||
import { DefaultParams } from '../types/default-params.type';
 | 
					import { DefaultParams } from '../types/default-params.type';
 | 
				
			||||||
import { AdCreation } from '../dtos/ad.creation';
 | 
					import { AdCreation } from '../dtos/ad.creation';
 | 
				
			||||||
import { Ad } from '../entities/ad';
 | 
					import { Ad } from '../entities/ad';
 | 
				
			||||||
import { Frequency } from '../types/frequency.enum';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
@CommandHandler(CreateAdCommand)
 | 
					@CommandHandler(CreateAdCommand)
 | 
				
			||||||
export class CreateAdUseCase {
 | 
					export class CreateAdUseCase {
 | 
				
			||||||
| 
						 | 
					@ -84,9 +83,9 @@ export class CreateAdUseCase {
 | 
				
			||||||
  setDefaultDriverAndPassengerParameters(): void {
 | 
					  setDefaultDriverAndPassengerParameters(): void {
 | 
				
			||||||
    if (!this.ad.driver && !this.ad.passenger) {
 | 
					    if (!this.ad.driver && !this.ad.passenger) {
 | 
				
			||||||
      this.ad.driver = this.defaultParams.DRIVER;
 | 
					      this.ad.driver = this.defaultParams.DRIVER;
 | 
				
			||||||
      this.ad.seatsDriver = this.defaultParams.DRIVER_SEAT;
 | 
					      this.ad.seatsDriver = this.defaultParams.SEATS_PROVIDED;
 | 
				
			||||||
      this.ad.passenger = this.defaultParams.PASSENGER;
 | 
					      this.ad.passenger = this.defaultParams.PASSENGER;
 | 
				
			||||||
      this.ad.seatsPassenger = this.defaultParams.PASSENGER_SEATS;
 | 
					      this.ad.seatsPassenger = this.defaultParams.SEATS_REQUESTED;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      if (!this.ad.driver) {
 | 
					      if (!this.ad.driver) {
 | 
				
			||||||
        this.ad.driver = false;
 | 
					        this.ad.driver = false;
 | 
				
			||||||
| 
						 | 
					@ -105,8 +104,4 @@ export class CreateAdUseCase {
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  TransformPunctualToReccurent(): void {
 | 
					 | 
				
			||||||
    if (this.ad.frequency === Frequency.PUNCTUAL) {
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -79,25 +79,6 @@ const newAdRequest: CreateAdRequest = {
 | 
				
			||||||
  seatsDriver: 2,
 | 
					  seatsDriver: 2,
 | 
				
			||||||
  addresses: [mockAddress1, mockAddress2],
 | 
					  addresses: [mockAddress1, mockAddress2],
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
const newPunctualPassengerAdRequest: CreateAdRequest = {
 | 
					 | 
				
			||||||
  userUuid: '113e0000-0000-4000-a000-000000000000',
 | 
					 | 
				
			||||||
  passenger: true,
 | 
					 | 
				
			||||||
  frequency: Frequency.PUNCTUAL,
 | 
					 | 
				
			||||||
  departure: new Date('05-22-2023'),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  marginDurations: {
 | 
					 | 
				
			||||||
    mon: undefined,
 | 
					 | 
				
			||||||
    tue: undefined,
 | 
					 | 
				
			||||||
    wed: undefined,
 | 
					 | 
				
			||||||
    thu: undefined,
 | 
					 | 
				
			||||||
    fri: undefined,
 | 
					 | 
				
			||||||
    sat: undefined,
 | 
					 | 
				
			||||||
    sun: undefined,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  seatsPassenger: 1,
 | 
					 | 
				
			||||||
  addresses: [mockAddressWithoutPos1, mockAddressWithoutPos2],
 | 
					 | 
				
			||||||
  schedule: {},
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
const mockMessager = {
 | 
					const mockMessager = {
 | 
				
			||||||
  publish: jest.fn().mockImplementation(),
 | 
					  publish: jest.fn().mockImplementation(),
 | 
				
			||||||
| 
						 | 
					@ -113,14 +94,14 @@ const mockDefaultParamsProvider = {
 | 
				
			||||||
      SAT_MARGIN: 900,
 | 
					      SAT_MARGIN: 900,
 | 
				
			||||||
      SUN_MARGIN: 900,
 | 
					      SUN_MARGIN: 900,
 | 
				
			||||||
      DRIVER: false,
 | 
					      DRIVER: false,
 | 
				
			||||||
      DRIVER_SEAT: 0,
 | 
					      SEATS_PROVIDED: 0,
 | 
				
			||||||
      PASSENGER: true,
 | 
					      PASSENGER: true,
 | 
				
			||||||
      PASSENGER_SEATS: 1,
 | 
					      SEATS_REQUESTED: 1,
 | 
				
			||||||
      STRICT: false,
 | 
					      STRICT: false,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
let mockAdRepository = {
 | 
					const mockAdRepository = {
 | 
				
			||||||
  create: jest
 | 
					  create: jest
 | 
				
			||||||
    .fn()
 | 
					    .fn()
 | 
				
			||||||
    // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | 
					    // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | 
				
			||||||
| 
						 | 
					@ -134,7 +115,7 @@ let mockAdRepository = {
 | 
				
			||||||
    .mockImplementationOnce(() => {
 | 
					    .mockImplementationOnce(() => {
 | 
				
			||||||
      throw new Error('Already exists');
 | 
					      throw new Error('Already exists');
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    .mockImplementation((command?: CreateAdCommand) => {}),
 | 
					    .mockImplementation(),
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
describe('CreateAdUseCase', () => {
 | 
					describe('CreateAdUseCase', () => {
 | 
				
			||||||
  let createAdUseCase: CreateAdUseCase;
 | 
					  let createAdUseCase: CreateAdUseCase;
 | 
				
			||||||
| 
						 | 
					@ -206,9 +187,9 @@ describe('CreateAdUseCase', () => {
 | 
				
			||||||
        satMargin: mockDefaultParamsProvider.getParams().SAT_MARGIN,
 | 
					        satMargin: mockDefaultParamsProvider.getParams().SAT_MARGIN,
 | 
				
			||||||
        sunMargin: mockDefaultParamsProvider.getParams().SUN_MARGIN,
 | 
					        sunMargin: mockDefaultParamsProvider.getParams().SUN_MARGIN,
 | 
				
			||||||
        driver: mockDefaultParamsProvider.getParams().DRIVER,
 | 
					        driver: mockDefaultParamsProvider.getParams().DRIVER,
 | 
				
			||||||
        seatsDriver: mockDefaultParamsProvider.getParams().DRIVER_SEAT,
 | 
					        seatsDriver: mockDefaultParamsProvider.getParams().SEATS_PROVIDED,
 | 
				
			||||||
        passenger: mockDefaultParamsProvider.getParams().PASSENGER,
 | 
					        passenger: mockDefaultParamsProvider.getParams().PASSENGER,
 | 
				
			||||||
        seatsPassenger: mockDefaultParamsProvider.getParams().PASSENGER_SEATS,
 | 
					        seatsPassenger: mockDefaultParamsProvider.getParams().SEATS_REQUESTED,
 | 
				
			||||||
        strict: mockDefaultParamsProvider.getParams().STRICT,
 | 
					        strict: mockDefaultParamsProvider.getParams().STRICT,
 | 
				
			||||||
        addresses: {
 | 
					        addresses: {
 | 
				
			||||||
          create: minimalReccurentAdREquest.addresses as AddressCreation[],
 | 
					          create: minimalReccurentAdREquest.addresses as AddressCreation[],
 | 
				
			||||||
| 
						 | 
					@ -219,8 +200,57 @@ describe('CreateAdUseCase', () => {
 | 
				
			||||||
      expect(mockAdRepository.create).toBeCalledWith(expectedAdCreation);
 | 
					      expect(mockAdRepository.create).toBeCalledWith(expectedAdCreation);
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    it('should create an passengerAd with addresses without position ', async () => {
 | 
					    it('should create an passengerAd with addresses without position ', async () => {
 | 
				
			||||||
 | 
					      const newPunctualPassengerAdRequest: CreateAdRequest = {
 | 
				
			||||||
 | 
					        userUuid: '113e0000-0000-4000-a000-000000000000',
 | 
				
			||||||
 | 
					        passenger: true,
 | 
				
			||||||
 | 
					        frequency: Frequency.PUNCTUAL,
 | 
				
			||||||
 | 
					        departure: new Date('05-22-2023 09:36'),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        marginDurations: {
 | 
				
			||||||
 | 
					          mon: undefined,
 | 
				
			||||||
 | 
					          tue: undefined,
 | 
				
			||||||
 | 
					          wed: undefined,
 | 
				
			||||||
 | 
					          thu: undefined,
 | 
				
			||||||
 | 
					          fri: undefined,
 | 
				
			||||||
 | 
					          sat: undefined,
 | 
				
			||||||
 | 
					          sun: undefined,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        seatsPassenger: 1,
 | 
				
			||||||
 | 
					        addresses: [mockAddressWithoutPos1, mockAddressWithoutPos2],
 | 
				
			||||||
 | 
					        schedule: {},
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
      const newAdCommand = new CreateAdCommand(newPunctualPassengerAdRequest);
 | 
					      const newAdCommand = new CreateAdCommand(newPunctualPassengerAdRequest);
 | 
				
			||||||
      await createAdUseCase.execute(newAdCommand);
 | 
					      await createAdUseCase.execute(newAdCommand);
 | 
				
			||||||
 | 
					      const expectedAdCreation = {
 | 
				
			||||||
 | 
					        userUuid: newPunctualPassengerAdRequest.userUuid,
 | 
				
			||||||
 | 
					        frequency: newPunctualPassengerAdRequest.frequency,
 | 
				
			||||||
 | 
					        fromDate: newPunctualPassengerAdRequest.departure,
 | 
				
			||||||
 | 
					        toDate: newPunctualPassengerAdRequest.departure,
 | 
				
			||||||
 | 
					        monTime: '09:36',
 | 
				
			||||||
 | 
					        tueTime: undefined,
 | 
				
			||||||
 | 
					        wedTime: undefined,
 | 
				
			||||||
 | 
					        thuTime: undefined,
 | 
				
			||||||
 | 
					        friTime: undefined,
 | 
				
			||||||
 | 
					        satTime: undefined,
 | 
				
			||||||
 | 
					        sunTime: undefined,
 | 
				
			||||||
 | 
					        monMargin: mockDefaultParamsProvider.getParams().MON_MARGIN,
 | 
				
			||||||
 | 
					        tueMargin: mockDefaultParamsProvider.getParams().TUE_MARGIN,
 | 
				
			||||||
 | 
					        wedMargin: mockDefaultParamsProvider.getParams().WED_MARGIN,
 | 
				
			||||||
 | 
					        thuMargin: mockDefaultParamsProvider.getParams().THU_MARGIN,
 | 
				
			||||||
 | 
					        friMargin: mockDefaultParamsProvider.getParams().FRI_MARGIN,
 | 
				
			||||||
 | 
					        satMargin: mockDefaultParamsProvider.getParams().SAT_MARGIN,
 | 
				
			||||||
 | 
					        sunMargin: mockDefaultParamsProvider.getParams().SUN_MARGIN,
 | 
				
			||||||
 | 
					        driver: false,
 | 
				
			||||||
 | 
					        seatsDriver: 0,
 | 
				
			||||||
 | 
					        passenger: newPunctualPassengerAdRequest.passenger,
 | 
				
			||||||
 | 
					        seatsPassenger: newPunctualPassengerAdRequest.seatsPassenger,
 | 
				
			||||||
 | 
					        strict: mockDefaultParamsProvider.getParams().STRICT,
 | 
				
			||||||
 | 
					        addresses: {
 | 
				
			||||||
 | 
					          create: newPunctualPassengerAdRequest.addresses as AddressCreation[],
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        createdAt: undefined,
 | 
				
			||||||
 | 
					      } as AdCreation;
 | 
				
			||||||
 | 
					      expect(mockAdRepository.create).toBeCalledWith(expectedAdCreation);
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue