Build 060.2: add REST trade transport model

This commit is contained in:
2026-07-18 13:44:50 +03:00
parent c52c099d54
commit 013efd8a97
3 changed files with 1459 additions and 1 deletions

View File

@@ -13,6 +13,7 @@ from src.market_data.acquisition.adapters.dzengi.models import (
DzengiLotSizeFilter,
DzengiMinNotionalFilter,
DzengiRateLimit,
DzengiRestAggTrade,
DzengiUnknownFilter,
)
@@ -203,4 +204,49 @@ def test_raw_models_are_immutable() -> None:
response = DzengiExchangeInfoResponse(payload=payload)
with pytest.raises(FrozenInstanceError):
response.status = "OK" # type: ignore[misc]
response.status = "OK" # type: ignore[misc]
def test_rest_agg_trade_stores_complete_transport_contract() -> None:
trade = DzengiRestAggTrade(
aggregate_trade_id=2134857062,
price="64497.25",
quantity="0.005",
timestamp=1784218066823,
buyer_is_maker=False,
)
assert trade.aggregate_trade_id == 2134857062
assert trade.price == "64497.25"
assert trade.quantity == "0.005"
assert trade.timestamp == 1784218066823
assert trade.buyer_is_maker is False
def test_rest_agg_trade_preserves_raw_numeric_values() -> None:
trade = DzengiRestAggTrade(
aggregate_trade_id=2134846831,
price=64555.55,
quantity=2,
timestamp=1784218012030,
buyer_is_maker=True,
)
assert trade.price == 64555.55
assert isinstance(trade.price, float)
assert trade.quantity == 2
assert isinstance(trade.quantity, int)
def test_rest_agg_trade_is_immutable_and_uses_slots() -> None:
trade = DzengiRestAggTrade(
aggregate_trade_id=2134857062,
price="64497.25",
quantity="0.005",
timestamp=1784218066823,
buyer_is_maker=False,
)
assert not hasattr(trade, "__dict__")
with pytest.raises(FrozenInstanceError):
trade.price = "1.00" # type: ignore[misc]