cyberhybridhub/server/test/integration/market_data_db_test.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),
);
});
}