// The Lucia project. // Copyright 2026-2026 DSP, inc. All rights reserved. // Authors: // imacat.yang@dsp.im (imacat), 2026/03/05 import { describe, it, expect, beforeEach, vi } from "vitest"; import { setActivePinia, createPinia } from "pinia"; vi.mock("@/module/apiError.js", () => ({ default: vi.fn(), })); const { mockGet } = vi.hoisted(() => ({ mockGet: vi.fn() })); vi.mock("@/api/client.js", () => ({ default: { get: mockGet }, })); import { usePerformanceStore } from "@/stores/performance"; describe("performanceStore", () => { let store; beforeEach(() => { setActivePinia(createPinia()); store = usePerformanceStore(); vi.clearAllMocks(); }); it("has correct default state", () => { expect(store.allPerformanceData).toBeNull(); expect(store.freqChartData).toBeNull(); }); it("performanceData getter returns allPerformanceData", () => { store.allPerformanceData = { time: {}, freq: {} }; expect(store.performanceData).toEqual({ time: {}, freq: {} }); }); describe("getPerformance", () => { it("fetches log performance data", async () => { const mockData = { time: { charts: [] }, freq: { charts: [] } }; mockGet.mockResolvedValue({ data: mockData }); await store.getPerformance("log", 1); expect(mockGet).toHaveBeenCalledWith("/api/logs/1/performance"); expect(store.allPerformanceData).toEqual(mockData); }); it("fetches filter performance data", async () => { mockGet.mockResolvedValue({ data: { time: {} } }); await store.getPerformance("filter", 5); expect(mockGet).toHaveBeenCalledWith("/api/filters/5/performance"); }); it("does not throw on API failure", async () => { mockGet.mockRejectedValue(new Error("Network error")); // Should not throw - apiError handles it await expect(store.getPerformance("log", 1)).resolves.not.toThrow(); expect(store.allPerformanceData).toBeNull(); }); }); it("setFreqChartData sets data", () => { const data = { labels: [], datasets: [] }; store.setFreqChartData(data); expect(store.freqChartData).toEqual(data); }); it("setFreqChartOptions sets options", () => { const opts = { responsive: true }; store.setFreqChartOptions(opts); expect(store.freqChartOptions).toEqual(opts); }); it("setFreqChartXData sets x data", () => { const xData = { minX: 0, maxX: 100 }; store.setFreqChartXData(xData); expect(store.freqChartXData).toEqual(xData); }); });