60 lines
1.3 KiB
Dart
60 lines
1.3 KiB
Dart
@Tags(['integration', 'postgres'])
|
|
library;
|
|
|
|
import 'package:cyberhybridhub_server/trading/market_data_db.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
import '../helpers/test_db.dart';
|
|
|
|
void main() {
|
|
TestDb? testDb;
|
|
|
|
setUpAll(() async {
|
|
testDb = await TestDb.open();
|
|
});
|
|
|
|
tearDown(() async {
|
|
if (testDb != null) {
|
|
await testDb!.truncateTradingTables();
|
|
}
|
|
});
|
|
|
|
tearDownAll(() async {
|
|
await testDb?.close();
|
|
});
|
|
|
|
test('insertSnapshot then latestForSymbol returns newest by as_of', () async {
|
|
if (testDb == null) {
|
|
markTestSkipped('Set DATABASE_URL or TEST_DATABASE_URL for integration tests');
|
|
return;
|
|
}
|
|
|
|
final MarketDataDb db = testDb!.marketDataDb;
|
|
final DateTime older = DateTime.utc(2026, 5, 23, 10);
|
|
final DateTime newer = DateTime.utc(2026, 5, 23, 11);
|
|
|
|
await db.insertSnapshot(
|
|
symbol: 'SPY',
|
|
metric: 'last_trade',
|
|
price: 490,
|
|
asOf: older,
|
|
);
|
|
await db.insertSnapshot(
|
|
symbol: 'SPY',
|
|
metric: 'last_trade',
|
|
price: 492,
|
|
asOf: newer,
|
|
);
|
|
|
|
final MarketDataSnapshot? latest =
|
|
await db.latestForSymbol('SPY', 'last_trade');
|
|
|
|
expect(latest, isNotNull);
|
|
expect(latest!.price, 492);
|
|
expect(
|
|
latest.asOf.toUtc().millisecondsSinceEpoch,
|
|
greaterThan(older.toUtc().millisecondsSinceEpoch),
|
|
);
|
|
});
|
|
}
|