nautilus_model/identifiers/
stubs.rs

1// -------------------------------------------------------------------------------------------------
2//  Copyright (C) 2015-2026 Nautech Systems Pty Ltd. All rights reserved.
3//  https://nautechsystems.io
4//
5//  Licensed under the GNU Lesser General Public License Version 3.0 (the "License");
6//  You may not use this file except in compliance with the License.
7//  You may obtain a copy of the License at https://www.gnu.org/licenses/lgpl-3.0.en.html
8//
9//  Unless required by applicable law or agreed to in writing, software
10//  distributed under the License is distributed on an "AS IS" BASIS,
11//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12//  See the License for the specific language governing permissions and
13//  limitations under the License.
14// -------------------------------------------------------------------------------------------------
15
16//! Helper functions for stubbing identifiers in tests.
17
18use nautilus_core::UUID4;
19use rstest::fixture;
20
21use super::{
22    AccountId, ClientId, ClientOrderId, ComponentId, ExecAlgorithmId, InstrumentId, OrderListId,
23    PositionId, StrategyId, Symbol, TradeId, TraderId, Venue, VenueOrderId,
24};
25use crate::stubs::TestDefault;
26
27impl TestDefault for AccountId {
28    /// Creates a new test default [`AccountId`] instance.
29    fn test_default() -> Self {
30        Self::from("SIM-001")
31    }
32}
33
34impl TestDefault for ClientId {
35    /// Creates a new test default [`ClientId`] instance.
36    fn test_default() -> Self {
37        Self::from("SIM")
38    }
39}
40
41impl TestDefault for ClientOrderId {
42    /// Creates a new test default [`ClientOrderId`] instance.
43    fn test_default() -> Self {
44        Self::from("O-19700101-000000-001-001-1")
45    }
46}
47
48impl TestDefault for PositionId {
49    /// Creates a new test default [`PositionId`] instance.
50    fn test_default() -> Self {
51        Self::from("P-001")
52    }
53}
54
55impl TestDefault for StrategyId {
56    /// Creates a new test default [`StrategyId`] instance.
57    fn test_default() -> Self {
58        Self::from("S-001")
59    }
60}
61
62impl TestDefault for TradeId {
63    /// Creates a new test default [`TradeId`] instance.
64    fn test_default() -> Self {
65        Self::from("1")
66    }
67}
68
69impl TestDefault for TraderId {
70    /// Creates a new test default [`TraderId`] instance.
71    fn test_default() -> Self {
72        Self::default()
73    }
74}
75
76impl TestDefault for Symbol {
77    /// Creates a new test default [`Symbol`] instance.
78    fn test_default() -> Self {
79        Self::from("AUD/USD")
80    }
81}
82
83impl TestDefault for Venue {
84    /// Creates a new test default [`Venue`] instance.
85    fn test_default() -> Self {
86        Self::from("SIM")
87    }
88}
89
90impl TestDefault for VenueOrderId {
91    /// Creates a new test default [`VenueOrderId`] instance.
92    fn test_default() -> Self {
93        Self::from("001")
94    }
95}
96
97impl TestDefault for InstrumentId {
98    /// Creates a new test default [`InstrumentId`] instance.
99    fn test_default() -> Self {
100        Self::new(Symbol::test_default(), Venue::test_default())
101    }
102}
103
104/// Returns a stub trader ID.
105#[fixture]
106pub fn trader_id() -> TraderId {
107    TraderId::test_default()
108}
109
110/// Returns a stub strategy ID for an EMA cross strategy.
111#[fixture]
112pub fn strategy_id_ema_cross() -> StrategyId {
113    StrategyId::new("EMACross-001")
114}
115
116/// Returns a stub UUID4.
117#[fixture]
118pub fn uuid4() -> UUID4 {
119    UUID4::from("16578139-a945-4b65-b46c-bc131a15d8e7")
120}
121
122/// Returns a stub account ID.
123#[fixture]
124pub fn account_id() -> AccountId {
125    AccountId::test_default()
126}
127
128/// Returns a stub client order ID.
129#[fixture]
130pub fn client_order_id() -> ClientOrderId {
131    ClientOrderId::test_default()
132}
133
134/// Returns a stub venue order ID.
135#[fixture]
136pub fn venue_order_id() -> VenueOrderId {
137    VenueOrderId::test_default()
138}
139
140/// Returns a stub position ID.
141#[fixture]
142pub fn position_id() -> PositionId {
143    PositionId::test_default()
144}
145
146/// Returns a stub instrument ID for BTC/USDT.
147#[fixture]
148pub fn instrument_id_btc_usdt() -> InstrumentId {
149    InstrumentId::new(Symbol::new("BTCUSDT"), Venue::new("COINBASE"))
150}
151
152/// Returns a stub instrument ID for AUD/USD.
153#[fixture]
154pub fn instrument_id_aud_usd() -> InstrumentId {
155    InstrumentId::new(Symbol::new("AUD/USD"), Venue::new("SIM"))
156}
157
158/// Returns a stub instrument ID for AUD/USD on SIM venue.
159#[fixture]
160pub fn instrument_id_aud_usd_sim() -> InstrumentId {
161    InstrumentId::new(Symbol::new("AUD/USD"), Venue::new("SIM"))
162}
163
164/// Returns a stub trade ID.
165#[fixture]
166pub fn trade_id() -> TradeId {
167    TradeId::new("1234567890")
168}
169
170/// Returns a stub symbol for ETH-PERP.
171#[fixture]
172pub fn symbol_eth_perp() -> Symbol {
173    Symbol::new("ETH-PERP")
174}
175
176/// Returns a stub symbol for AUD/USD.
177#[fixture]
178pub fn symbol_aud_usd() -> Symbol {
179    Symbol::new("AUD/USD")
180}
181
182/// Returns a stub venue for BINANCE.
183#[fixture]
184pub fn venue_binance() -> Venue {
185    Venue::new("BINANCE")
186}
187
188/// Returns a stub venue for SIM.
189#[fixture]
190pub fn venue_sim() -> Venue {
191    Venue::new("SIM")
192}
193
194/// Returns a stub client ID for BINANCE.
195#[fixture]
196pub fn client_id_binance() -> ClientId {
197    ClientId::new("BINANCE")
198}
199
200/// Returns a stub client ID for dYdX.
201#[fixture]
202pub fn client_id_dydx() -> ClientId {
203    ClientId::new("DYDX")
204}
205
206/// Returns a stub position ID for tests.
207#[fixture]
208pub fn position_id_test() -> PositionId {
209    PositionId::new("P-123456789")
210}
211
212/// Returns a stub order list ID for tests.
213#[fixture]
214pub fn order_list_id_test() -> OrderListId {
215    OrderListId::new("001")
216}
217
218/// Returns a stub instrument ID for ETH/USDT on BINANCE.
219#[fixture]
220pub fn instrument_id_eth_usdt_binance() -> InstrumentId {
221    InstrumentId::new(Symbol::new("ETHUSDT"), Venue::new("BINANCE"))
222}
223
224/// Returns a stub account ID for Interactive Brokers.
225#[fixture]
226pub fn account_ib() -> AccountId {
227    AccountId::new("IB-1234567890")
228}
229
230/// Returns a stub component ID for risk engine.
231#[fixture]
232pub fn component_risk_engine() -> ComponentId {
233    ComponentId::new("RiskEngine")
234}
235
236/// Returns a stub execution algorithm ID.
237#[fixture]
238pub fn exec_algorithm_id() -> ExecAlgorithmId {
239    ExecAlgorithmId::new("001")
240}