import { describe, expect, it, vi, beforeEach } from "vitest" import { getEditingTemplates, getEditingTemplate, createEditingTemplate, updateEditingTemplate, deleteEditingTemplate, getTemplateCategories, generateFromTemplate, } from "@/api/editingPlanner" const mockGet = vi.fn() const mockPost = vi.fn() const mockPut = vi.fn() const mockDelete = vi.fn() const mockPatch = vi.fn() vi.mock("@/api/client", () => ({ default: { get: (...args: unknown[]) => mockGet(...args), post: (...args: unknown[]) => mockPost(...args), put: (...args: unknown[]) => mockPut(...args), delete: (...args: unknown[]) => mockDelete(...args), patch: (...args: unknown[]) => mockPatch(...args), }, })) vi.mock("antd", () => ({ message: { error: vi.fn(), success: vi.fn() } })) vi.mock("@/store/authStore", () => ({ useAuthStore: { getState: vi.fn(() => ({})) } })) describe("editingPlanner API", () => { beforeEach(() => { vi.clearAllMocks() mockGet.mockResolvedValue({ data: { success: true, items: [] } }) mockPost.mockResolvedValue({ data: { success: true, items: [] } }) mockPut.mockResolvedValue({ data: { success: true, items: [] } }) mockDelete.mockResolvedValue({ data: { success: true, items: [] } }) mockPatch.mockResolvedValue({ data: { success: true, items: [] } }) }) describe("getEditingTemplates", () => { it("should resolve successfully", async () => { await expect(getEditingTemplates("test-params?")).resolves.not.toThrow() }) it("should reject on API error", async () => { mockGet.mockRejectedValue(new Error("Network error")) mockPost.mockRejectedValue(new Error("Network error")) mockPut.mockRejectedValue(new Error("Network error")) mockDelete.mockRejectedValue(new Error("Network error")) mockPatch.mockRejectedValue(new Error("Network error")) await expect(getEditingTemplates("test-params?")).rejects.toThrow() }) }) describe("getEditingTemplate", () => { it("should resolve successfully", async () => { await expect(getEditingTemplate("test-id")).resolves.not.toThrow() }) it("should reject on API error", async () => { mockGet.mockRejectedValue(new Error("Network error")) mockPost.mockRejectedValue(new Error("Network error")) mockPut.mockRejectedValue(new Error("Network error")) mockDelete.mockRejectedValue(new Error("Network error")) mockPatch.mockRejectedValue(new Error("Network error")) await expect(getEditingTemplate("test-id")).rejects.toThrow() }) }) describe("createEditingTemplate", () => { it("should resolve successfully", async () => { await expect(createEditingTemplate({ name: "test-item" })).resolves.not.toThrow() }) it("should reject on API error", async () => { mockGet.mockRejectedValue(new Error("Network error")) mockPost.mockRejectedValue(new Error("Network error")) mockPut.mockRejectedValue(new Error("Network error")) mockDelete.mockRejectedValue(new Error("Network error")) mockPatch.mockRejectedValue(new Error("Network error")) await expect(createEditingTemplate({ name: "test-item" })).rejects.toThrow() }) }) describe("updateEditingTemplate", () => { it("should resolve successfully", async () => { await expect(updateEditingTemplate("test-id")).resolves.not.toThrow() }) it("should reject on API error", async () => { mockGet.mockRejectedValue(new Error("Network error")) mockPost.mockRejectedValue(new Error("Network error")) mockPut.mockRejectedValue(new Error("Network error")) mockDelete.mockRejectedValue(new Error("Network error")) mockPatch.mockRejectedValue(new Error("Network error")) await expect(updateEditingTemplate("test-id")).rejects.toThrow() }) }) describe("deleteEditingTemplate", () => { it("should resolve successfully", async () => { await expect(deleteEditingTemplate("test-id")).resolves.not.toThrow() }) it("should reject on API error", async () => { mockGet.mockRejectedValue(new Error("Network error")) mockPost.mockRejectedValue(new Error("Network error")) mockPut.mockRejectedValue(new Error("Network error")) mockDelete.mockRejectedValue(new Error("Network error")) mockPatch.mockRejectedValue(new Error("Network error")) await expect(deleteEditingTemplate("test-id")).rejects.toThrow() }) }) describe("getTemplateCategories", () => { it("should resolve successfully", async () => { await expect(getTemplateCategories()).resolves.not.toThrow() }) it("should reject on API error", async () => { mockGet.mockRejectedValue(new Error("Network error")) mockPost.mockRejectedValue(new Error("Network error")) mockPut.mockRejectedValue(new Error("Network error")) mockDelete.mockRejectedValue(new Error("Network error")) mockPatch.mockRejectedValue(new Error("Network error")) await expect(getTemplateCategories()).rejects.toThrow() }) }) describe("generateFromTemplate", () => { it("should resolve successfully", async () => { await expect(generateFromTemplate("test-templateId")).resolves.not.toThrow() }) it("should reject on API error", async () => { mockGet.mockRejectedValue(new Error("Network error")) mockPost.mockRejectedValue(new Error("Network error")) mockPut.mockRejectedValue(new Error("Network error")) mockDelete.mockRejectedValue(new Error("Network error")) mockPatch.mockRejectedValue(new Error("Network error")) await expect(generateFromTemplate("test-templateId")).rejects.toThrow() }) }) })