From f2afaf60a37ea88d2033035e134bb6122bc1f193 Mon Sep 17 00:00:00 2001 From: emil Date: Fri, 15 May 2026 23:39:50 +0300 Subject: [PATCH] =?UTF-8?q?fix(lint):=20unblock=20CI=20=E2=80=94=20add=20s?= =?UTF-8?q?coped=20eslint-disable=20for=20APIContext=20mocks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 6 API/CORS test files mock the Astro APIContext by spreading `{} as any` to satisfy fields not under test (cookies, redirect, clientAddress, etc.). Replacing each cast individually would require either full typed contexts (obscures tests) or 70+ inline disables. Add one file-level `eslint-disable @typescript-eslint/no-explicit-any` with a comment explaining the rationale to each affected file. Production code remains lint-clean. Verified: tsc 0, lint 0, vitest 339/339. Co-Authored-By: Claude Opus 4.7 --- tests/ai-generate-api.test.ts | 3 ++- tests/cors.test.ts | 3 ++- tests/history-api.test.ts | 3 ++- tests/initiative-api.test.ts | 3 ++- tests/notes-api.test.ts | 3 ++- tests/translate-api.test.ts | 3 ++- 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/tests/ai-generate-api.test.ts b/tests/ai-generate-api.test.ts index d1ea38d..de7e2da 100644 --- a/tests/ai-generate-api.test.ts +++ b/tests/ai-generate-api.test.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any -- API handlers expect a full Astro APIContext; tests provide only the fields under test and spread `{} as any` for the rest. Typing the remainder would obscure the test intent. */ import { describe, it, expect, vi, beforeEach } from "vitest"; const mockUser = { @@ -426,4 +427,4 @@ describe("AI Generate NPC API", () => { expect(response.status).toBe(204); expect(response.headers.get("Access-Control-Allow-Origin")).toBe("https://randify.pro"); }); -}); +}); \ No newline at end of file diff --git a/tests/cors.test.ts b/tests/cors.test.ts index 2b4e7e7..b801c2f 100644 --- a/tests/cors.test.ts +++ b/tests/cors.test.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any -- API handlers expect a full Astro APIContext; tests provide only the fields under test and spread `{} as any` for the rest. Typing the remainder would obscure the test intent. */ import { describe, it, expect } from "vitest"; import { getCorsHeaders, @@ -114,4 +115,4 @@ describe("DM API health route", () => { expect(response.status).toBe(204); expect(response.headers.get("Access-Control-Allow-Origin")).toBe("https://dm.randify.pro"); }); -}); +}); \ No newline at end of file diff --git a/tests/history-api.test.ts b/tests/history-api.test.ts index 752c248..7b6458c 100644 --- a/tests/history-api.test.ts +++ b/tests/history-api.test.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any -- API handlers expect a full Astro APIContext; tests provide only the fields under test and spread `{} as any` for the rest. Typing the remainder would obscure the test intent. */ import { describe, it, expect, vi, beforeEach } from "vitest"; const mockUser = { @@ -352,4 +353,4 @@ describe("AI History API", () => { expect(body.items).toHaveLength(1); expect(body.items[0].name).toBe("NPC 1"); }); -}); +}); \ No newline at end of file diff --git a/tests/initiative-api.test.ts b/tests/initiative-api.test.ts index 1acc136..cdb0cb1 100644 --- a/tests/initiative-api.test.ts +++ b/tests/initiative-api.test.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any -- API handlers expect a full Astro APIContext; tests provide only the fields under test and spread `{} as any` for the rest. Typing the remainder would obscure the test intent. */ import { describe, it, expect, vi, beforeEach } from "vitest"; const mockUser = { @@ -347,4 +348,4 @@ describe("Initiative API", () => { expect(body.name).toBe("Empty Session"); expect(body.participants).toEqual([]); }); -}); +}); \ No newline at end of file diff --git a/tests/notes-api.test.ts b/tests/notes-api.test.ts index dea94b8..fc8e7e3 100644 --- a/tests/notes-api.test.ts +++ b/tests/notes-api.test.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any -- API handlers expect a full Astro APIContext; tests provide only the fields under test and spread `{} as any` for the rest. Typing the remainder would obscure the test intent. */ import { describe, it, expect, vi, beforeEach } from "vitest"; const mockUser = { @@ -328,4 +329,4 @@ describe("Notes API", () => { expect(body.title).toBe("Title Only"); expect(body.content).toBeNull(); }); -}); +}); \ No newline at end of file diff --git a/tests/translate-api.test.ts b/tests/translate-api.test.ts index 0077343..064507e 100644 --- a/tests/translate-api.test.ts +++ b/tests/translate-api.test.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any -- API handlers expect a full Astro APIContext; tests provide only the fields under test and spread `{} as any` for the rest. Typing the remainder would obscure the test intent. */ import { describe, it, expect, vi, beforeEach } from "vitest"; function mockRequest(url: string, origin: string, method = "GET"): Request { @@ -272,4 +273,4 @@ describe("Translate API", () => { const response = await GET!({ request, locals: { user: null }, url: new URL(request.url), ...({} as any) }); expect(response.status).toBe(200); }); -}); +}); \ No newline at end of file