mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-28 14:15:24 +00:00
57 lines
2.0 KiB
TypeScript
57 lines
2.0 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { defaultTrigger } from "../../src/frontend/automations/TriggerCard";
|
|
import { emptyDraft } from "../../src/frontend/automations/AutomationEditor";
|
|
import { newStepId } from "../../src/frontend/automations/editor-types";
|
|
import { AUTOMATION_DEFINITION_VERSION } from "../../src/types";
|
|
|
|
describe("emptyDraft", () => {
|
|
it("starts on a metric threshold with no steps", () => {
|
|
const draft = emptyDraft();
|
|
expect(draft.name).toBe("");
|
|
expect(draft.enabled).toBe(true);
|
|
expect(draft.definition.version).toBe(AUTOMATION_DEFINITION_VERSION);
|
|
expect(draft.definition.trigger.kind).toBe("metric_threshold");
|
|
expect(draft.definition.steps).toEqual([]);
|
|
});
|
|
});
|
|
|
|
describe("defaultTrigger", () => {
|
|
it("gives every trigger kind a usable starting shape", () => {
|
|
expect(defaultTrigger("metric_threshold")).toMatchObject({
|
|
kind: "metric_threshold",
|
|
operator: ">",
|
|
cooldownMinutes: 15,
|
|
});
|
|
expect(defaultTrigger("host_status")).toMatchObject({
|
|
kind: "host_status",
|
|
to: "offline",
|
|
});
|
|
expect(defaultTrigger("health_check")).toMatchObject({
|
|
kind: "health_check",
|
|
to: "failing",
|
|
});
|
|
expect(defaultTrigger("schedule")).toMatchObject({ kind: "schedule" });
|
|
expect(defaultTrigger("docker_event")).toMatchObject({
|
|
kind: "docker_event",
|
|
event: "exited",
|
|
});
|
|
expect(defaultTrigger("webhook")).toMatchObject({ kind: "webhook" });
|
|
});
|
|
|
|
it("defaults a schedule to a valid cron expression", () => {
|
|
const trigger = defaultTrigger("schedule");
|
|
expect(trigger).toHaveProperty("cron");
|
|
// Five fields, which is what the backend parser requires.
|
|
expect(
|
|
String((trigger as { cron: string }).cron).split(/\s+/),
|
|
).toHaveLength(5);
|
|
});
|
|
});
|
|
|
|
describe("newStepId", () => {
|
|
it("produces distinct ids", () => {
|
|
const ids = new Set(Array.from({ length: 100 }, () => newStepId()));
|
|
expect(ids.size).toBe(100);
|
|
});
|
|
});
|