cyberhybridhub/server/test/alpaca/alpaca_models_test.dart

59 lines
1.6 KiB
Dart

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<String, dynamic> 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<String, dynamic> 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(),
<String, dynamic>{
'symbol': 'SPY',
'side': 'buy',
'type': 'market',
'time_in_force': 'day',
'client_order_id': 'uid-dip_confirm-qid',
'notional': 10,
},
);
});
}