from __future__ import annotations from unittest.mock import AsyncMock, MagicMock import pytest from cerbero_mcp.exchanges.ibkr import tools as t def test_place_order_req_schema(): req = t.PlaceOrderReq(symbol="AAPL", side="buy", qty=1) assert req.order_type == "market" assert req.tif == "day" assert req.exchange == "SMART" def test_place_order_req_options_validates_occ(): req = t.PlaceOrderReq( symbol="AAPL 240119C00190000", side="buy", qty=1, asset_class="options", ) assert req.asset_class == "options" @pytest.mark.asyncio async def test_get_account_tool_calls_client(): client = MagicMock() client.get_account = AsyncMock(return_value={"netliquidation": {"amount": 10000}}) res = await t.get_account(client, t.GetAccountReq()) assert res["netliquidation"]["amount"] == 10000