diff --git a/src/__tests__/helpers/prisma-mock.ts b/src/__tests__/helpers/prisma-mock.ts index d9b1ace..f8d260b 100644 --- a/src/__tests__/helpers/prisma-mock.ts +++ b/src/__tests__/helpers/prisma-mock.ts @@ -30,6 +30,11 @@ interface MockOwnerClient { update: MockFn; } +interface MockInviteCodeClient { + count: MockFn; + createMany: MockFn; +} + interface MockLegalDocumentVersionClient { create: MockFn; findMany: MockFn; @@ -203,6 +208,7 @@ interface MockNotificationClient { interface MockPrismaClient { pet: MockPetClient; owner: MockOwnerClient; + inviteCode: MockInviteCodeClient; species: MockSpeciesClient; breed: MockBreedClient; // Phase 2 @@ -249,6 +255,12 @@ export function createMockPrisma(): MockPrismaClient { create: vi.fn(), update: vi.fn(), }, + // pets.create's idempotent starter-invite-code seeding runs on every call — + // default to "no codes yet" so tests unrelated to invites don't need to stub it. + inviteCode: { + count: vi.fn().mockResolvedValue(0), + createMany: vi.fn().mockResolvedValue({ count: 0 }), + }, legalDocumentVersion: { create: vi.fn(), findMany: vi.fn(), diff --git a/src/__tests__/stories.test.ts b/src/__tests__/stories.test.ts index f3288e7..44efc38 100644 --- a/src/__tests__/stories.test.ts +++ b/src/__tests__/stories.test.ts @@ -97,12 +97,12 @@ describe("stories.hasActiveStory", () => { it("STORY-02 — hasActiveStory returns true when a non-expired story exists", async () => { const { caller, mockPrisma } = createCaller(); - mockPrisma.story.count.mockResolvedValue(1); + mockPrisma.story.findMany.mockResolvedValue([{ id: "story-1" }]); const result = await caller.hasActiveStory({ petId: "pet-1" }); - expect(result).toBe(true); - expect(mockPrisma.story.count).toHaveBeenCalledWith( + expect(result).toMatchObject({ hasStory: true }); + expect(mockPrisma.story.findMany).toHaveBeenCalledWith( expect.objectContaining({ where: expect.objectContaining({ petId: "pet-1", @@ -115,11 +115,11 @@ describe("stories.hasActiveStory", () => { it("STORY-02 — hasActiveStory returns false when no active stories exist", async () => { const { caller, mockPrisma } = createCaller(); - mockPrisma.story.count.mockResolvedValue(0); + mockPrisma.story.findMany.mockResolvedValue([]); const result = await caller.hasActiveStory({ petId: "pet-1" }); - expect(result).toBe(false); + expect(result).toMatchObject({ hasStory: false }); }); });