defmodule IbkrApi.Support.HTTPStubs.TradeStub do @moduledoc """ Stub module for IbkrApi.ClientPortal.Trade HTTP requests. """ alias IbkrApi.Support.HTTPMock alias IbkrApi.Support.HTTPSandbox @base_url "https://localhost:5050/v1/api" @doc """ Stubs the list_trades endpoint. ## Examples TradeStub.stub_list_trades() # Or with custom response: TradeStub.stub_list_trades(HTTPMock.success([%{symbol: "MSFT", side: "SELL", size: 50}])) """ def stub_list_trades(response_fn \\ nil) do url = "#{@base_url}/iserver/account/trades" default_fn = fn -> HTTPMock.success([%{ execution_id: "0000111122223333", symbol: "AAPL", side: "BUY", order_description: "BOT +100 AAPL @150.25", trade_time: "20250710-09:30:15", trade_time_r: 1_720_021_815, size: 100, price: 150.25, order_ref: "api-123456", submitter: "API", exchange: "NASDAQ", commission: 1.00, net_amount: 15_025.0, account: "U12345678", account_id: "U12345678", contract_description_1: "APPLE INC", contract_id: 265_598, position: "100" }]) end HTTPSandbox.set_get_responses([{url, response_fn || default_fn}]) end end