test: add full test suite for docmost-client and remaining modules
Raise coverage from 2.6% to 68% statements by adding 19 test files (~480 tests) covering every module in test-strategy-report.md. No production code changed — tests reach private logic via (client as any), mock HTTP with axios-mock-adapter on the real axios instance (interceptors intact), and mock the Hocuspocus provider with vi.mock + real yjs + fake timers. Coverage: auth-utils/filters/page-lock/json-edit 100%, diff 99%, node-ops 96%, transforms 95%, collaboration 86%, layout 91%, client.ts 41% (transport). - node-ops/transforms/json-edit/page-lock/filters: pure tree/text ops, immutability + clone guarantees, throw-vs-noop contracts - markdown-converter + markdown-document envelope + fast-check round-trip property test - diff, docmost-schema (sanitizeCssColor/clampCalloutType security guards) - collaboration: pure (buildCollabWsUrl/buildYDoc) + write-path (mutatePageContent read-transform-write, false-success suppression) - client.ts: isSafeUrl/validateDoc* XSS guards, vm-sandbox, REST pagination, 401 re-auth interceptor, login dedup, uploadImage/createPage multipart guards - collectRecentSince edge cases; loadSettingsOrExit invalid-value branch - env-gated E2E skeleton (DOCMOST_E2E) Two genuine markdown round-trip non-idempotency bugs are documented as it.fails (code-mark excludes other marks; block-image injects a blank line). Latent: isSafeUrl allows file:// on link context. Adds dev-deps: fast-check, @vitest/coverage-v8, axios-mock-adapter; adds the "coverage" npm script.
This commit is contained in:
12
package.json
12
package.json
@@ -5,14 +5,19 @@
|
||||
"type": "module",
|
||||
"description": "Bidirectional sync daemon between Docmost articles and a local Markdown git vault (git is the state store). See SPEC.md.",
|
||||
"license": "MIT",
|
||||
"workspaces": ["packages/*"],
|
||||
"engines": { "node": ">=20" },
|
||||
"workspaces": [
|
||||
"packages/*"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=20"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "npm run build -w docmost-client && tsc",
|
||||
"start": "node build/index.js",
|
||||
"dev": "tsx watch src/index.ts",
|
||||
"test": "vitest run",
|
||||
"test:watch": "vitest",
|
||||
"coverage": "vitest run --coverage --coverage.provider=v8 --coverage.include='src/**/*.ts' --coverage.include='packages/docmost-client/src/**/*.ts'",
|
||||
"roundtrip": "node build/roundtrip.js",
|
||||
"pull": "node build/pull.js"
|
||||
},
|
||||
@@ -23,6 +28,9 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "22.19.21",
|
||||
"@vitest/coverage-v8": "^3.2.6",
|
||||
"axios-mock-adapter": "^2.1.0",
|
||||
"fast-check": "^4.8.0",
|
||||
"tsx": "4.22.4",
|
||||
"typescript": "5.9.3",
|
||||
"vitest": "3.2.6"
|
||||
|
||||
Reference in New Issue
Block a user