From 2d260302e75ed50e1f2658887dcd11fcc5b5e05c Mon Sep 17 00:00:00 2001 From: Nicolas Morel Date: Thu, 2 May 2024 08:53:03 +0200 Subject: [PATCH] fix: label false should also hide explicit labels (#3034) Fixes #3033 --- lib/errors.js | 8 ++++---- test/errors.js | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/lib/errors.js b/lib/errors.js index d2da2b41..581d5924 100755 --- a/lib/errors.js +++ b/lib/errors.js @@ -152,14 +152,14 @@ exports.template = function (value, messages, code, state, prefs) { exports.label = function (flags, state, prefs, messages) { - if (flags.label) { - return flags.label; - } - if (!prefs.errors.label) { return ''; } + if (flags.label) { + return flags.label; + } + let path = state.path; if (prefs.errors.label === 'key' && state.path.length > 1) { diff --git a/test/errors.js b/test/errors.js index ef9a7f0e..e5b44923 100755 --- a/test/errors.js +++ b/test/errors.js @@ -587,6 +587,21 @@ describe('errors', () => { expect(schema.validate({ x: { y: { a: [1] } } }, { errors: { label: 'key' } }).error).to.be.an.error('"[0]" must be a string'); }); + it('removes labels when label is false', () => { + + const schema = Joi.object({ + x: Joi.object({ + y: Joi.object({ + z: Joi.valid('z').label('z'), + a: Joi.array().items(Joi.string().label('item')) + }) + }) + }).options({ errors: { label: false } }); + + expect(schema.validate({ x: { y: { z: 'o' } } }).error).to.be.an.error('must be [z]'); + expect(schema.validate({ x: { y: { a: [1] } } }).error).to.be.an.error('must be a string'); + }); + describe('annotate()', () => { it('annotates error', () => {