Commit 44c0fe7
Add comprehensive tests for tryApplyToolResponseFilter, rewriteFilteredTextPayload, and rewriteEnvelopeTextPayload
These three internal functions in internal/middleware/jqschema.go had many
branches that were previously covered only indirectly through WrapToolHandler
integration tests. The new white-box test file directly exercises every branch:
rewriteEnvelopeTextPayload (10 cases):
- non-map data, map without content key
- []map content: empty, non-empty (rewrites first item, immutability)
- []interface{} content: empty, first-item-not-a-map, first-item-is-map (rewrites + immutability)
- unrecognised content type
rewriteFilteredTextPayload (5 cases):
- single content item with successful envelope rewrite
- multiple content items (trailing items preserved)
- envelope rewrite fails, valid JSON filteredText
- envelope rewrite fails, invalid JSON filteredText (original data fallback)
- IsError/Meta propagation
tryApplyToolResponseFilter (13 cases):
- nil filterCode (early return)
- empty Content slice (falls through to data-level filter)
- non-TextContent first item (falls through to data-level filter)
- TextContent with non-JSON text (falls through to data-level filter)
- TextContent filter error (returns original result/data)
- TextContent filter succeeds (rewrites result)
- TextContent trailing items preserved after text-level rewrite
- data-level filter error (returns original result/data)
- ConvertToCallToolResult error (returns original result/data)
- data-level success with trailing items appended
- data-level success single item (no trailing appended)
- IsError propagated for data-level success
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>1 parent 195cbb4 commit 44c0fe7
1 file changed
Lines changed: 433 additions & 0 deletions
0 commit comments