Testing
Testing strategy and instructions
The project uses Bun tests.
Full Test Suite
bun testType Checks
bunx tsc --noEmit -p packages/matching-engine/tsconfig.json
bunx tsc --noEmit -p packages/db/tsconfig.json
bunx tsc --noEmit -p packages/risk/tsconfig.json
bunx tsc --noEmit -p packages/websocket/tsconfig.json
bunx tsc --noEmit -p packages/runtime/tsconfig.json
bunx tsc --noEmit -p apps/api/tsconfig.json
bunx tsc --noEmit -p apps/workers/tsconfig.json
bunx tsc --noEmit -p apps/market-data/tsconfig.jsonDocker Config Check
docker compose configThis validates docker-compose.yml without starting containers.
Whitespace Check
git diff --checkCoverage Areas
Matching engine:
- exact fill
- partial fill
- multi-level fill
- price-time priority
- market order expiry
- post-only
- reduce-only intent
- self-trade prevention
- cancellation
- deterministic batch sequencing
Persistence:
- order event persistence
- fill persistence
- position projection persistence after trades
- processed-event idempotency
- outbox helper
- outbox publisher success and failure paths
- funding payment mapper
- liquidation mapper
Risk:
- position open, increase, reduce, close, reverse
- realized and unrealized PnL
- cross-margin summary
- sufficient and insufficient margin
- funding rate and payments
- liquidation trigger
- insurance fund
- simplified ADL
WebSocket:
- public subscriptions
- private authenticated subscriptions
- fanout
- unsubscribe/disconnect cleanup
- snapshots and resync notices
Recovery:
- file snapshot write/read
- snapshot restore
- event replay after snapshot
Runtime/API:
- API register/login/deposit/order/fills flow
- JWT signing and verification
- Redis stream adapter command shape
- stream command processing
- matching worker
- persistence worker
- position updates after trades
Market data:
- Binance mark-price message parsing
- unknown symbol and malformed payload handling
- combined stream URL construction