mirror of
https://github.com/Since-3/Kuma.git
synced 2026-10-12 21:41:17 +00:00
added marketing-building-blog-v1
This commit is contained in:
parent
a9f248c91d
commit
dc4f08ab0c
71 changed files with 6307 additions and 183 deletions
70
tests/settings/discount-validation.test.ts
Normal file
70
tests/settings/discount-validation.test.ts
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
import { describe, it, expect, vi } from "vitest";
|
||||
import { validateDiscountCode } from "@/src/modules/settings/lib/discount-validation";
|
||||
|
||||
function dbWith(code: Record<string, unknown> | null) {
|
||||
return {
|
||||
discountCode: { findUnique: vi.fn().mockResolvedValue(code) },
|
||||
discountRedemption: { findUnique: vi.fn().mockResolvedValue(null) },
|
||||
} as never;
|
||||
}
|
||||
|
||||
const baseCode = {
|
||||
id: "code-1",
|
||||
code: "SOMMER",
|
||||
type: "percent",
|
||||
value: 10,
|
||||
scope: "all_courses",
|
||||
courseIds: [],
|
||||
appliesTo: "courses",
|
||||
restrictedToUserId: null,
|
||||
maxRedemptions: null,
|
||||
redeemedCount: 0,
|
||||
startsAt: null,
|
||||
expiresAt: null,
|
||||
isActive: true,
|
||||
};
|
||||
|
||||
const base = { code: "sommer", businessId: "biz-1", userId: "user-1" };
|
||||
|
||||
describe("validateDiscountCode - wofür ein Code gilt", () => {
|
||||
it("Kurs-Codes gelten nicht beim Kartenkauf", async () => {
|
||||
const result = await validateDiscountCode(dbWith(baseCode), { ...base, productId: "prod-1" });
|
||||
expect(result).toEqual({ valid: false, reason: "Dieser Rabattcode gilt nicht für Karten." });
|
||||
});
|
||||
|
||||
it("Karten-Codes gelten nicht für Kurse", async () => {
|
||||
const result = await validateDiscountCode(dbWith({ ...baseCode, appliesTo: "passes" }), {
|
||||
...base,
|
||||
courseId: "course-1",
|
||||
});
|
||||
expect(result).toEqual({ valid: false, reason: "Dieser Rabattcode gilt nur für Karten." });
|
||||
});
|
||||
|
||||
it("Codes für beides gelten bei Kurs und Karte", async () => {
|
||||
const db = dbWith({ ...baseCode, appliesTo: "all" });
|
||||
expect((await validateDiscountCode(db, { ...base, courseId: "c" })).valid).toBe(true);
|
||||
expect((await validateDiscountCode(db, { ...base, productId: "p" })).valid).toBe(true);
|
||||
});
|
||||
|
||||
it("die Kursauswahl wirkt beim Kartenkauf nicht", async () => {
|
||||
const db = dbWith({
|
||||
...baseCode,
|
||||
appliesTo: "all",
|
||||
scope: "specific_courses",
|
||||
courseIds: ["c1"],
|
||||
});
|
||||
expect((await validateDiscountCode(db, { ...base, productId: "p" })).valid).toBe(true);
|
||||
expect((await validateDiscountCode(db, { ...base, courseId: "c2" })).valid).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe("validateDiscountCode - persönliche Codes", () => {
|
||||
it("gilt nur für das eigene Konto", async () => {
|
||||
const db = dbWith({ ...baseCode, restrictedToUserId: "user-1" });
|
||||
expect((await validateDiscountCode(db, { ...base, courseId: "c" })).valid).toBe(true);
|
||||
expect(await validateDiscountCode(db, { ...base, userId: "user-2", courseId: "c" })).toEqual({
|
||||
valid: false,
|
||||
reason: "Dieser Rabattcode gehört zu einem anderen Kundenkonto.",
|
||||
});
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue