mirror of
https://github.com/Since-3/Kuma.git
synced 2026-10-12 20:51:18 +00:00
58 lines
2.1 KiB
TypeScript
58 lines
2.1 KiB
TypeScript
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
|
|
vi.mock("@/src/lib/prisma", () => ({ prisma: { product: { findUnique: vi.fn() } } }));
|
|
vi.mock("@/src/lib/auth/getUser", () => ({
|
|
getUserData: vi.fn(),
|
|
isUser: (user: { role: string }) => user.role === "user",
|
|
}));
|
|
vi.mock("@/src/modules/settings/lib/discount-validation", async (importOriginal) => {
|
|
const actual =
|
|
await importOriginal<typeof import("@/src/modules/settings/lib/discount-validation")>();
|
|
return { ...actual, validateDiscountCode: vi.fn() };
|
|
});
|
|
vi.mock("@/src/modules/marketing/lib/consent", () => ({ hasMarketingConsent: vi.fn() }));
|
|
|
|
import { prisma } from "@/src/lib/prisma";
|
|
import { getUserData } from "@/src/lib/auth/getUser";
|
|
import { validateDiscountCode } from "@/src/modules/settings/lib/discount-validation";
|
|
import { previewPassDiscountCode } from "@/src/modules/products/actions/pass-purchase-actions";
|
|
|
|
const product = {
|
|
id: "prod-1",
|
|
businessId: "biz-1",
|
|
priceCents: 12000,
|
|
isActive: true,
|
|
business: { isPublic: true },
|
|
};
|
|
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
vi.mocked(getUserData).mockResolvedValue({ id: "user-1", role: "user" } as never);
|
|
vi.mocked(prisma.product.findUnique).mockResolvedValue(product as never);
|
|
vi.mocked(validateDiscountCode).mockResolvedValue({
|
|
valid: true,
|
|
discountCode: { id: "code-1", type: "percent", value: 25 },
|
|
});
|
|
});
|
|
|
|
describe("previewPassDiscountCode", () => {
|
|
it("rechnet den Kartenpreis mit Rabatt", async () => {
|
|
expect(await previewPassDiscountCode("prod-1", "KARTE25")).toEqual({
|
|
valid: true,
|
|
discountedPriceCents: 9000,
|
|
discountAmountCents: 3000,
|
|
});
|
|
});
|
|
|
|
it("lehnt Karten nicht öffentlicher Studios ab - wie der Checkout", async () => {
|
|
vi.mocked(prisma.product.findUnique).mockResolvedValue({
|
|
...product,
|
|
business: { isPublic: false },
|
|
} as never);
|
|
expect(await previewPassDiscountCode("prod-1", "KARTE25")).toEqual({
|
|
valid: false,
|
|
error: "Diese Karte ist nicht verfügbar.",
|
|
});
|
|
expect(validateDiscountCode).not.toHaveBeenCalled();
|
|
});
|
|
});
|