import 'package:cyberhybridhub_server/alpaca/alpaca_models.dart'; import 'package:test/test.dart'; import '../helpers/fixture_loader.dart'; void main() { late FixtureLoader fixtures; setUp(() { fixtures = FixtureLoader(); }); test('parses latest trade fixture', () async { final Map json = await fixtures.loadJson('alpaca_latest_trade.json'); final AlpacaLatestTradeResponse response = AlpacaLatestTradeResponse.fromJson(json); expect(response.symbol, 'SPY'); expect(response.trade.price, 492.15); expect(response.trade.size, 500); }); test('parses daily bars fixture', () async { final Map json = await fixtures.loadJson('alpaca_daily_bars.json'); final AlpacaBarsResponse response = AlpacaBarsResponse.fromJson(json); final AlpacaBar? bar = response.latestBar('SPY'); expect(bar, isNotNull); expect(bar!.close, 500.0); expect(bar.volume, 45000000); expect(response.previousDailyBar('SPY')!.close, 498.0); }); test('AlpacaOrderRequest serializes market notional order', () { final AlpacaOrderRequest request = AlpacaOrderRequest( symbol: 'SPY', side: 'buy', type: 'market', timeInForce: 'day', clientOrderId: 'uid-dip_confirm-qid', notional: 10, ); expect( request.toJson(), { 'symbol': 'SPY', 'side': 'buy', 'type': 'market', 'time_in_force': 'day', 'client_order_id': 'uid-dip_confirm-qid', 'notional': 10, }, ); }); }