import { describe, expect, it, vi, beforeEach } from "vitest" import { getVoiceClones, getVoiceClonesWithTotal, getVoiceCloneDetail, createVoiceClone, deleteVoiceClone, updateVoiceClone, getVoiceCloneStatus, retryVoiceClone, } from "@/api/voice-clone" 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("voiceClone 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("getVoiceClones", () => { it("should resolve successfully", async () => { await expect(getVoiceClones("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(getVoiceClones("test-params?")).rejects.toThrow() }) }) describe("getVoiceClonesWithTotal", () => { it("should resolve successfully", async () => { await expect(getVoiceClonesWithTotal("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(getVoiceClonesWithTotal("test-params?")).rejects.toThrow() }) }) describe("getVoiceCloneDetail", () => { it("should resolve successfully", async () => { await expect(getVoiceCloneDetail("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(getVoiceCloneDetail("test-id")).rejects.toThrow() }) }) describe("createVoiceClone", () => { it("should resolve successfully", async () => { await expect(createVoiceClone({ 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(createVoiceClone({ name: "test-item" })).rejects.toThrow() }) }) describe("deleteVoiceClone", () => { it("should resolve successfully", async () => { await expect(deleteVoiceClone("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(deleteVoiceClone("test-id")).rejects.toThrow() }) }) describe("updateVoiceClone", () => { it("should resolve successfully", async () => { await expect(updateVoiceClone("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(updateVoiceClone("test-id")).rejects.toThrow() }) }) describe("getVoiceCloneStatus", () => { it("should resolve successfully", async () => { await expect(getVoiceCloneStatus("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(getVoiceCloneStatus("test-id")).rejects.toThrow() }) }) describe("retryVoiceClone", () => { it("should resolve successfully", async () => { await expect(retryVoiceClone("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(retryVoiceClone("test-id")).rejects.toThrow() }) }) })