Files
record-app-next/__tests__/features/user-settings.test.ts
2025-07-31 17:05:07 +08:00

65 lines
1.6 KiB
TypeScript

import { UserSettingsService } from "@/lib/services/user-settings.service";
// Mock Prisma
jest.mock("@/lib/database", () => ({
prisma: {
userSettings: {
findUnique: jest.fn(),
create: jest.fn(),
update: jest.fn(),
delete: jest.fn(),
upsert: jest.fn(),
},
},
}));
describe("UserSettingsService", () => {
const mockPrisma = require("@/lib/database").prisma;
beforeEach(() => {
jest.clearAllMocks();
});
it("should get user settings", async () => {
const mockSettings = {
id: "settings-1",
userId: "user-1",
defaultQuality: "medium",
publicProfile: false,
allowDownload: true,
createdAt: new Date(),
updatedAt: new Date(),
};
mockPrisma.userSettings.findUnique.mockResolvedValue(mockSettings);
const result = await UserSettingsService.getUserSettings("user-1");
expect(result).toEqual(mockSettings);
expect(mockPrisma.userSettings.findUnique).toHaveBeenCalledWith({
where: { userId: "user-1" },
});
});
it("should return existing user settings when they exist", async () => {
const mockSettings = {
id: "settings-1",
userId: "user-1",
defaultQuality: "medium",
publicProfile: false,
allowDownload: true,
createdAt: new Date(),
updatedAt: new Date(),
};
mockPrisma.userSettings.findUnique.mockResolvedValue(mockSettings);
const result = await UserSettingsService.getOrCreateUserSettings("user-1");
expect(result).toEqual(mockSettings);
expect(mockPrisma.userSettings.findUnique).toHaveBeenCalledWith({
where: { userId: "user-1" },
});
});
});