Skip to content

Commit 10305fa

Browse files
committed
chore: organize ws stats, schedule stories
Resolves: #1681 Summary: - Moves WorkspaceSchedule out of WorkspaceStats - Adds WorkspaceScheduleForm directory - Adds meaningful stories for WorkspaceStats Impact: Improves breadth of our chromatic visual regression tests since the examples for WorkspaceStats were non-representative of the component
1 parent c04d045 commit 10305fa

File tree

6 files changed

+73
-44
lines changed

6 files changed

+73
-44
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Story } from "@storybook/react"
2+
import dayjs from "dayjs"
23
import React from "react"
3-
import { MockWorkspace } from "../../testHelpers/renderHelpers"
4+
import * as Mocks from "../../testHelpers/entities"
45
import { WorkspaceSchedule, WorkspaceScheduleProps } from "./WorkspaceSchedule"
56

67
export default {
@@ -11,7 +12,66 @@ export default {
1112

1213
const Template: Story<WorkspaceScheduleProps> = (args) => <WorkspaceSchedule {...args} />
1314

14-
export const Example = Template.bind({})
15-
Example.args = {
16-
workspace: MockWorkspace,
15+
export const NoTTL = Template.bind({})
16+
NoTTL.args = {
17+
workspace: {
18+
...Mocks.MockWorkspace,
19+
ttl: undefined,
20+
},
21+
}
22+
23+
export const ShutdownSoon = Template.bind({})
24+
ShutdownSoon.args = {
25+
workspace: {
26+
...Mocks.MockWorkspace,
27+
28+
latest_build: {
29+
...Mocks.MockWorkspaceBuild,
30+
transition: "start",
31+
updated_at: dayjs().subtract(1, "hour").toString(), // 1 hour ago
32+
},
33+
ttl: 2 * 60 * 60 * 1000 * 1_000_000, // 2 hours
34+
},
35+
}
36+
37+
export const ShutdownLong = Template.bind({})
38+
ShutdownLong.args = {
39+
workspace: {
40+
...Mocks.MockWorkspace,
41+
42+
latest_build: {
43+
...Mocks.MockWorkspaceBuild,
44+
transition: "start",
45+
updated_at: dayjs().toString(),
46+
},
47+
ttl: 7 * 24 * 60 * 60 * 1000 * 1_000_000, // 7 days
48+
},
49+
}
50+
51+
export const WorkspaceOffShort = Template.bind({})
52+
WorkspaceOffShort.args = {
53+
workspace: {
54+
...Mocks.MockWorkspace,
55+
56+
latest_build: {
57+
...Mocks.MockWorkspaceBuild,
58+
transition: "stop",
59+
updated_at: dayjs().subtract(2, "days").toString(),
60+
},
61+
ttl: 2 * 60 * 60 * 1000 * 1_000_000, // 2 hours
62+
},
63+
}
64+
65+
export const WorkspaceOffLong = Template.bind({})
66+
WorkspaceOffLong.args = {
67+
workspace: {
68+
...Mocks.MockWorkspace,
69+
70+
latest_build: {
71+
...Mocks.MockWorkspaceBuild,
72+
transition: "stop",
73+
updated_at: dayjs().subtract(2, "days").toString(),
74+
},
75+
ttl: 2 * 365 * 24 * 60 * 60 * 1000 * 1_000_000, // 2 years
76+
},
1777
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { Story } from "@storybook/react"
2-
import dayjs from "dayjs"
32
import React from "react"
43
import * as Mocks from "../../testHelpers/renderHelpers"
54
import { WorkspaceStats, WorkspaceStatsProps } from "../WorkspaceStats/WorkspaceStats"
@@ -11,66 +10,36 @@ export default {
1110

1211
const Template: Story<WorkspaceStatsProps> = (args) => <WorkspaceStats {...args} />
1312

14-
export const NoTTL = Template.bind({})
15-
NoTTL.args = {
13+
export const Start = Template.bind({})
14+
Start.args = {
1615
workspace: {
1716
...Mocks.MockWorkspace,
18-
ttl: undefined,
19-
},
20-
}
21-
22-
export const ShutdownSoon = Template.bind({})
23-
ShutdownSoon.args = {
24-
workspace: {
25-
...Mocks.MockWorkspace,
26-
27-
latest_build: {
28-
...Mocks.MockWorkspaceBuild,
29-
transition: "start",
30-
updated_at: dayjs().subtract(1, "hour").toString(), // 1 hour ago
31-
},
32-
ttl: 2 * 60 * 60 * 1000 * 1_000_000, // 2 hours
33-
},
34-
}
35-
36-
export const ShutdownLong = Template.bind({})
37-
ShutdownLong.args = {
38-
workspace: {
39-
...Mocks.MockWorkspace,
40-
4117
latest_build: {
4218
...Mocks.MockWorkspaceBuild,
4319
transition: "start",
44-
updated_at: dayjs().toString(),
4520
},
46-
ttl: 7 * 24 * 60 * 60 * 1000 * 1_000_000, // 7 days
4721
},
4822
}
4923

50-
export const WorkspaceOffShort = Template.bind({})
51-
WorkspaceOffShort.args = {
24+
export const Stop = Template.bind({})
25+
Stop.args = {
5226
workspace: {
5327
...Mocks.MockWorkspace,
54-
5528
latest_build: {
5629
...Mocks.MockWorkspaceBuild,
5730
transition: "stop",
58-
updated_at: dayjs().subtract(2, "days").toString(),
5931
},
60-
ttl: 2 * 60 * 60 * 1000 * 1_000_000, // 2 hours
6132
},
6233
}
6334

64-
export const WorkspaceOffLong = Template.bind({})
65-
WorkspaceOffLong.args = {
35+
export const Outdated = Template.bind({})
36+
Outdated.args = {
6637
workspace: {
6738
...Mocks.MockWorkspace,
68-
6939
latest_build: {
7040
...Mocks.MockWorkspaceBuild,
71-
transition: "stop",
72-
updated_at: dayjs().subtract(2, "days").toString(),
41+
transition: "start",
7342
},
74-
ttl: 2 * 365 * 24 * 60 * 60 * 1000 * 1_000_000, // 2 years
43+
outdated: true,
7544
},
7645
}

site/src/pages/WorkspaceSchedulePage/WorkspaceSchedulePage.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { FullScreenLoader } from "../../components/Loader/FullScreenLoader"
1010
import {
1111
WorkspaceScheduleForm,
1212
WorkspaceScheduleFormValues,
13-
} from "../../components/WorkspaceStats/WorkspaceScheduleForm"
13+
} from "../../components/WorkspaceScheduleForm/WorkspaceScheduleForm"
1414
import { firstOrItem } from "../../util/array"
1515
import { dowToWeeklyFlag, extractTimezone, stripTimezone } from "../../util/schedule"
1616
import { workspaceSchedule } from "../../xServices/workspaceSchedule/workspaceScheduleXService"

0 commit comments

Comments
 (0)