Migrate Vitest store tests from vi.mock to MSW request handlers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -5,16 +5,14 @@
|
||||
|
||||
import { describe, it, expect, beforeEach, vi } from "vitest";
|
||||
import { setActivePinia, createPinia } from "pinia";
|
||||
import { http, HttpResponse } from "msw";
|
||||
import { server } from "@/mocks/node.js";
|
||||
import { findRequest, captureRequest } from "@/mocks/request-log.js";
|
||||
|
||||
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", () => {
|
||||
@@ -23,7 +21,7 @@ describe("performanceStore", () => {
|
||||
beforeEach(() => {
|
||||
setActivePinia(createPinia());
|
||||
store = usePerformanceStore();
|
||||
vi.clearAllMocks();
|
||||
document.cookie = "luciaToken=fake-test-token";
|
||||
});
|
||||
|
||||
it("has correct default state", () => {
|
||||
@@ -39,24 +37,40 @@ describe("performanceStore", () => {
|
||||
describe("getPerformance", () => {
|
||||
it("fetches log performance data", async () => {
|
||||
const mockData = { time: { charts: [] }, freq: { charts: [] } };
|
||||
mockGet.mockResolvedValue({ data: mockData });
|
||||
server.use(
|
||||
http.get("/api/logs/:id/performance", ({ request }) => {
|
||||
captureRequest("GET", new URL(request.url).pathname);
|
||||
return HttpResponse.json(mockData);
|
||||
}),
|
||||
);
|
||||
|
||||
await store.getPerformance("log", 1);
|
||||
|
||||
expect(mockGet).toHaveBeenCalledWith("/api/logs/1/performance");
|
||||
const reqs = findRequest("GET", "/api/logs/1/performance");
|
||||
expect(reqs).toHaveLength(1);
|
||||
expect(store.allPerformanceData).toEqual(mockData);
|
||||
});
|
||||
|
||||
it("fetches filter performance data", async () => {
|
||||
mockGet.mockResolvedValue({ data: { time: {} } });
|
||||
server.use(
|
||||
http.get("/api/filters/:id/performance", ({ request }) => {
|
||||
captureRequest("GET", new URL(request.url).pathname);
|
||||
return HttpResponse.json({ time: {} });
|
||||
}),
|
||||
);
|
||||
|
||||
await store.getPerformance("filter", 5);
|
||||
|
||||
expect(mockGet).toHaveBeenCalledWith("/api/filters/5/performance");
|
||||
const reqs = findRequest("GET", "/api/filters/5/performance");
|
||||
expect(reqs).toHaveLength(1);
|
||||
});
|
||||
|
||||
it("does not throw on API failure", async () => {
|
||||
mockGet.mockRejectedValue(new Error("Network error"));
|
||||
server.use(
|
||||
http.get("/api/logs/:id/performance", () =>
|
||||
new HttpResponse(null, { status: 500 }),
|
||||
),
|
||||
);
|
||||
|
||||
// Should not throw - apiError handles it
|
||||
await expect(store.getPerformance("log", 1)).resolves.not.toThrow();
|
||||
|
||||
Reference in New Issue
Block a user