diff --git a/turbo/generators/templates/event/publish/event.test.ts.hbs b/turbo/generators/templates/event/publish/event.test.ts.hbs new file mode 100644 index 0000000..6a7ca0e --- /dev/null +++ b/turbo/generators/templates/event/publish/event.test.ts.hbs @@ -0,0 +1,13 @@ +// packages/{{kebabCase feature}}/src/events/{{kebabCase event}}.event.test.ts +import { describe, it, expect } from "vitest"; +import { {{camelCase event}}EventSchema, {{camelCase event}}Event } from "@/events/{{kebabCase event}}.event"; + +describe("{{camelCase event}}Event", () => { + it("has the correct wire name", () => { + expect({{camelCase event}}Event.name).toBe("{{kebabCase feature}}.{{event}}"); + }); + + it("validates an empty payload (stub schema)", () => { + expect(() => {{camelCase event}}EventSchema.parse({})).not.toThrow(); + }); +}); diff --git a/turbo/generators/templates/event/publish/event.ts.hbs b/turbo/generators/templates/event/publish/event.ts.hbs new file mode 100644 index 0000000..6992a4f --- /dev/null +++ b/turbo/generators/templates/event/publish/event.ts.hbs @@ -0,0 +1,12 @@ +// packages/{{kebabCase feature}}/src/events/{{kebabCase event}}.event.ts +import { z } from "zod"; +import { defineEvent } from "@repo/core-events"; + +export const {{camelCase event}}EventSchema = z.object({}).strict(); + +export type {{pascalCase event}}Event = z.infer; + +export const {{camelCase event}}Event = defineEvent( + "{{kebabCase feature}}.{{event}}", + {{camelCase event}}EventSchema, +);