Skip to content

test(cli): unit tests for status and schema command handlers - #28

Merged
Hiksang merged 2 commits into
mainfrom
test/cli-handler-coverage
May 8, 2026
Merged

test(cli): unit tests for status and schema command handlers#28
Hiksang merged 2 commits into
mainfrom
test/cli-handler-coverage

Conversation

@Hiksang

@Hiksang Hiksang commented May 8, 2026

Copy link
Copy Markdown
Collaborator

Adds offline unit tests for the status and schema CLI command handlers. Pure test coverage extension — no runtime/behavior changes.

🤖 Generated with Claude Code

Hiksang added 2 commits May 6, 2026 13:47
P0 follow-up tracked in qa/2026-05-05-coverage-baseline (PR #5).
defi-cli sat at 15.3% line coverage; this commit adds 6 in-process
unit tests for the two simplest read-only commands as a first step
toward the per-handler coverage uplift.

Tests added (ts/packages/defi-cli/src/commands/{status,schema}.test.ts):

- status.test.ts (4 tests):
  * Multi-chain JSON summary array — every entry exposes the
    canonical `{chain, chain_id, protocols, summary}` shape.
  * Single-chain `--chain hyperevm` returns the right object with
    chain_id=999 and >=10 protocols.
  * Cross-chain leak guard — `--chain mantle` doesn't surface
    hyperevm/bnb/base/monad slugs.
  * No-RPC fast path — multi-chain summary completes in <1.5 s,
    confirming the no-`--verify` path doesn't touch viem.

- schema.test.ts (2 tests):
  * Default invocation returns a non-empty `actions` list including
    "status" and "schema".
  * Action-specific call (`schema status`) returns either a
    structured payload or a clean error envelope, never empty.

In-process strategy: each test builds a fresh commander program with
exitOverride() so handler errors surface as exceptions instead of
process.exit(). console.log is monkey-patched to capture printOutput
results. parseOutputMode is reused so the OutputMode shape matches
production exactly.

Verified:
- Host: 84/84 tests pass (defi-core 28 + defi-protocols 21 +
  defi-cli 35), 3 packages lint clean.
- Docker (node:20-alpine ad-hoc sandbox): 84/84 pass, lint clean.

Coverage delta: +6 tests against the cli package's untested handler
surface. Per-package coverage re-measurement deferred to PR #5
(coverage tooling lives there). Estimated cli coverage uplift:
~15% -> ~20% by reaching status.ts (192 lines) and schema.ts (23
lines) statement bodies.

Refs: P0 in docs/qa-reports/2026-05-05-coverage-baseline.md.
@Hiksang
Hiksang merged commit 6ee9f0d into main May 8, 2026
3 checks passed
@Hiksang
Hiksang deleted the test/cli-handler-coverage branch May 8, 2026 11:56
Hiksang added a commit that referenced this pull request May 8, 2026
…ion + adapter fixes (#32)

* build: regenerate dist + sync prebuild package configs for v1.0.13

Re-runs `pnpm -r build` from current main HEAD and syncs the package-
local config mirror so npm-published artifacts match the source tree.

Reason: across PRs #23 / #26 / #27 we resolved dist conflict markers
by taking main's stale dist (`git checkout --theirs`) — that kept the
PRs mergeable but left committed dist files out of sync with the
post-merge source. This single rebuild commit reconciles them.

Affected:
  defi-cli/dist/{index,main,mcp-server}.js  (~+700 lines source-derived)
  defi-cli/dist/*.map
  defi-protocols/dist/{index.js, index.d.ts, *.map}
  defi-core/dist/{index.d.ts, *.map}
  defi-cli/config/protocols/lending/venus_flux_bnb.toml
    (prebuild sync from workspace root: vusdt → vlisusd rename)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Release v1.0.13: bridge feature + production-grade verification + adapter fixes

Highlights since v1.0.12 (30 commits across 8 PRs):

== Bridge feature complete ==
- Relay added as 4th provider (~3s native bridge, executor-wired live)
- LiFi + deBridge + CCTP wired to Executor — `--broadcast` no longer silently ignored
- CCTP V2 `--auto-receive` — burn → poll Iris attestation → auto-receiveMessage on dest
- Live-verified Base→Arbitrum 0.1 USDC E2E (burn 0x6b5d41fd, receive 0x9b5bd5c2)
- Per-chain src/dst token resolution for cross-chain stables
- Relay errorCode parsing → actionable hints (AMOUNT_TOO_LOW, NO_QUOTES, etc)
- MCP `defi_bridge` 3 latent fixes: dst-token, Relay symbol→native, LiFi fromAddress

== Adapter bug fixes ==
- compound_v2: uint256.max withdraw + outstanding-borrow guard (Venus, Compound V2 forks)
- venus-flux-bnb: rename mislabeled `vusdt` → `vlisusd` (actual underlying is lisUSD)
- Ramses CL mint encoding + MerchantMoe/TraderJoe LB token-order realign
- Curve target the pool not router + StableswapNG dynamic uint256[] ABI
- uniswap-v2 / solidly LP-token approval on remove
- Hybra V4 --redeem-type CLI flag for instant-exit vs 2-year veHYBR lock
- Aave V3 collateral toggle + eMode for borrow lifecycle (#21)
- Morpho marketId-based supply/borrow + supplyCollateral (#22)
- Compound V2 enterMarkets toggle for Venus borrow lifecycle (#26)
- Native wrap/unwrap CLI + Morpho marketId registry + max-repay-by-shares (#27)

== Production-grade verification sweep ==
- HyperEVM 11/11 protocols full lifecycle (emission tokens received)
- Mantle: Aave V3 + UniV3 + MerchantMoe LB (MOE 1.009 received)
- Base: UniV3 + Aerodrome V2 + Aerodrome CL (AERO emission received)
- BNB upgraded to 🟢 production: 13/16 protocols verified live
- Monad partial: UniV3 + UniV2 (mainnet TBD for the rest)
- ve(3,3) emission tokens live-received: RAM, KITTEN, MOE, AERO, THE
- ULTRAQA sandbox script (51-test sweep across 4 chains)

== Hardening ==
- ip-address >=10.1.1 via pnpm.overrides (GHSA-v2v4-37r5-5v8g moderate XSS)
- viem wallet/public clients anchored to chainId at construction (#29)
- CLI handler unit-test coverage for status/schema (#28)
- @vitest/coverage-v8 baseline measurement script (#30)
- post-baseline test-foundation QA report (#31)

== Test plan ==
- pnpm -r test: 189/189 pass (defi-core 32, defi-protocols 55, defi-cli 102)
- pnpm -r build: clean across all 3 packages
- pnpm audit: 0 vulnerabilities
- ULTRAQA sandbox: 51/51 pass + 8/8 ve(3,3) lp pipeline
- CCTP --auto-receive E2E: live broadcast verified
- MCP defi_bridge smoke: LiFi USDC + Relay USDC + Relay native — all OK

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant