chore(lint): no-extraneous-class in test mocks

Add dispose() stubs to xterm addon mocks to satisfy typescript-eslint/no-extraneous-class, and convert static-only Notification mocks to plain objects.
This commit is contained in:
Mohamed Boudra
2026-04-24 07:13:13 +07:00
parent c4355a13ff
commit 31d24ed216
3 changed files with 33 additions and 19 deletions

View File

@@ -86,9 +86,7 @@ describe("desktop-permissions", () => {
});
it("reads notification and microphone status", async () => {
class MockNotification {
static permission = "default";
}
const MockNotification = { permission: "default" };
(globalThis as { Notification?: unknown }).Notification = MockNotification;
setNavigator({
permissions: {
@@ -152,10 +150,10 @@ describe("desktop-permissions", () => {
});
it("requests notification permission via the browser Notification API", async () => {
class MockNotification {
static permission = "default";
static requestPermission = vi.fn(async () => "granted");
}
const MockNotification = {
permission: "default",
requestPermission: vi.fn(async () => "granted"),
};
(globalThis as { Notification?: unknown }).Notification = MockNotification;
const { requestDesktopPermission } = await loadModuleForPlatform("web");
@@ -166,9 +164,7 @@ describe("desktop-permissions", () => {
});
it("reads browser Notification permission when available", async () => {
class MockNotification {
static permission = "denied";
}
const MockNotification = { permission: "denied" };
(globalThis as { Notification?: unknown }).Notification = MockNotification;
setNavigator({});

View File

@@ -1,31 +1,45 @@
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
vi.mock("@xterm/addon-clipboard", () => ({
ClipboardAddon: class ClipboardAddon {},
ClipboardAddon: class ClipboardAddon {
dispose(): void {}
},
}));
vi.mock("@xterm/addon-fit", () => ({
FitAddon: class FitAddon {},
FitAddon: class FitAddon {
dispose(): void {}
},
}));
vi.mock("@xterm/addon-image", () => ({
ImageAddon: class ImageAddon {},
ImageAddon: class ImageAddon {
dispose(): void {}
},
}));
vi.mock("@xterm/addon-ligatures/lib/addon-ligatures.mjs", () => ({
LigaturesAddon: class LigaturesAddon {},
LigaturesAddon: class LigaturesAddon {
dispose(): void {}
},
}));
vi.mock("@xterm/addon-search", () => ({
SearchAddon: class SearchAddon {},
SearchAddon: class SearchAddon {
dispose(): void {}
},
}));
vi.mock("@xterm/addon-unicode11", () => ({
Unicode11Addon: class Unicode11Addon {},
Unicode11Addon: class Unicode11Addon {
dispose(): void {}
},
}));
vi.mock("@xterm/addon-web-links", () => ({
WebLinksAddon: class WebLinksAddon {},
WebLinksAddon: class WebLinksAddon {
dispose(): void {}
},
}));
vi.mock("@xterm/addon-webgl", () => ({
@@ -36,7 +50,9 @@ vi.mock("@xterm/addon-webgl", () => ({
}));
vi.mock("@xterm/xterm", () => ({
Terminal: class Terminal {},
Terminal: class Terminal {
dispose(): void {}
},
}));
import { TerminalEmulatorRuntime } from "./terminal-emulator-runtime";

View File

@@ -64,7 +64,9 @@ vi.mock("react-native-unistyles", () => ({
}));
vi.mock("@xterm/addon-ligatures", () => ({
LigaturesAddon: class LigaturesAddon {},
LigaturesAddon: class LigaturesAddon {
dispose(): void {}
},
}));
vi.mock("react-native-svg", () => {