fartstack/backend/test_e2e/tests/game_room_test.dart

65 lines
1.9 KiB
Dart

import 'dart:convert';
import 'package:backend/db/db_access.dart';
import 'package:http/http.dart' as http;
import 'package:shared_models/room.dart';
import 'package:shared_models/user.dart';
import 'package:test/test.dart';
void main() {
const baseUrl = 'http://localhost:8080'; // Adjust as needed
test('Complete room creation and ping flow', () async {
// 1. Create Room
final createRoomResponse = await http.post(
Uri.parse('$baseUrl/create_room'),
);
expect(createRoomResponse.statusCode, 200);
final createRoomData = CreateRoomResponse.fromJson(
json.decode(createRoomResponse.body) as Map<String, dynamic>,
);
expect(createRoomData.success, true);
expect(createRoomData.roomCode, isNotNull);
final roomCode = createRoomData.roomCode!;
// 2. Join Room
final joinRoomResponse = await http.post(
Uri.parse('$baseUrl/join_room'),
body: jsonEncode(JoinRoomRequest(username: 'testUser123', roomCode: createRoomData.roomCode!).toJson()),
headers: {'Content-Type': 'application/json'},
);
expect(joinRoomResponse.statusCode, 200);
final joinRoomData = JoinRoomResponse.fromJson(
json.decode(joinRoomResponse.body) as Map<String, dynamic>,
);
expect(joinRoomData.success, true);
expect(joinRoomData.token, isNotNull);
expect(joinRoomData.uuid, isNotNull);
final token = joinRoomData.token!;
// 3. Ping Room
final pingResponse = await http.get(
Uri.parse('$baseUrl/room/$roomCode/ping'),
headers: {
'Authorization': 'Bearer $token',
},
);
expect(pingResponse.statusCode, 200);
final testUser = await Db.getUserById(joinRoomData.uuid!);
expect(testUser, isNotNull);
expect(testUser!.uuid, joinRoomData.uuid);
final gameRoom = await Db.getRoomByCode(createRoomData.roomCode);
expect(gameRoom, isNotNull);
expect(gameRoom!.code, createRoomData.roomCode);
});
}