From d694a89aa64dbe4db87f8e4595b01ddc2b8429d6 Mon Sep 17 00:00:00 2001 From: Joe Previte Date: Mon, 24 Oct 2022 23:16:54 +0000 Subject: [PATCH 1/3] refactor: clean up types in WorkspaceBuildLogs --- .../WorkspaceBuildLogs/WorkspaceBuildLogs.tsx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx b/site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx index cc1b9e0233601..f0dc70c5609bc 100644 --- a/site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx +++ b/site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx @@ -10,18 +10,18 @@ const Language = { } type Stage = ProvisionerJobLog["stage"] +type LogsGroupedByStage = Record +type GroupLogsByStageFn = (logs: ProvisionerJobLog[]) => LogsGroupedByStage -const groupLogsByStage = (logs: ProvisionerJobLog[]) => { - const logsByStage: Record = {} +export const groupLogsByStage: GroupLogsByStageFn = (logs) => { + const logsByStage: LogsGroupedByStage = {} for (const log of logs) { - // If there is no log in the stage record, add an empty array - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (logsByStage[log.stage] === undefined) { - logsByStage[log.stage] = [] + if (log.stage in logsByStage) { + logsByStage[log.stage].push(log) + } else { + logsByStage[log.stage] = [log] } - - logsByStage[log.stage].push(log) } return logsByStage From d9cdc8579c5e9199a5f893734bb1a4fb3044197f Mon Sep 17 00:00:00 2001 From: Joe Previte Date: Mon, 24 Oct 2022 23:17:12 +0000 Subject: [PATCH 2/3] feat: add tests for groupLogsByStage --- .../WorkspaceBuildLogs.test.ts | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.test.ts diff --git a/site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.test.ts b/site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.test.ts new file mode 100644 index 0000000000000..a3b9c21feafa7 --- /dev/null +++ b/site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.test.ts @@ -0,0 +1,38 @@ +import { ProvisionerJobLog } from "api/typesGenerated" +import { groupLogsByStage } from "./WorkspaceBuildLogs" + +describe("groupLogsByStage", ()=> { + it("should group them by stage", () => { + const input: ProvisionerJobLog[] = [ + { + id: "1", + created_at: "oct 13", + log_source: "provisioner", + log_level: "debug", + stage: "build", + output: "test" + }, + { + id: "2", + created_at: "oct 13", + log_source: "provisioner", + log_level: "debug", + stage: "cleanup", + output: "test" + }, + { + id: "3", + created_at: "oct 13", + log_source: "provisioner", + log_level: "debug", + stage: "cleanup", + output: "done" + } + + ] + + const actual = groupLogsByStage(input) + + expect(actual["cleanup"].length).toBe(2) + }) +}) From 2a76d55d9fa34a8cebf50000b8d7b43a977f160c Mon Sep 17 00:00:00 2001 From: Joe Previte Date: Mon, 24 Oct 2022 23:17:44 +0000 Subject: [PATCH 3/3] fixup!: formatting --- .../WorkspaceBuildLogs/WorkspaceBuildLogs.test.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.test.ts b/site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.test.ts index a3b9c21feafa7..ec5d24463a3a6 100644 --- a/site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.test.ts +++ b/site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.test.ts @@ -1,7 +1,7 @@ import { ProvisionerJobLog } from "api/typesGenerated" import { groupLogsByStage } from "./WorkspaceBuildLogs" -describe("groupLogsByStage", ()=> { +describe("groupLogsByStage", () => { it("should group them by stage", () => { const input: ProvisionerJobLog[] = [ { @@ -10,7 +10,7 @@ describe("groupLogsByStage", ()=> { log_source: "provisioner", log_level: "debug", stage: "build", - output: "test" + output: "test", }, { id: "2", @@ -18,7 +18,7 @@ describe("groupLogsByStage", ()=> { log_source: "provisioner", log_level: "debug", stage: "cleanup", - output: "test" + output: "test", }, { id: "3", @@ -26,9 +26,8 @@ describe("groupLogsByStage", ()=> { log_source: "provisioner", log_level: "debug", stage: "cleanup", - output: "done" - } - + output: "done", + }, ] const actual = groupLogsByStage(input)