Skip to content

Commit 49b3ea0

Browse files
authored
refactor: clean up WorkspaceBuildLogs types (#4738)
* refactor: clean up types in WorkspaceBuildLogs * feat: add tests for groupLogsByStage * fixup!: formatting
1 parent dea3297 commit 49b3ea0

File tree

2 files changed

+45
-8
lines changed

2 files changed

+45
-8
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { ProvisionerJobLog } from "api/typesGenerated"
2+
import { groupLogsByStage } from "./WorkspaceBuildLogs"
3+
4+
describe("groupLogsByStage", () => {
5+
it("should group them by stage", () => {
6+
const input: ProvisionerJobLog[] = [
7+
{
8+
id: "1",
9+
created_at: "oct 13",
10+
log_source: "provisioner",
11+
log_level: "debug",
12+
stage: "build",
13+
output: "test",
14+
},
15+
{
16+
id: "2",
17+
created_at: "oct 13",
18+
log_source: "provisioner",
19+
log_level: "debug",
20+
stage: "cleanup",
21+
output: "test",
22+
},
23+
{
24+
id: "3",
25+
created_at: "oct 13",
26+
log_source: "provisioner",
27+
log_level: "debug",
28+
stage: "cleanup",
29+
output: "done",
30+
},
31+
]
32+
33+
const actual = groupLogsByStage(input)
34+
35+
expect(actual["cleanup"].length).toBe(2)
36+
})
37+
})

site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx

+8-8
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,18 @@ const Language = {
1010
}
1111

1212
type Stage = ProvisionerJobLog["stage"]
13+
type LogsGroupedByStage = Record<Stage, ProvisionerJobLog[]>
14+
type GroupLogsByStageFn = (logs: ProvisionerJobLog[]) => LogsGroupedByStage
1315

14-
const groupLogsByStage = (logs: ProvisionerJobLog[]) => {
15-
const logsByStage: Record<Stage, ProvisionerJobLog[]> = {}
16+
export const groupLogsByStage: GroupLogsByStageFn = (logs) => {
17+
const logsByStage: LogsGroupedByStage = {}
1618

1719
for (const log of logs) {
18-
// If there is no log in the stage record, add an empty array
19-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
20-
if (logsByStage[log.stage] === undefined) {
21-
logsByStage[log.stage] = []
20+
if (log.stage in logsByStage) {
21+
logsByStage[log.stage].push(log)
22+
} else {
23+
logsByStage[log.stage] = [log]
2224
}
23-
24-
logsByStage[log.stage].push(log)
2525
}
2626

2727
return logsByStage

0 commit comments

Comments
 (0)