Files
GameTime/server/test/postgres_migrations_test.dart
Blomios 917777e18b chore(wip): consolidation intermédiaire multi-tickets (sprints Statistiques, UI, Bug resolution, Serveur-client)
Regroupe l'état de travail en cours réalisé dans un même worktree sur
plusieurs tickets/sprints (#85, #136, #145, #155-160, #162-164),
mélangeant des tickets QA et inProgress. Ne constitue pas une feature
terminée : commit de sauvegarde avant triage/split par ticket en
branches feature/* dédiées. Exclut les dossiers d'environnement de
build locaux et le heap dump parasite (.gitignore mis à jour).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 16:48:54 +02:00

61 lines
1.6 KiB
Dart

import 'dart:io';
import 'package:gametime_server/infrastructure/postgres/postgres_database.dart';
import 'package:test/test.dart';
void main() {
test('PostgreSQL migrations create the sync-ready schema', () async {
final databaseUrl = Platform.environment['TEST_DATABASE_URL'];
if (databaseUrl == null || databaseUrl.trim().isEmpty) {
markTestSkipped(
'Set TEST_DATABASE_URL to run PostgreSQL migration tests.',
);
return;
}
final connection = await PostgresConnectionFactory.fromDatabaseUrl(
databaseUrl,
).open();
addTearDown(() => connection.close());
await PostgresMigrator(connection).applyMigrations();
final result = await connection.execute('''
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public'
AND table_name IN (
'users',
'auth_sessions',
'synced_resources',
'shares',
'share_recipients'
)
''');
final tableNames = result.map((row) => row[0] as String).toSet();
expect(
tableNames,
containsAll({
'users',
'auth_sessions',
'synced_resources',
'shares',
'share_recipients',
}),
);
final shareColumns = await connection.execute('''
SELECT column_name
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'shares'
AND column_name IN ('share_kind', 'pack_name', 'resource_type')
''');
expect(
shareColumns.map((row) => row[0] as String).toSet(),
containsAll({'share_kind', 'pack_name', 'resource_type'}),
);
});
}