* test: add explicit unit tests for calculate_positions_margin_by_symbol and calculate_positions_margin_safe (#50)
Covers all acceptance criteria: partial failure with warning log, all-fail,
empty symbol list with no-broker-call assertion, duplicate deduplication,
successful aggregation with first-seen key order, suppress_errors=False
propagation, and three calculate_positions_margin_safe cases (partial skip,
all-fail → 0.0, empty list → 0.0).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* test: fix warning log assertion and parametrize suppress_errors=False test
- Use record.getMessage() + levelno check instead of record.message, which
is only populated after formatting and can return an empty string.
- Parametrize test_one_symbol_fails_suppress_errors_false over all three
exception types caught by the implementation (Mt5TradingError,
Mt5RuntimeError, AttributeError) so any future narrowing of the except
tuple would be caught by tests.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* style: shorten docstring to fit 88-char line limit
* style: shorten docstring to fit 88-char line limit
---------
Co-authored-by: agent <agent@localhost>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>