diff --git a/src/server/webhooks/events/pr/event.test.ts b/src/server/webhooks/events/pr/event.test.ts index e29aea0..856736b 100644 --- a/src/server/webhooks/events/pr/event.test.ts +++ b/src/server/webhooks/events/pr/event.test.ts @@ -1,5 +1,6 @@ import { describe, test } from "vitest" -import { isPrEventKey } from "./event.js" +import type { Event } from "../event.js" +import { isPrEvent, isPrEventKey } from "./event.js" describe("isPrEventKey", () => { test("pr:comment:added", ({ expect }) => { @@ -12,3 +13,15 @@ describe("isPrEventKey", () => { expect(result).toBe(false) }) }) + +describe("isPrEvent", () => { + test("pr:comment:added", ({ expect }) => { + const result = isPrEvent({ eventKey: "pr:comment:added" } as Event) + expect(result).toBe(true) + }) + + test("project:modified", ({ expect }) => { + const result = isPrEvent({ eventKey: "project:modified" } as Event) + expect(result).toBe(false) + }) +}) diff --git a/src/server/webhooks/events/pr/event.ts b/src/server/webhooks/events/pr/event.ts index f5fbe51..85fd09a 100644 --- a/src/server/webhooks/events/pr/event.ts +++ b/src/server/webhooks/events/pr/event.ts @@ -1,3 +1,4 @@ +import type { Event } from "../event.js" import type { PRCommentAdded } from "./comment_added.js" import type { PRCommentDeleted } from "./comment_deleted.js" import type { PRCommentEdited } from "./comment_edited.js" @@ -29,6 +30,10 @@ export type PrEvent = | PRReviewerUpdated export type PrEventKey = PrEvent["eventKey"] +export function isPrEvent(event: Event): event is PrEvent { + return isPrEventKey(event.eventKey) +} + export function isPrEventKey(key: unknown): key is PrEventKey { return Object.values(prEventKeys).includes(key) } diff --git a/src/server/webhooks/events/project/event.test.ts b/src/server/webhooks/events/project/event.test.ts index 5ba097f..d6e6434 100644 --- a/src/server/webhooks/events/project/event.test.ts +++ b/src/server/webhooks/events/project/event.test.ts @@ -1,5 +1,6 @@ import { describe, test } from "vitest" -import { isProjectEventKey } from "./event.js" +import type { Event } from "../event.js" +import { isProjectEvent, isProjectEventKey } from "./event.js" describe("isProjectEventKey", () => { test("project:modified", ({ expect }) => { @@ -12,3 +13,17 @@ describe("isProjectEventKey", () => { expect(result).toBe(false) }) }) + +describe("isProjectEvent", () => { + test("project:modified", ({ expect }) => { + const result = isProjectEvent({ eventKey: "project:modified" } as Event) + expect(result).toBe(true) + }) + + test("mirror:repo_synchronized", ({ expect }) => { + const result = isProjectEvent({ + eventKey: "mirror:repo_synchronized", + } as Event) + expect(result).toBe(false) + }) +}) diff --git a/src/server/webhooks/events/project/event.ts b/src/server/webhooks/events/project/event.ts index 3c1ab9f..c872d9b 100644 --- a/src/server/webhooks/events/project/event.ts +++ b/src/server/webhooks/events/project/event.ts @@ -1,9 +1,14 @@ +import type { Event } from "../event.js" import type { ProjectModified } from "./modified.js" /** You can create webhooks for events that occur in a project. */ export type ProjectEvent = ProjectModified export type ProjectEventKey = ProjectEvent["eventKey"] +export function isProjectEvent(event: Event): event is ProjectEvent { + return isProjectEventKey(event.eventKey) +} + export function isProjectEventKey(key: unknown): key is ProjectEventKey { return Object.values(projectEventKeys).includes(key) } diff --git a/src/server/webhooks/events/repo/event.test.ts b/src/server/webhooks/events/repo/event.test.ts index ce74106..1e410c3 100644 --- a/src/server/webhooks/events/repo/event.test.ts +++ b/src/server/webhooks/events/repo/event.test.ts @@ -1,5 +1,6 @@ import { describe, test } from "vitest" -import { isRepoEventKey } from "./event.js" +import type { Event } from "../event.js" +import { isRepoEvent, isRepoEventKey } from "./event.js" describe("isRepoEventKey", () => { test("mirror:repo_synchronized", ({ expect }) => { @@ -12,3 +13,16 @@ describe("isRepoEventKey", () => { expect(result).toBe(false) }) }) +describe("isRepoEvent", () => { + test("mirror:repo_synchronized", ({ expect }) => { + const result = isRepoEvent({ + eventKey: "mirror:repo_synchronized", + } as Event) + expect(result).toBe(true) + }) + + test("project:modified", ({ expect }) => { + const result = isRepoEvent({ eventKey: "project:modified" } as Event) + expect(result).toBe(false) + }) +}) diff --git a/src/server/webhooks/events/repo/event.ts b/src/server/webhooks/events/repo/event.ts index a102c8a..6960607 100644 --- a/src/server/webhooks/events/repo/event.ts +++ b/src/server/webhooks/events/repo/event.ts @@ -1,3 +1,4 @@ +import type { Event } from "../event.js" import type { RepoCommentAdded } from "./comment_added.js" import type { RepoCommentDeleted } from "./comment_deleted.js" import type { RepoCommentEdited } from "./comment_edited.js" @@ -19,6 +20,10 @@ export type RepoEvent = | RepoSecretDetected export type RepoEventKey = RepoEvent["eventKey"] +export function isRepoEvent(event: Event): event is RepoEvent { + return isRepoEventKey(event.eventKey) +} + export function isRepoEventKey(key: unknown): key is RepoEventKey { return Object.values(repoEventKeys).includes(key) }