All files / app/validators car-validators.ts

100% Statements 8/8
100% Branches 0/0
100% Functions 5/5
100% Lines 8/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56  1x 1x                       1x         1x     9x               1x                     1x                 1x          
import {ValidationChain} from 'express-validator';
import {CarColor} from '@models';
import {ValidatorsImpl, Validators} from 'express-validator/src/chain';
 
export interface CarValidators extends Validators<ValidationChain> {
  isCarColor(): ValidationChain;
  isCarName(): ValidationChain;
  isLatitude(): ValidationChain;
  isLongitude(): ValidationChain;
}
 
/**
 * Class for additional car related validation checks.
 */
export class CarValidatorsImpl extends ValidatorsImpl<ValidationChain> {
  /**
   * Checks if car color.
   */
  isCarColor(): ValidationChain {
    return this
        .isString()
        .withMessage('color has to be a string')
        .isIn(Object.values(CarColor).filter((value) => isNaN(Number(value))))
        .withMessage('color has to be an available color');
  }
 
  /**
   * Checks if car name.
   */
  isCarName(): ValidationChain {
    return this
        .isString()
        .withMessage('name has to be a string')
        .isLength({min: 1})
        .withMessage('name has to be a non empty string');
  }
 
  /**
   * Checks if latitude.
   */
  isLatitude(): ValidationChain {
    return this
        .isFloat({min: -90, max: 90})
        .withMessage('latitude has to be a number between -90 and 90');
  }
 
  /**
   * Checks if longitude.
   */
  isLongitude(): ValidationChain {
    return this
        .isFloat({min: -180, max: 180})
        .withMessage('longitude has to be a number between -180 and 180');
  }
}