aaronsb_obsidian-mcp-plugin/tests
Aaron Bockelie 9191bbdee8 feat(graph): vault-wide statistics when sourcePath omitted (closes #132)
Before: graph.statistics threw 'Source path is required' when called
without sourcePath, blocking the baseline use case (vault health
snapshots, dashboards). Users had to pick an arbitrary seed and reason
about its neighborhood — not representative.

After: when sourcePath is omitted, return a new vaultStatistics shape:

  totalNotes            — count of .md files in the vault
  totalLinks            — sum of resolved link occurrences (Obsidian
                          semantics: A→B referenced 3× counts as 3)
  orphanCount           — singletons (no links in either direction)
  averageDegree         — 2 * totalLinks / totalNotes
  largestComponentSize  — biggest connected subgraph (undirected)
  isolatedClusters      — total connected-component count,
                          inclusive of singletons (so non-trivial =
                          isolatedClusters - orphanCount)

Per-node statistics behaviour is unchanged when sourcePath is provided.

Implementation: GraphTraversal.getVaultStatistics does one O(V+E)
pass over the resolvedLinks adjacency, plus BFS for components.
Treats the graph as undirected for component analysis (a link from A
to B means A and B are in the same component) while keeping link
counts directed (matches how metadataCache exposes them).

Tests: tests/graph-statistics-vault-wide.test.ts covers the
vault-wide path (the topology described above), per-node fallback,
empty vault, repeated occurrences, non-md filtering, and the
directed-edges-undirected-components invariant.
2026-05-25 16:21:24 -05:00
..
__mocks__ fix(vault): Recurse listFiles into subfolders (#154) 2026-05-15 13:16:45 -05:00
fixtures harden(bases): runtime-computed-member escape test + scope scanner claim 2026-05-16 23:03:43 -05:00
security fix(tls): drop inert rejectUnauthorized:false default, clears scorecard Risk 2026-05-16 11:59:51 -05:00
validation test: Add comprehensive unit tests for input validation 2025-12-03 12:55:01 -06:00
bases-expression-evaluator.test.ts feat(bases): replace new Function with expression-eval (ADR-201) 2026-05-16 22:57:43 -05:00
bases-yaml.test.ts test(bases): address #182 review — accurate date-safety rationale + explicit divergences 2026-05-16 14:20:23 -05:00
combine-inline-router.test.ts fix(vault): inline combine sourceFiles must match combined order 2026-05-18 12:20:48 -05:00
combine-inline.test.ts feat(vault): return combined content inline when destination is omitted 2026-05-18 08:10:12 -05:00
dataview-integration.test.ts fix(dataview): serialize Luxon dates and propagate Dataview-internal errors 2026-05-15 15:00:11 -05:00
dispatch-param-guards.test.ts fix(dispatch): address PR #212 review findings 2026-05-25 08:31:37 -05:00
file-lock-edit-serialization.test.ts fix(edit): serialize concurrent edits to the same file (closes #139) 2026-05-18 22:43:16 -05:00
fuzzy-match.test.ts fix(mcp): stop debug route shadowing the GET /mcp SSE stream + two-row Levenshtein 2026-05-18 21:05:22 -05:00
graph-node-title.test.ts Use parent folder titles for index graph nodes 2026-05-20 07:40:12 +02:00
graph-search-traversal.test.ts fix: Fix test failures by properly mocking TFile class 2025-07-05 10:37:24 -05:00
graph-search.test.ts test(graph-search): match TFile mock to post-#207 getNodeTitle contract 2026-05-25 16:16:16 -05:00
graph-statistics-vault-wide.test.ts feat(graph): vault-wide statistics when sourcePath omitted (closes #132) 2026-05-25 16:21:24 -05:00
list-files-recursive.test.ts fix(vault.list): Align paginated recursive sort with flat listFiles 2026-05-15 13:40:35 -05:00
mcp-server.test.ts fix: Mock fs module in tests to prevent certificate directory creation (v0.9.0a) 2025-08-12 10:52:39 -05:00
mcp-session-reinit.test.ts fix(mcp): client-driven session re-init via spec 404 (ADR-106, closes #190) 2026-05-18 22:37:23 -05:00
network-classifier.test.ts fix(network): address PR #211 self-review findings (ADR-107) 2026-05-24 17:06:16 -05:00
network-exposure-integration.test.ts feat(network): wire classifier into server, settings, UI (ADR-107) 2026-05-24 16:56:24 -05:00
patch-operations.test.ts feat: Implement structured patch targeting for headings, blocks, and frontmatter 2025-07-06 22:47:02 -05:00
read-only-mode.test.ts refactor: Remove concurrent mode toggle, simplify connection setup (ADR-100) 2026-03-14 23:13:35 -05:00
recursive-copy.test.ts fix: Eliminate all eslint any-type violations for Obsidian plugin review 2026-02-03 21:51:55 -06:00
search-tag-operator.test.ts feat: add tests for searches with the tag operator 2025-08-16 15:46:55 +01:00
setup.ts feat: Add linting, testing, and development documentation 2025-06-27 11:18:36 -05:00
vault-read-fidelity.test.ts fix(formatter): emit verbatim content in default vault.read (PR #205 blocking review) 2026-05-19 00:38:29 -05:00