aaronsb_obsidian-mcp-plugin/tests
Aaron Bockelie 1fdcbc3a8b fix(dataview): recover rows for implicit LIST GROUP BY; label whitespace group keys
Two findings from testing 0.11.37 live against Dataview 0.5.68 in the app —
neither reachable through the pre-existing mock fixtures, both real:

1. Implicit `LIST ... GROUP BY` returned bare group keys, no rows. Dataview's
   programmatic query() API drops grouped rows when nothing in the query
   references `rows` (unlike rendered markdown), so `LIST FROM "x" GROUP BY
   file.folder` came back as just the folder names. normalizeListGroupByQuery
   injects a default `rows.file.link` output expression for exactly that shape
   — a LIST with GROUP BY and no explicit output expression — so proper
   {key, rows} groups come back. Queries that already name an output
   expression, and non-LIST / non-grouped queries, pass through untouched; the
   user-facing echoed query stays the original input.

2. `TASK ... GROUP BY status` groups incomplete tasks under a space-character
   key, which rendered as an empty bold header (`**** (n)`). groupKeyLabel now
   treats whitespace-only keys the same as empty → `(no group)`.

The test mock is made faithful to the live behavior: a grouped LIST that
references `rows` returns list-pair wrappers, one that doesn't collapses to bare
keys — so the injection is actually observable rather than passing vacuously.
Adds normalization unit tests, an end-to-end implicit-grouped-LIST recovery
test, and a whitespace-key label test. build + lint + test green, 355/355.
2026-07-03 21:47:21 -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
bridge-bootstrap.test.ts refactor(bridge): bridge-owned autostart opt-out; address #247 review 2026-06-24 10:06:39 -05:00
bridge-self-heal.test.ts refactor(bridge): bridge-owned autostart opt-out; address #247 review 2026-06-24 10:06:39 -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): recover rows for implicit LIST GROUP BY; label whitespace group keys 2026-07-03 21:47:21 -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-ignore-exclusion.test.ts fix(graph): honor MCP ignore exclusions in graph traversal 2026-06-08 14:50:14 +02:00
graph-node-title.test.ts fix(graph): honor MCP ignore exclusions in graph traversal 2026-06-08 14:50:14 +02:00
graph-search-traversal.test.ts fix(graph): honor MCP ignore exclusions in graph traversal 2026-06-08 14:50:14 +02:00
graph-search.test.ts fix(graph): honor MCP ignore exclusions in graph traversal 2026-06-08 14:50:14 +02:00
graph-statistics-vault-wide.test.ts fix(graph): honor MCP ignore exclusions in graph traversal 2026-06-08 14:50:14 +02: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 fix(lint): use window timers + window.console; drop forbidden eslint-disables (closes #226) 2026-06-09 11:13:48 -05:00
sse-socket-timeout.test.ts refactor(mcp): address review of #244 — document SSE backstop, test teardown 2026-06-24 02:00:33 -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