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); }); });