mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
Update unit tests
This commit is contained in:
@@ -1,11 +1,8 @@
|
||||
import { AutoStart, scheduleToAutoStart } from "pages/WorkspacesPage/schedule"
|
||||
import { AutoStop, ttlMsToAutoStop } from "pages/WorkspacesPage/ttl"
|
||||
import * as TypesGen from "../../api/typesGenerated"
|
||||
import { WorkspaceScheduleFormValues } from "../../components/WorkspaceScheduleForm/WorkspaceScheduleForm"
|
||||
import * as Mocks from "../../testHelpers/entities"
|
||||
import {
|
||||
formValuesToAutoStartRequest,
|
||||
formValuesToTTLRequest,
|
||||
workspaceToInitialValues,
|
||||
} from "./WorkspaceSchedulePage"
|
||||
import { formValuesToAutoStartRequest, formValuesToTTLRequest } from "./WorkspaceSchedulePage"
|
||||
|
||||
const validValues: WorkspaceScheduleFormValues = {
|
||||
sunday: false,
|
||||
@@ -155,117 +152,79 @@ describe("WorkspaceSchedulePage", () => {
|
||||
})
|
||||
})
|
||||
|
||||
describe("workspaceToInitialValues", () => {
|
||||
it.each<[TypesGen.Workspace, WorkspaceScheduleFormValues]>([
|
||||
describe("scheduleToAutoStart", () => {
|
||||
it.each<[string | undefined, AutoStart]>([
|
||||
// Empty case
|
||||
[
|
||||
undefined,
|
||||
{
|
||||
...Mocks.MockWorkspace,
|
||||
autostart_schedule: undefined,
|
||||
ttl_ms: undefined,
|
||||
},
|
||||
{
|
||||
sunday: false,
|
||||
monday: false,
|
||||
tuesday: false,
|
||||
wednesday: false,
|
||||
thursday: false,
|
||||
friday: false,
|
||||
saturday: false,
|
||||
startTime: "",
|
||||
timezone: "",
|
||||
ttl: 0,
|
||||
enabled: false,
|
||||
schedule: {
|
||||
sunday: false,
|
||||
monday: false,
|
||||
tuesday: false,
|
||||
wednesday: false,
|
||||
thursday: false,
|
||||
friday: false,
|
||||
saturday: false,
|
||||
startTime: "",
|
||||
timezone: "",
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
// ttl-only case (2 hours)
|
||||
// Basic case: 9:30 1-5 UTC
|
||||
[
|
||||
"CRON_TZ=UTC 30 9 * * 1-5",
|
||||
{
|
||||
...Mocks.MockWorkspace,
|
||||
autostart_schedule: "",
|
||||
ttl_ms: 7_200_000,
|
||||
},
|
||||
{
|
||||
sunday: false,
|
||||
monday: false,
|
||||
tuesday: false,
|
||||
wednesday: false,
|
||||
thursday: false,
|
||||
friday: false,
|
||||
saturday: false,
|
||||
startTime: "",
|
||||
timezone: "",
|
||||
ttl: 2,
|
||||
enabled: true,
|
||||
schedule: {
|
||||
sunday: false,
|
||||
monday: true,
|
||||
tuesday: true,
|
||||
wednesday: true,
|
||||
thursday: true,
|
||||
friday: true,
|
||||
saturday: false,
|
||||
startTime: "09:30",
|
||||
timezone: "UTC",
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
// start schedule only
|
||||
// Complex case: 4:20 1 3-4 6 Canada/Eastern
|
||||
[
|
||||
"CRON_TZ=Canada/Eastern 20 16 * * 1,3-4,6",
|
||||
{
|
||||
...Mocks.MockWorkspace,
|
||||
autostart_schedule: "CRON_TZ=UTC 30 9 * * 1-5",
|
||||
ttl_ms: undefined,
|
||||
},
|
||||
{
|
||||
sunday: false,
|
||||
monday: true,
|
||||
tuesday: true,
|
||||
wednesday: true,
|
||||
thursday: true,
|
||||
friday: true,
|
||||
saturday: false,
|
||||
startTime: "09:30",
|
||||
timezone: "UTC",
|
||||
ttl: 0,
|
||||
enabled: true,
|
||||
schedule: {
|
||||
sunday: false,
|
||||
monday: true,
|
||||
tuesday: false,
|
||||
wednesday: true,
|
||||
thursday: true,
|
||||
friday: false,
|
||||
saturday: true,
|
||||
startTime: "16:20",
|
||||
timezone: "Canada/Eastern",
|
||||
},
|
||||
},
|
||||
],
|
||||
])(`scheduleToAutoStart(%p) returns %p`, (schedule, autoStart) => {
|
||||
expect(scheduleToAutoStart(schedule)).toEqual(autoStart)
|
||||
})
|
||||
})
|
||||
|
||||
// Basic case: 9:30 1-5 UTC running for 2 hours
|
||||
//
|
||||
// NOTE: We have to set CRON_TZ here because otherwise this test will
|
||||
// flake based off of where it runs!
|
||||
[
|
||||
{
|
||||
...Mocks.MockWorkspace,
|
||||
autostart_schedule: "CRON_TZ=UTC 30 9 * * 1-5",
|
||||
ttl_ms: 7_200_000,
|
||||
},
|
||||
{
|
||||
sunday: false,
|
||||
monday: true,
|
||||
tuesday: true,
|
||||
wednesday: true,
|
||||
thursday: true,
|
||||
friday: true,
|
||||
saturday: false,
|
||||
startTime: "09:30",
|
||||
timezone: "UTC",
|
||||
ttl: 2,
|
||||
},
|
||||
],
|
||||
|
||||
// Complex case: 4:20 1 3-4 6 Canada/Eastern for 8 hours
|
||||
[
|
||||
{
|
||||
...Mocks.MockWorkspace,
|
||||
autostart_schedule: "CRON_TZ=Canada/Eastern 20 16 * * 1,3-4,6",
|
||||
ttl_ms: 28_800_000,
|
||||
},
|
||||
{
|
||||
sunday: false,
|
||||
monday: true,
|
||||
tuesday: false,
|
||||
wednesday: true,
|
||||
thursday: true,
|
||||
friday: false,
|
||||
saturday: true,
|
||||
startTime: "16:20",
|
||||
timezone: "Canada/Eastern",
|
||||
ttl: 8,
|
||||
},
|
||||
],
|
||||
])(`workspaceToInitialValues(%p) returns %p`, (workspace, formValues) => {
|
||||
expect(workspaceToInitialValues(workspace)).toEqual(formValues)
|
||||
describe("ttlMsToAutoStop", () => {
|
||||
it.each<[number | undefined, AutoStop]>([
|
||||
// empty case
|
||||
[undefined, { enabled: false, ttl: 0 }],
|
||||
// zero
|
||||
[0, { enabled: false, ttl: 0 }],
|
||||
// basic case
|
||||
[28_800_000, { enabled: true, ttl: 8 }],
|
||||
])(`ttlMsToAutoStop(%p) returns %p`, (ttlMs, autoStop) => {
|
||||
expect(ttlMsToAutoStop(ttlMs)).toEqual(autoStop)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user