Skip to content

Commit

Permalink
feat: support 'default' in resolveException
Browse files Browse the repository at this point in the history
  • Loading branch information
medikoo committed Apr 2, 2019
1 parent 2a87100 commit e08332a
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 4 deletions.
5 changes: 4 additions & 1 deletion lib/resolve-exception.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@ var resolveMessage = function (message, value) {

module.exports = function (value, defaultMessage, inputOptions) {
if (!isObject(inputOptions)) throw new TypeError(resolveMessage(defaultMessage, value));
if (inputOptions.isOptional && !isValue(value)) return null;
if (!isValue(value)) {
if ("default" in inputOptions) return inputOptions["default"];
if (inputOptions.isOptional) return null;
}
var errorMessage = stringCoerce(inputOptions.errorMessage);
if (!isValue(errorMessage)) errorMessage = defaultMessage;
throw new TypeError(resolveMessage(errorMessage, value));
Expand Down
10 changes: 7 additions & 3 deletions test/lib/resolve-exception.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,18 @@ describe("lib/handle-exception", function () {
}
});
it("Should support optional values via inputOptions.isOptional", function () {
assert.equal(handleException(null, "%v is invalid", { isOptional: true }));
assert.equal(handleException(null, "%v is invalid", { isOptional: true }, null));
});
it("Should support optional values via inputOptions.default", function () {
// prettier-ignore
assert.equal(handleException(null, "%v is invalid", { "default": "bar" }), "bar");
});
it("Should support custome error message via inputOptions.errorMessage", function () {
try {
handleException(12, "%v is invalid", { errorMessage: "%v is not supported age" });
handleException(null, "%v is invalid", { errorMessage: "%v is not supported age" });
throw new Error("Unexpected");
} catch (error) {
assert.equal(error.message, "12 is not supported age");
assert.equal(error.message, "null is not supported age");
}
});
});

0 comments on commit e08332a

Please sign in to comment.