diff --git a/src/__tests__/new-pet-welcome.test.ts b/src/__tests__/new-pet-welcome.test.ts index b8e0014..9f4509e 100644 --- a/src/__tests__/new-pet-welcome.test.ts +++ b/src/__tests__/new-pet-welcome.test.ts @@ -13,6 +13,9 @@ vi.mock("@/lib/team-pet", () => ({ ensureTeamPet: vi.fn().mockResolvedValue({ id: "pet-team" }), sendTeamMessage: (...args: unknown[]) => mockSendTeamMessage(...args), })); +vi.mock("@/lib/redis", () => ({ redis: {} })); +const mockBackfillOnFollow = vi.fn().mockResolvedValue(undefined); +vi.mock("@/lib/feed-helpers", () => ({ backfillOnFollow: (...args: unknown[]) => mockBackfillOnFollow(...args) })); const mockAssertAdmin = vi.fn(); vi.mock("@/trpc/routers/admin", () => ({ assertAdmin: (...args: unknown[]) => mockAssertAdmin(...args) })); @@ -67,6 +70,28 @@ describe("welcomeNewPet", () => { expect(mockSendTeamMessage).toHaveBeenCalledWith(expect.anything(), "pet-luna", expect.stringContaining("Hallo Luna")); }); + it("makes the new pet follow the team back and seeds its feed with the team's posts", async () => { + const prisma = createMockPrisma(); + prisma.follow.upsert.mockResolvedValue({}); + + await welcomeNewPet(asDb(prisma), { id: "pet-luna", name: "Luna" }, "de"); + + expect(prisma.follow.upsert).toHaveBeenCalledWith( + expect.objectContaining({ create: { followerPetId: "pet-luna", followeePetId: "pet-team" } }) + ); + expect(mockBackfillOnFollow).toHaveBeenCalledWith(expect.anything(), "pet-luna", "pet-team", expect.anything()); + }); + + it("still sends the welcome when following the team back fails", async () => { + const prisma = createMockPrisma(); + prisma.follow.upsert.mockResolvedValueOnce({}).mockRejectedValueOnce(new Error("db down")); + + await welcomeNewPet(asDb(prisma), { id: "pet-luna", name: "Luna" }, "de"); + + expect(mockBackfillOnFollow).not.toHaveBeenCalled(); + expect(mockSendTeamMessage).toHaveBeenCalled(); + }); + it("uses the English text for English users", async () => { const prisma = createMockPrisma(); prisma.follow.upsert.mockResolvedValue({}); @@ -86,6 +111,7 @@ describe("welcomeNewPet", () => { await welcomeNewPet(asDb(prisma), { id: "pet-kiki", name: "Kiki" }, "de"); expect(prisma.follow.upsert).not.toHaveBeenCalled(); + expect(mockBackfillOnFollow).not.toHaveBeenCalled(); expect(mockSendTeamMessage).toHaveBeenCalledWith(expect.anything(), "pet-kiki", "Servus Kiki!"); }); diff --git a/src/app/p/[secret]/curator/page.tsx b/src/app/p/[secret]/curator/page.tsx index 2a31eb4..e836e94 100644 --- a/src/app/p/[secret]/curator/page.tsx +++ b/src/app/p/[secret]/curator/page.tsx @@ -80,8 +80,8 @@ function CuratorForm({ initial }: { initial: Form }) { return (