Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
3.1 kB ยท 98 lines
TypeScript
at incident-api
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899import { expect } from "@std/expect";import { describe, it as test } from "@std/testing/bdd";
import type { PageUpdate, Subscription } from "../types";import { buildReplyMessage, buildRootMessage } from "./slack-blocks";
function makeSub(over: Partial<Subscription> = {}): Subscription { return { id: 1, pageId: 1, pageName: "Acme Status", pageSlug: "acme", customDomain: null, componentIds: [], channelType: "slack", slackChannelId: "C1", ...over, };}
function makeUpdate(over: Partial<PageUpdate> = {}): PageUpdate { return { id: 10, pageId: 1, title: "API degraded", status: "investigating", message: "We are investigating elevated errors.", pageComponentIds: [], pageComponents: [], date: "2026-01-01T10:00:00.000Z", updateId: 100, ...over, };}
describe("buildRootMessage", () => { test("investigating header carries the magnifier emoji + label", () => { const root = buildRootMessage(makeUpdate(), makeSub()); expect(root.text).toContain("๐"); expect(root.text).toContain("Investigating"); expect(root.text).toContain("API degraded"); expect(root.attachments[0]?.color).toBeDefined(); });
test("resolved switches to the check mark and green bar", () => { const resolvedRoot = buildRootMessage( makeUpdate({ status: "resolved" }), makeSub(), ); const investigatingRoot = buildRootMessage(makeUpdate(), makeSub()); expect(resolvedRoot.text).toContain("โ
"); expect(resolvedRoot.text).toContain("Resolved"); expect(resolvedRoot.attachments[0]?.color).not.toBe( investigatingRoot.attachments[0]?.color, ); });
test("context line says Updated for reports and Scheduled for maintenance", () => { const contextText = (root: ReturnType<typeof buildRootMessage>) => JSON.stringify(root.attachments[0]?.blocks); expect(contextText(buildRootMessage(makeUpdate(), makeSub()))).toContain( "Updated 2026-01-01T10:00:00.000Z", ); const maintenance = buildRootMessage( makeUpdate({ status: "maintenance", updateId: undefined, date: "2026-01-01T10:00:00.000Z - 2026-01-02T10:00:00.000Z", }), makeSub(), ); expect(contextText(maintenance)).toContain( "Scheduled 2026-01-01T10:00:00.000Z - 2026-01-02T10:00:00.000Z", ); expect(contextText(maintenance)).not.toContain("Updated"); });
test("uses the custom domain origin when present", () => { const root = buildRootMessage( makeUpdate(), makeSub({ customDomain: "status.acme.com" }), ); expect(JSON.stringify(root.attachments)).toContain( "https://status.acme.com", ); });});
describe("buildReplyMessage", () => { test("reply carries status label and message", () => { const reply = buildReplyMessage( makeUpdate({ status: "monitoring", message: "Fix deployed." }), ); expect(reply.text).toContain("Monitoring"); expect(reply.text).toContain("Fix deployed."); expect(reply.blocks.length).toBeGreaterThan(0); });});