From 4e28bd2551abae4c406f15cce213d210118b9fa7 Mon Sep 17 00:00:00 2001 From: Melanie Schwenk Date: Wed, 21 Feb 2024 10:16:54 +0100 Subject: [PATCH] Update description for buildMessage rawOutput --- addon/utils/validation-errors.js | 3 +-- tests/unit/utils/validation-errors-test.js | 26 ++++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/addon/utils/validation-errors.js b/addon/utils/validation-errors.js index 545f54c..8d2dac6 100644 --- a/addon/utils/validation-errors.js +++ b/addon/utils/validation-errors.js @@ -13,13 +13,12 @@ export default function buildMessage(key, result) { let returnsRaw = config['changeset-validations']?.rawOutput || false; let messages = getMessages(); - let description = messages.getDescriptionFor(key); - if (result.message) { return result.message; } let { type, value, context = {} } = result; + let description = context?.description ?? messages.getDescriptionFor(key); let message = get(messages, type); if (returnsRaw) { diff --git a/tests/unit/utils/validation-errors-test.js b/tests/unit/utils/validation-errors-test.js index 3dad17b..3bdb25e 100644 --- a/tests/unit/utils/validation-errors-test.js +++ b/tests/unit/utils/validation-errors-test.js @@ -133,4 +133,30 @@ module('Unit | Utility | validation errors', function () { assert.strictEqual(value, d, 'the passed value is returned'); config['changeset-validations'] = originalConfig; // reset the config }); + + test('#buildMessage can return a provided description in raw data structure', function (assert) { + let originalConfig = config['changeset-validations']; // enable the feature + config['changeset-validations'] = { rawOutput: true }; + let result = buildMessage('firstName', { + type: 'present', + value: 'testValue', + context: { foo: 'foo', description: 'Name' }, + }); + assert.notStrictEqual( + typeof result, + 'string', + 'the return value is an object' + ); + let { + message, + type, + value, + context: { description }, + } = result; + assert.ok(message, "{description} can't be blank"); + assert.strictEqual(description, 'Name', 'description is returned'); + assert.strictEqual(type, 'present', 'the type of the error is returned'); + assert.strictEqual(value, 'testValue', 'the passed value is returned'); + config['changeset-validations'] = originalConfig; // reset the config + }); });