refactor: 清理测试代码 eslint-disable 指令,消除文件级和重复局部禁用
This commit is contained in:
@@ -1,7 +1,3 @@
|
||||
/* eslint-disable @typescript-eslint/no-require-imports */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
||||
import "../../../tests/web/test-utils";
|
||||
import { act, fireEvent, render, screen, waitFor } from "@testing-library/react";
|
||||
import { afterEach, beforeEach, describe, expect, test, vi } from "bun:test";
|
||||
@@ -9,7 +5,7 @@ import { afterEach, beforeEach, describe, expect, test, vi } from "bun:test";
|
||||
import { App } from "../../../src/web/app";
|
||||
import { THEME_MEDIA_QUERY, THEME_PREFERENCE_STORAGE_KEY } from "../../../src/web/hooks/use-theme-preference";
|
||||
|
||||
function createDashboardResult(overrides = {}) {
|
||||
function createDashboardResult(overrides: Record<string, unknown> = {}) {
|
||||
return {
|
||||
data: {
|
||||
summary: {
|
||||
@@ -35,6 +31,40 @@ function createDashboardResult(overrides = {}) {
|
||||
};
|
||||
}
|
||||
|
||||
const useDashboardMock = vi.fn(() => createDashboardResult());
|
||||
const useMetaMock = vi.fn(() => ({
|
||||
data: { checkerTypes: ["http", "cmd"] as string[], version: "0.1.0" },
|
||||
}));
|
||||
const useTargetDetailMock = vi.fn(() => ({
|
||||
activeTab: "overview",
|
||||
closeDrawer: vi.fn(),
|
||||
handlePageChange: vi.fn(),
|
||||
handleTabChange: vi.fn(),
|
||||
handleTimeChange: vi.fn(),
|
||||
historyData: {
|
||||
items: [],
|
||||
page: 1,
|
||||
pageSize: 20,
|
||||
total: 0,
|
||||
},
|
||||
historyLoading: false,
|
||||
metricsData: null,
|
||||
metricsLoading: false,
|
||||
openDrawer: vi.fn(),
|
||||
selectedTarget: null,
|
||||
timeFrom: "",
|
||||
timeTo: "",
|
||||
}));
|
||||
|
||||
void vi.mock("../../../src/web/hooks/use-queries", () => ({
|
||||
useDashboard: useDashboardMock,
|
||||
useMeta: useMetaMock,
|
||||
}));
|
||||
|
||||
void vi.mock("../../../src/web/hooks/use-target-detail", () => ({
|
||||
useTargetDetail: useTargetDetailMock,
|
||||
}));
|
||||
|
||||
function installMatchMedia(initialMatches: boolean) {
|
||||
const originalMatchMedia = window.matchMedia;
|
||||
let matches = initialMatches;
|
||||
@@ -65,43 +95,11 @@ function installMatchMedia(initialMatches: boolean) {
|
||||
};
|
||||
}
|
||||
|
||||
// Mock hooks
|
||||
void vi.mock("../../../src/web/hooks/use-queries", () => ({
|
||||
useDashboard: vi.fn(() => createDashboardResult()),
|
||||
useMeta: vi.fn(() => ({
|
||||
data: { checkerTypes: ["http", "cmd"], version: "0.1.0" },
|
||||
})),
|
||||
}));
|
||||
|
||||
void vi.mock("../../../src/web/hooks/use-target-detail", () => ({
|
||||
useTargetDetail: vi.fn(() => ({
|
||||
activeTab: "overview",
|
||||
closeDrawer: vi.fn(),
|
||||
handlePageChange: vi.fn(),
|
||||
handleTabChange: vi.fn(),
|
||||
handleTimeChange: vi.fn(),
|
||||
historyData: {
|
||||
items: [],
|
||||
page: 1,
|
||||
pageSize: 20,
|
||||
total: 0,
|
||||
},
|
||||
historyLoading: false,
|
||||
metricsData: null,
|
||||
metricsLoading: false,
|
||||
openDrawer: vi.fn(),
|
||||
selectedTarget: null,
|
||||
timeFrom: "",
|
||||
timeTo: "",
|
||||
})),
|
||||
}));
|
||||
|
||||
describe("App", () => {
|
||||
let matchMediaController: ReturnType<typeof installMatchMedia>;
|
||||
|
||||
beforeEach(() => {
|
||||
const { useDashboard } = require("../../../src/web/hooks/use-queries");
|
||||
useDashboard.mockReturnValue(createDashboardResult());
|
||||
useDashboardMock.mockReturnValue(createDashboardResult());
|
||||
window.localStorage.clear();
|
||||
document.documentElement.removeAttribute("theme-mode");
|
||||
matchMediaController = installMatchMedia(false);
|
||||
@@ -117,8 +115,7 @@ describe("App", () => {
|
||||
});
|
||||
|
||||
test("loading 状态不崩溃", () => {
|
||||
const { useDashboard } = require("../../../src/web/hooks/use-queries");
|
||||
useDashboard.mockReturnValue(
|
||||
useDashboardMock.mockReturnValue(
|
||||
createDashboardResult({
|
||||
data: null,
|
||||
dataUpdatedAt: 0,
|
||||
@@ -134,12 +131,11 @@ describe("App", () => {
|
||||
});
|
||||
|
||||
test("错误状态不崩溃", () => {
|
||||
const { useDashboard } = require("../../../src/web/hooks/use-queries");
|
||||
useDashboard.mockReturnValue(
|
||||
useDashboardMock.mockReturnValue(
|
||||
createDashboardResult({
|
||||
data: null,
|
||||
dataUpdatedAt: 0,
|
||||
error: { message: "Network error" },
|
||||
error: new Error("Network error"),
|
||||
isFetching: false,
|
||||
isLoading: false,
|
||||
refetch: vi.fn(),
|
||||
@@ -151,8 +147,7 @@ describe("App", () => {
|
||||
});
|
||||
|
||||
test("有数据状态不崩溃", () => {
|
||||
const { useDashboard } = require("../../../src/web/hooks/use-queries");
|
||||
useDashboard.mockReturnValue(
|
||||
useDashboardMock.mockReturnValue(
|
||||
createDashboardResult({
|
||||
data: {
|
||||
summary: {
|
||||
@@ -215,9 +210,8 @@ describe("App", () => {
|
||||
});
|
||||
|
||||
test("缺失版本时不展示版本占位", () => {
|
||||
const { useMeta } = require("../../../src/web/hooks/use-queries");
|
||||
useMeta.mockReturnValue({
|
||||
data: { checkerTypes: ["http", "cmd"] },
|
||||
useMetaMock.mockReturnValue({
|
||||
data: { checkerTypes: ["http", "cmd"], version: undefined as unknown as string },
|
||||
});
|
||||
|
||||
render(<App />);
|
||||
@@ -225,8 +219,7 @@ describe("App", () => {
|
||||
});
|
||||
|
||||
test("复用 useMeta 查询结果", () => {
|
||||
const { useMeta } = require("../../../src/web/hooks/use-queries");
|
||||
render(<App />);
|
||||
expect(useMeta).toHaveBeenCalled();
|
||||
expect(useMetaMock).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user