mirror of
https://github.com/willchen96/mike.git
synced 2026-07-24 23:41:04 +02:00
Ported from the amal66 fork (see index Open-Legal-Products/mike#205) onto current main, adapted to this repo's backend/ layout (apps/api/src/lib -> backend/src/lib), plus a v8 coverage ratchet. Suites ported (51 new tests, verified locally): - access.test.ts (7): owner/shared/private project access, doc access, review sharing, document-ID filtering. Dropped the fork's "org RBAC" describe block (7 cases) — org_id/org_members multi-tenancy and the role/canManage fields do not exist in this repo's access.ts. - storage.test.ts (25): filename normalization/sanitization, RFC 5987 encoding, Content-Disposition, storage key helpers. Dropped the fork's vi.mock of lib/env — this repo has no env module; storage reads process.env directly and the tested helpers are pure. - userApiKeys.test.ts (10): normalizeApiKeyProvider + hasEnvApiKey. Added a beforeEach env clear so shell-exported API keys can't leak into assertions. - chatTypes.test.ts (9): resolveDoc/resolveDocLabel, which live in lib/chat/types.ts here (the fork's lib/chatTools.ts equivalent). Dropped generateSpotlightNonce cases (2) — no such export here. Suites dropped entirely (subject not present in this repo): - upload.test.ts — tested hasMagicBytes; this repo's lib/upload.ts is only the multer middleware and exports no magic-byte checker. - userSettings.test.ts — tested resolveTabularModel (fork-only keyed- provider fallback); this repo resolves tabular_model via resolveModel with a static default. Coverage ratchet: vitest.config.mts adds v8 coverage over src/lib/** with floors measured against this tree (2.58% stmts, 2.00% branches, 4.61% funcs, 2.58% lines -> floors 2/2/4/2). Full suite: 5 files, 63 tests passing (incl. the pre-existing 12 in downloadTokens.test.ts); npm run test:coverage and npm run build both pass. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
36 lines
1.5 KiB
TypeScript
36 lines
1.5 KiB
TypeScript
import { defineConfig } from "vitest/config";
|
|
|
|
export default defineConfig({
|
|
test: {
|
|
environment: "node",
|
|
include: ["src/**/*.test.ts"],
|
|
exclude: ["dist/**", "node_modules/**"],
|
|
// Generous timeouts so cold-start module transform/import latency
|
|
// can't cause spurious timeout failures on a cold CI runner. Warm
|
|
// tests finish in ~1s; this only guards the pathological cold case —
|
|
// it does not mask hangs.
|
|
testTimeout: 20000,
|
|
hookTimeout: 20000,
|
|
coverage: {
|
|
provider: "v8",
|
|
reporter: ["text", "lcov"],
|
|
include: ["src/lib/**"],
|
|
// No-regression RATCHET floor, not a target. src/lib/** spans the
|
|
// small, tested libs (access, storage keys/dispositions,
|
|
// downloadTokens, userApiKeys provider/env checks, chat doc
|
|
// resolution) AND the large, still-untested feature libs
|
|
// (courtlistener, mcp, chat tool dispatch, llm providers,
|
|
// spreadsheet/docx handling), so the global number is low.
|
|
// Measured on this tree: 2.58% statements, 2.00% branches,
|
|
// 4.61% functions, 2.58% lines. These floors sit just below
|
|
// that (rounded down to whole percents) so CI fails on a
|
|
// *drop*; raise them as the feature-lib backlog gets covered.
|
|
thresholds: {
|
|
statements: 2,
|
|
branches: 2,
|
|
functions: 4,
|
|
lines: 2,
|
|
},
|
|
},
|
|
},
|
|
});
|