it('should reject address with empty first address line and postcode', async () => { const errors = await validator.validate(new ClassFunction('', '', '', '', '')) expect(errors.length).to.equal(3) expectValidationError(errors, ValidationErrors.FIRST_LINE_REQUIRED) expectValidationError(errors, ValidationErrors.CITY_REQUIRED) expectValidationError(errors, ValidationErrors.POSTCODE_REQUIRED) })
.post(Paths.totalIncomeOrExpensesCalculation.uri, async (req: express.Request, res: express.Response) => { try { const incomeExpenseSources: IncomeExpenseSources = IncomeExpenseSources.fromObject(req.body) const validator: Validator = new Validator() const error: ValidationError[] = await validator.validate(incomeExpenseSources) if (error.length > 0) { return res.status(HttpStatus.UNPROCESSABLE_ENTITY).send(error) } const totalMonthlyIncomeExpense = CalculateMonthlyIncomeExpense .calculateTotalAmount(incomeExpenseSources.incomeExpenseSources) return res.status(HttpStatus.OK).json({ totalMonthlyIncomeExpense: totalMonthlyIncomeExpense }) } catch (err) { return res.status(HttpStatus.UNPROCESSABLE_ENTITY).send(err) } })
return async (req: express.Request, res: express.Response, next: express.NextFunction) => { const model: T = modelTypeMapper(removeIllegalCharacters(req.body)) const errors: ValidationError[] = isValidationEnabledFor(req) ? await validator.validate(model, { groups: validationGroup !== undefined ? [validationGroup] : [] }) : [] const action: object = req.body.action req.body = new Form<T>(model, errors, req.body) if (action) { req.body.action = action // Workaround to expose action to request handlers } next() }