From 8aebe13028af8eab0ff4f22b5061f1ef03baa90f Mon Sep 17 00:00:00 2001 From: zockicookie <133583695+zockicookie@users.noreply.github.com> Date: Thu, 5 Sep 2024 21:32:42 +0200 Subject: [PATCH 1/3] Statusbar-Duration-FallbackValues --- web/components/ui/Statusbar/Statusbar.tsx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/web/components/ui/Statusbar/Statusbar.tsx b/web/components/ui/Statusbar/Statusbar.tsx index 04cf32d7b..2f24ce15c 100644 --- a/web/components/ui/Statusbar/Statusbar.tsx +++ b/web/components/ui/Statusbar/Statusbar.tsx @@ -20,6 +20,15 @@ export type StatusbarProps = { function makeDurationString(lastConnectTime: Date): string { const diff = intervalToDuration({ start: lastConnectTime, end: new Date() }); + + // fallback values in case undefined or null is passed to diff values + diff.years ?? 0; + diff.weeks ?? 0; + diff.days ?? 0; + diff.hours ?? 0; + diff.minutes ?? 0; + diff.seconds ?? 0; + if (diff.days >= 1) { return formatDuration({ days: diff.days, From 1df95d50782514d89eac09b10a274cb824964a1c Mon Sep 17 00:00:00 2001 From: zockicookie <133583695+zockicookie@users.noreply.github.com> Date: Thu, 5 Sep 2024 21:44:49 +0200 Subject: [PATCH 2/3] Something was missing --- web/components/ui/Statusbar/Statusbar.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/web/components/ui/Statusbar/Statusbar.tsx b/web/components/ui/Statusbar/Statusbar.tsx index 2f24ce15c..edf9003bd 100644 --- a/web/components/ui/Statusbar/Statusbar.tsx +++ b/web/components/ui/Statusbar/Statusbar.tsx @@ -22,12 +22,12 @@ function makeDurationString(lastConnectTime: Date): string { const diff = intervalToDuration({ start: lastConnectTime, end: new Date() }); // fallback values in case undefined or null is passed to diff values - diff.years ?? 0; - diff.weeks ?? 0; - diff.days ?? 0; - diff.hours ?? 0; - diff.minutes ?? 0; - diff.seconds ?? 0; + diff.years = diff.years ?? 0; + diff.weeks = diff.weeks ?? 0; + diff.days = diff.days ?? 0; + diff.hours = diff.hours ?? 0; + diff.minutes = diff.minutes ?? 0; + diff.seconds = diff.seconds ?? 0; if (diff.days >= 1) { return formatDuration({ From 4d332a494b0fd4619390e839d099becfe184444f Mon Sep 17 00:00:00 2001 From: zockicookie <133583695+zockicookie@users.noreply.github.com> Date: Mon, 9 Sep 2024 03:40:41 +0200 Subject: [PATCH 3/3] parked test for statusbar string --- web/components/ui/Statusbar/Statusbar.tsx | 10 +-------- web/tests/statusbar.test.ts | 27 +++++++++++++++++++++++ 2 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 web/tests/statusbar.test.ts diff --git a/web/components/ui/Statusbar/Statusbar.tsx b/web/components/ui/Statusbar/Statusbar.tsx index edf9003bd..dad4ceba2 100644 --- a/web/components/ui/Statusbar/Statusbar.tsx +++ b/web/components/ui/Statusbar/Statusbar.tsx @@ -18,17 +18,9 @@ export type StatusbarProps = { className?: string; }; -function makeDurationString(lastConnectTime: Date): string { +export function makeDurationString(lastConnectTime: Date): string { const diff = intervalToDuration({ start: lastConnectTime, end: new Date() }); - // fallback values in case undefined or null is passed to diff values - diff.years = diff.years ?? 0; - diff.weeks = diff.weeks ?? 0; - diff.days = diff.days ?? 0; - diff.hours = diff.hours ?? 0; - diff.minutes = diff.minutes ?? 0; - diff.seconds = diff.seconds ?? 0; - if (diff.days >= 1) { return formatDuration({ days: diff.days, diff --git a/web/tests/statusbar.test.ts b/web/tests/statusbar.test.ts new file mode 100644 index 000000000..8e559e0f8 --- /dev/null +++ b/web/tests/statusbar.test.ts @@ -0,0 +1,27 @@ +import { makeDurationString } from "../components/ui/Statusbar/Statusbar"; + +// Testing the string displayed on the statusbar +describe('testStatusbar', () => { + test('function should return a string', () => { + const typeResult = makeDurationString(new Date(2005, 0, 24)); + expect(typeof typeResult).toBe('string'); + }); + + test('function should not return a string that contains undefined', () => { + let count = 0; + while (count < 100) { + const result = makeDurationString(randomDate); + expect(result).not.toContain("undefined"); + count++; + } + }); +}); + +const randomDate = getRandomDate(Date.now()-30, Date.now(), 0, 24); + +function getRandomDate(start, end, startHour, endHour): Date { + var date = new Date(+start + Math.random() * (end - start)); + var hour = startHour + Math.random() * (endHour - startHour) | 0; + date.setHours(hour); + return date; + } \ No newline at end of file