From 3ad4e254d38b7579cd3f68fc0958b0d12ad018b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=B8vring?= Date: Thu, 18 Jul 2024 14:05:14 +0200 Subject: [PATCH 1/2] Removes empty elements --- src/common/utils/listFromCommaSeparatedString.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/common/utils/listFromCommaSeparatedString.ts b/src/common/utils/listFromCommaSeparatedString.ts index 18e692a0..0f443292 100644 --- a/src/common/utils/listFromCommaSeparatedString.ts +++ b/src/common/utils/listFromCommaSeparatedString.ts @@ -2,7 +2,10 @@ const listFromCommaSeparatedString = (str?: string) => { if (!str) { return [] } - return str.split(",").map(e => e.trim()) + return str + .split(",") + .map(e => e.trim()) + .filter(e => e.length > 0) } export default listFromCommaSeparatedString From 634a59ec48ae085c15cacfec8cf4f2e7dd2f8ec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=B8vring?= Date: Thu, 18 Jul 2024 14:07:45 +0200 Subject: [PATCH 2/2] Adds unit tests --- .../listFromCommaSeparatedString.test.ts | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 __test__/common/utils/listFromCommaSeparatedString.test.ts diff --git a/__test__/common/utils/listFromCommaSeparatedString.test.ts b/__test__/common/utils/listFromCommaSeparatedString.test.ts new file mode 100644 index 00000000..e3f75d43 --- /dev/null +++ b/__test__/common/utils/listFromCommaSeparatedString.test.ts @@ -0,0 +1,46 @@ +import listFromCommaSeparatedString from "@/common/utils/listFromCommaSeparatedString" + +test("It returns an empty list given undefined", async () => { + const result = listFromCommaSeparatedString(undefined) + expect(result).toEqual([]) +}) + +test("It returns an empty list given an empty string", async () => { + const result = listFromCommaSeparatedString("") + expect(result).toEqual([]) +}) + +test("It returns an empty list given a string white a single whitespace", async () => { + const result = listFromCommaSeparatedString(" ") + expect(result).toEqual([]) +}) + +test("It returns an empty list given a string white multiple whitespaces", async () => { + const result = listFromCommaSeparatedString(" ") + expect(result).toEqual([]) +}) + +test("It returns a single element", async () => { + const result = listFromCommaSeparatedString("foo") + expect(result).toEqual(["foo"]) +}) + +test("It returns multiple elements", async () => { + const result = listFromCommaSeparatedString("foo,bar") + expect(result).toEqual(["foo", "bar"]) +}) + +test("It trims elements for whitespace", async () => { + const result = listFromCommaSeparatedString("foo, bar") + expect(result).toEqual(["foo", "bar"]) +}) + +test("It returns an empty list for a string containing a single comma", async () => { + const result = listFromCommaSeparatedString(",") + expect(result).toEqual([]) +}) + +test("It returns an empty list for a string containing multiple commas", async () => { + const result = listFromCommaSeparatedString(",,,") + expect(result).toEqual([]) +})