From 5df25a64721847ae6086fd1fcae0b4724805f5a8 Mon Sep 17 00:00:00 2001 From: Rick Staa Date: Mon, 21 Nov 2022 10:10:46 +0100 Subject: [PATCH] fix: improve boolean parse behaviour (#2029) --- src/common/utils.js | 19 +++++++++++-------- tests/utils.test.js | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/src/common/utils.js b/src/common/utils.js index 688219c..1215fc9 100644 --- a/src/common/utils.js +++ b/src/common/utils.js @@ -77,17 +77,20 @@ const isValidHexColor = (hexColor) => { /** * Returns boolean if value is either "true" or "false" else the value as it is. * - * @param {string} value The value to parse. - * @returns {boolean | string} The parsed value. + * @param {string | boolean} value The value to parse. + * @returns {boolean | undefined } The parsed value. */ const parseBoolean = (value) => { - if (value === "true") { - return true; - } else if (value === "false") { - return false; - } else { - return value; + if (typeof value === "boolean") return value; + + if (typeof value === "string") { + if (value.toLowerCase() === "true") { + return true; + } else if (value.toLowerCase() === "false") { + return false; + } } + return undefined; }; /** diff --git a/tests/utils.test.js b/tests/utils.test.js index 5f6231c..c91fe9d 100644 --- a/tests/utils.test.js +++ b/tests/utils.test.js @@ -4,6 +4,7 @@ import { encodeHTML, getCardColors, kFormatter, + parseBoolean, renderError, wrapTextMultiline, } from "../src/common/utils.js"; @@ -19,6 +20,23 @@ describe("Test utils.js", () => { expect(kFormatter(9900000)).toBe("9900k"); }); + it("should test parseBoolean", () => { + expect(parseBoolean(true)).toBe(true); + expect(parseBoolean(false)).toBe(false); + + expect(parseBoolean("true")).toBe(true); + expect(parseBoolean("false")).toBe(false); + expect(parseBoolean("True")).toBe(true); + expect(parseBoolean("False")).toBe(false); + expect(parseBoolean("TRUE")).toBe(true); + expect(parseBoolean("FALSE")).toBe(false); + + expect(parseBoolean("1")).toBe(undefined); + expect(parseBoolean("0")).toBe(undefined); + expect(parseBoolean("")).toBe(undefined); + expect(parseBoolean(undefined)).toBe(undefined); + }); + it("should test encodeHTML", () => { expect(encodeHTML(`hello world<,.#4^&^@%!))`)).toBe( "<html>hello world<,.#4^&^@%!))",