107 lines
2.8 KiB
JavaScript
107 lines
2.8 KiB
JavaScript
// 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 { useCompareStore } from "@/stores/compare";
|
|
|
|
describe("compareStore", () => {
|
|
let store;
|
|
|
|
beforeEach(() => {
|
|
setActivePinia(createPinia());
|
|
store = useCompareStore();
|
|
vi.clearAllMocks();
|
|
});
|
|
|
|
it("has correct default state", () => {
|
|
expect(store.allCompareDashboardData).toBeNull();
|
|
});
|
|
|
|
it("compareDashboardData getter returns state", () => {
|
|
store.allCompareDashboardData = { time: {} };
|
|
expect(store.compareDashboardData).toEqual({ time: {} });
|
|
});
|
|
|
|
describe("getCompare", () => {
|
|
it("fetches compare data with encoded params", async () => {
|
|
const params = [{ type: "log", id: 1 }];
|
|
const mockData = { time: {}, freq: {} };
|
|
mockGet.mockResolvedValue({ data: mockData });
|
|
|
|
await store.getCompare(params);
|
|
|
|
const encoded = encodeURIComponent(JSON.stringify(params));
|
|
expect(mockGet).toHaveBeenCalledWith(`/api/compare?datasets=${encoded}`);
|
|
expect(store.allCompareDashboardData).toEqual(mockData);
|
|
});
|
|
|
|
it("does not throw on API failure", async () => {
|
|
mockGet.mockRejectedValue(new Error("fail"));
|
|
|
|
await expect(store.getCompare([])).resolves.not.toThrow();
|
|
});
|
|
});
|
|
|
|
describe("getStateData", () => {
|
|
it("fetches log discover stats", async () => {
|
|
mockGet.mockResolvedValue({
|
|
data: { stats: { cases: 100 } },
|
|
});
|
|
|
|
const result = await store.getStateData("log", 1);
|
|
|
|
expect(mockGet).toHaveBeenCalledWith("/api/logs/1/discover");
|
|
expect(result).toEqual({ cases: 100 });
|
|
});
|
|
|
|
it("fetches filter discover stats", async () => {
|
|
mockGet.mockResolvedValue({
|
|
data: { stats: { cases: 50 } },
|
|
});
|
|
|
|
const result = await store.getStateData("filter", 3);
|
|
|
|
expect(mockGet).toHaveBeenCalledWith("/api/filters/3/discover");
|
|
expect(result).toEqual({ cases: 50 });
|
|
});
|
|
});
|
|
|
|
describe("getFileName", () => {
|
|
it("finds file name by id", async () => {
|
|
mockGet.mockResolvedValue({
|
|
data: [
|
|
{ id: 1, name: "file1.csv" },
|
|
{ id: 2, name: "file2.csv" },
|
|
],
|
|
});
|
|
|
|
const result = await store.getFileName(1);
|
|
|
|
expect(result).toBe("file1.csv");
|
|
});
|
|
|
|
it("returns undefined for non-existent id", async () => {
|
|
mockGet.mockResolvedValue({
|
|
data: [{ id: 1, name: "file1.csv" }],
|
|
});
|
|
|
|
const result = await store.getFileName(99);
|
|
|
|
expect(result).toBeUndefined();
|
|
});
|
|
});
|
|
});
|