getAllGames returnt nicht alle Attribute von der game Klasse #45

Merged
flixcoo merged 20 commits from bug/37-getallgames-returnt-nicht-alle-attribute-von-der-game-klasse into development 2025-11-22 15:22:11 +00:00
3 changed files with 129 additions and 125 deletions
Showing only changes of commit d948f2f13d - Show all commits

View File

@@ -98,9 +98,8 @@ void main() {
} }
}); });
test('Adding and fetching multiple games works correctly', () async {
// TODO: Use upcoming addGames() method // TODO: Use upcoming addGames() method
// TODO: Iterate through games
test('Adding and fetching multiple games works correclty', () async {
await database.gameDao.addGame(game: testgame1); await database.gameDao.addGame(game: testgame1);
await database.gameDao.addGame(game: testgame2); await database.gameDao.addGame(game: testgame2);
await database.gameDao.addGame(game: testgameWithGroup); await database.gameDao.addGame(game: testgameWithGroup);
@@ -109,86 +108,61 @@ void main() {
final allGames = await database.gameDao.getAllGames(); final allGames = await database.gameDao.getAllGames();
expect(allGames.length, 4); expect(allGames.length, 4);
final fetchedGame1 = allGames.firstWhere((g) => g.id == testgame1.id); final testGames = {
// game checks testgame1.id: testgame1,
expect(fetchedGame1.id, testgame1.id); testgame2.id: testgame2,
expect(fetchedGame1.name, testgame1.name); testgameWithGroup.id: testgameWithGroup,
expect(fetchedGame1.createdAt, testgame1.createdAt); testgameWithPlayer.id: testgameWithPlayer,
expect(fetchedGame1.winner, testgame1.winner); };
// group checks for (final game in allGames) {
expect(fetchedGame1.group!.id, testgame1.group!.id); final expectedGame = testGames[game.id]!;
expect(fetchedGame1.group!.name, testgame1.group!.name);
expect(fetchedGame1.group!.createdAt, testgame1.group!.createdAt); // Game-Checks
// group members checks expect(game.id, expectedGame.id);
expect(game.name, expectedGame.name);
expect(game.createdAt, expectedGame.createdAt);
expect(game.winner, expectedGame.winner);
// Group-Checks
if (expectedGame.group != null) {
expect(game.group!.id, expectedGame.group!.id);
expect(game.group!.name, expectedGame.group!.name);
expect(game.group!.createdAt, expectedGame.group!.createdAt);
flixcoo marked this conversation as resolved Outdated

was ist wenn bspw. testGame1 die group null ist, obwohl sie ja eigentlich nicht null sein soll? darauf müsste doch auch überprüft werden

was ist wenn bspw. testGame1 die group null ist, obwohl sie ja eigentlich nicht null sein soll? darauf müsste doch auch überprüft werden
// Group Members-Checks
expect( expect(
fetchedGame1.group!.members.length, game.group!.members.length,
testgame1.group!.members.length, expectedGame.group!.members.length,
); );
for (int i = 0; i < testgame1.group!.members.length; i++) { for (int i = 0; i < expectedGame.group!.members.length; i++) {
expect( expect(
fetchedGame1.group!.members[i].id, game.group!.members[i].id,
testgame1.group!.members[i].id, expectedGame.group!.members[i].id,
); );
expect( expect(
fetchedGame1.group!.members[i].name, game.group!.members[i].name,
testgame1.group!.members[i].name, expectedGame.group!.members[i].name,
); );
expect( expect(
fetchedGame1.group!.members[i].createdAt, game.group!.members[i].createdAt,
testgame1.group!.members[i].createdAt, expectedGame.group!.members[i].createdAt,
); );
} }
// players checks
for (int i = 0; i < fetchedGame1.players!.length; i++) {
expect(fetchedGame1.players![i].id, testgame1.players![i].id);
expect(fetchedGame1.players![i].name, testgame1.players![i].name);
expect(
fetchedGame1.players![i].createdAt,
testgame1.players![i].createdAt,
);
} }
final fetchedGame2 = allGames.firstWhere((g) => g.id == testgame2.id); // Players-Checks
// game checks if (expectedGame.players != null) {
expect(fetchedGame2.id, testgame2.id); expect(game.players!.length, expectedGame.players!.length);
expect(fetchedGame2.name, testgame2.name); for (int i = 0; i < expectedGame.players!.length; i++) {
expect(fetchedGame2.createdAt, testgame2.createdAt); expect(game.players![i].id, expectedGame.players![i].id);
expect(fetchedGame2.winner, testgame2.winner); expect(game.players![i].name, expectedGame.players![i].name);
// group checks
expect(fetchedGame2.group!.id, testgame2.group!.id);
expect(fetchedGame2.group!.name, testgame2.group!.name);
expect(fetchedGame2.group!.createdAt, testgame2.group!.createdAt);
// group members checks
expect( expect(
fetchedGame2.group!.members.length, game.players![i].createdAt,
testgame2.group!.members.length, expectedGame.players![i].createdAt,
);
for (int i = 0; i < testgame2.group!.members.length; i++) {
expect(
fetchedGame2.group!.members[i].id,
testgame2.group!.members[i].id,
);
expect(
fetchedGame2.group!.members[i].name,
testgame2.group!.members[i].name,
);
expect(
fetchedGame2.group!.members[i].createdAt,
testgame2.group!.members[i].createdAt,
); );
} }
}
// players checks
for (int i = 0; i < fetchedGame2.players!.length; i++) {
expect(fetchedGame2.players![i].id, testgame2.players![i].id);
expect(fetchedGame2.players![i].name, testgame2.players![i].name);
expect(
fetchedGame2.players![i].createdAt,
testgame2.players![i].createdAt,
);
} }
}); });

View File

@@ -14,6 +14,8 @@ void main() {
late Player player4; late Player player4;
late Group testgroup; late Group testgroup;
late Group testgroup2; late Group testgroup2;
late Group testgroup3;
late Group testgroup4;
final fixedDate = DateTime(2025, 19, 11, 00, 11, 23); final fixedDate = DateTime(2025, 19, 11, 00, 11, 23);
final fakeClock = Clock(() => fixedDate); final fakeClock = Clock(() => fixedDate);
@@ -40,6 +42,16 @@ void main() {
name: 'Second Group', name: 'Second Group',
members: [player2, player3, player4], members: [player2, player3, player4],
); );
testgroup3 = Group(
id: 'gr2',
name: 'Second Group',
members: [player2, player4],
);
testgroup4 = Group(
id: 'gr2',
name: 'Second Group',
members: [player1, player2, player3, player4],
);
}); });
}); });
tearDown(() async { tearDown(() async {
@@ -68,28 +80,37 @@ void main() {
} }
}); });
test('Adding and fetching a single group works correctly', () async { test('Adding and fetching multiple groups works correctly', () async {
// TODO: Use upcoming addGroups() method
flixcoo marked this conversation as resolved
Review

remove comment

remove comment
await database.groupDao.addGroup(group: testgroup); await database.groupDao.addGroup(group: testgroup);
await database.groupDao.addGroup(group: testgroup2); await database.groupDao.addGroup(group: testgroup2);
await database.groupDao.addGroup(group: testgroup3);
await database.groupDao.addGroup(group: testgroup4);
final allGroups = await database.groupDao.getAllGroups(); final allGroups = await database.groupDao.getAllGroups();
expect(allGroups.length, 2); expect(allGroups.length, 2);
final fetchedGroup1 = allGroups.firstWhere((g) => g.id == testgroup.id); final testGroups = {testgroup.id: testgroup, testgroup2.id: testgroup2};
expect(fetchedGroup1.name, testgroup.name);
expect(fetchedGroup1.members.length, testgroup.members.length);
expect(fetchedGroup1.members.elementAt(0).id, player1.id);
expect(fetchedGroup1.members.elementAt(0).createdAt, player1.createdAt);
final fetchedGroup2 = allGroups.firstWhere((g) => g.id == testgroup2.id); for (final group in allGroups) {
expect(fetchedGroup2.name, testgroup2.name); final expectedGroup = testGroups[group.id]!;
expect(fetchedGroup2.members.length, testgroup2.members.length);
expect(fetchedGroup2.members.elementAt(0).id, player2.id); expect(group.id, expectedGroup.id);
expect(fetchedGroup2.members.elementAt(0).createdAt, player2.createdAt); expect(group.name, expectedGroup.name);
expect(group.createdAt, expectedGroup.createdAt);
expect(group.members.length, expectedGroup.members.length);
for (int i = 0; i < expectedGroup.members.length; i++) {
expect(group.members[i].id, expectedGroup.members[i].id);
expect(group.members[i].name, expectedGroup.members[i].name);
expect(
group.members[i].createdAt,
expectedGroup.members[i].createdAt,
);
}
}
}); });
// TODO: Use upcoming addGroups() method
// TODO: An Test in Game Tests orientieren
test('Adding the same group twice does not create duplicates', () async { test('Adding the same group twice does not create duplicates', () async {
await database.groupDao.addGroup(group: testgroup); await database.groupDao.addGroup(group: testgroup);
await database.groupDao.addGroup(group: testgroup); await database.groupDao.addGroup(group: testgroup);

View File

@@ -7,8 +7,10 @@ import 'package:game_tracker/data/dto/player.dart';
void main() { void main() {
late AppDatabase database; late AppDatabase database;
late Player testPlayer; late Player testPlayer1;
late Player testPlayer2; late Player testPlayer2;
late Player testPlayer3;
late Player testPlayer4;
final fixedDate = DateTime(2025, 19, 11, 00, 11, 23); final fixedDate = DateTime(2025, 19, 11, 00, 11, 23);
final fakeClock = Clock(() => fixedDate); final fakeClock = Clock(() => fixedDate);
@@ -22,27 +24,29 @@ void main() {
); );
withClock(fakeClock, () { withClock(fakeClock, () {
testPlayer = Player(name: 'Test Player'); testPlayer1 = Player(name: 'Test Player');
testPlayer2 = Player(name: 'Second Player'); testPlayer2 = Player(name: 'Second Player');
testPlayer3 = Player(name: 'Charlie');
testPlayer4 = Player(name: 'Diana');
}); });
}); });
tearDown(() async { tearDown(() async {
await database.close(); await database.close();
}); });
group('player tests', () { group('Player Tests', () {
test('Adding and fetching single player works correclty', () async { test('Adding and fetching single player works correclty', () async {
await database.playerDao.addPlayer(player: testPlayer); await database.playerDao.addPlayer(player: testPlayer1);
await database.playerDao.addPlayer(player: testPlayer2); await database.playerDao.addPlayer(player: testPlayer2);
final allPlayers = await database.playerDao.getAllPlayers(); final allPlayers = await database.playerDao.getAllPlayers();
expect(allPlayers.length, 2); expect(allPlayers.length, 2);
final fetchedPlayer1 = allPlayers.firstWhere( final fetchedPlayer1 = allPlayers.firstWhere(
(g) => g.id == testPlayer.id, (g) => g.id == testPlayer1.id,
); );
expect(fetchedPlayer1.name, testPlayer.name); expect(fetchedPlayer1.name, testPlayer1.name);
expect(fetchedPlayer1.createdAt, testPlayer.createdAt); expect(fetchedPlayer1.createdAt, testPlayer1.createdAt);
final fetchedPlayer2 = allPlayers.firstWhere( final fetchedPlayer2 = allPlayers.firstWhere(
(g) => g.id == testPlayer2.id, (g) => g.id == testPlayer2.id,
@@ -51,31 +55,36 @@ void main() {
expect(fetchedPlayer2.createdAt, testPlayer2.createdAt); expect(fetchedPlayer2.createdAt, testPlayer2.createdAt);
}); });
// TODO: Use upcoming addPlayers() method
// TODO: An Tests in Game orientieren
test('Adding and fetching multiple players works correclty', () async { test('Adding and fetching multiple players works correclty', () async {
await database.playerDao.addPlayer(player: testPlayer); // TODO: Use upcoming addPlayers() method
flixcoo marked this conversation as resolved
Review

remove comment

remove comment
await database.playerDao.addPlayer(player: testPlayer1);
await database.playerDao.addPlayer(player: testPlayer2); await database.playerDao.addPlayer(player: testPlayer2);
await database.playerDao.addPlayer(player: testPlayer3);
await database.playerDao.addPlayer(player: testPlayer4);
final allPlayers = await database.playerDao.getAllPlayers(); final allPlayers = await database.playerDao.getAllPlayers();
expect(allPlayers.length, 2); expect(allPlayers.length, 4);
final fetchedPlayer1 = allPlayers.firstWhere( // Map for connencting fetched players with expected players
(g) => g.id == testPlayer.id, final testPlayer = {
); testPlayer1.id: testPlayer1,
expect(fetchedPlayer1.name, testPlayer.name); testPlayer2.id: testPlayer2,
expect(fetchedPlayer1.createdAt, testPlayer.createdAt); testPlayer3.id: testPlayer3,
testPlayer4.id: testPlayer4,
};
final fetchedPlayer2 = allPlayers.firstWhere( for (final player in allPlayers) {
(g) => g.id == testPlayer2.id, final expectedPlayer = testPlayer[player.id]!;
);
expect(fetchedPlayer2.name, testPlayer2.name); expect(player.id, expectedPlayer.id);
expect(fetchedPlayer2.createdAt, testPlayer2.createdAt); expect(player.name, expectedPlayer.name);
expect(player.createdAt, expectedPlayer.createdAt);
}
}); });
test('Adding the same player twice does not create duplicates', () async { test('Adding the same player twice does not create duplicates', () async {
await database.playerDao.addPlayer(player: testPlayer); await database.playerDao.addPlayer(player: testPlayer1);
await database.playerDao.addPlayer(player: testPlayer); await database.playerDao.addPlayer(player: testPlayer1);
final allPlayers = await database.playerDao.getAllPlayers(); final allPlayers = await database.playerDao.getAllPlayers();
expect(allPlayers.length, 1); expect(allPlayers.length, 1);
@@ -83,43 +92,43 @@ void main() {
test('Player existence check works correctly', () async { test('Player existence check works correctly', () async {
var playerExists = await database.playerDao.playerExists( var playerExists = await database.playerDao.playerExists(
playerId: testPlayer.id, playerId: testPlayer1.id,
); );
expect(playerExists, false); expect(playerExists, false);
await database.playerDao.addPlayer(player: testPlayer); await database.playerDao.addPlayer(player: testPlayer1);
playerExists = await database.playerDao.playerExists( playerExists = await database.playerDao.playerExists(
playerId: testPlayer.id, playerId: testPlayer1.id,
); );
expect(playerExists, true); expect(playerExists, true);
}); });
test('Deleting a player works correclty', () async { test('Deleting a player works correclty', () async {
await database.playerDao.addPlayer(player: testPlayer); await database.playerDao.addPlayer(player: testPlayer1);
final playerDeleted = await database.playerDao.deletePlayer( final playerDeleted = await database.playerDao.deletePlayer(
playerId: testPlayer.id, playerId: testPlayer1.id,
); );
expect(playerDeleted, true); expect(playerDeleted, true);
final playerExists = await database.playerDao.playerExists( final playerExists = await database.playerDao.playerExists(
playerId: testPlayer.id, playerId: testPlayer1.id,
); );
expect(playerExists, false); expect(playerExists, false);
}); });
test('Updating a player name works correcly', () async { test('Updating a player name works correcly', () async {
await database.playerDao.addPlayer(player: testPlayer); await database.playerDao.addPlayer(player: testPlayer1);
const newPlayerName = 'new player name'; const newPlayerName = 'new player name';
await database.playerDao.updatePlayername( await database.playerDao.updatePlayername(
playerId: testPlayer.id, playerId: testPlayer1.id,
newName: newPlayerName, newName: newPlayerName,
); );
final result = await database.playerDao.getPlayerById( final result = await database.playerDao.getPlayerById(
playerId: testPlayer.id, playerId: testPlayer1.id,
); );
expect(result.name, newPlayerName); expect(result.name, newPlayerName);
}); });
@@ -128,7 +137,7 @@ void main() {
var playerCount = await database.playerDao.getPlayerCount(); var playerCount = await database.playerDao.getPlayerCount();
expect(playerCount, 0); expect(playerCount, 0);
await database.playerDao.addPlayer(player: testPlayer); await database.playerDao.addPlayer(player: testPlayer1);
playerCount = await database.playerDao.getPlayerCount(); playerCount = await database.playerDao.getPlayerCount();
expect(playerCount, 1); expect(playerCount, 1);
@@ -138,7 +147,7 @@ void main() {
playerCount = await database.playerDao.getPlayerCount(); playerCount = await database.playerDao.getPlayerCount();
expect(playerCount, 2); expect(playerCount, 2);
await database.playerDao.deletePlayer(playerId: testPlayer.id); await database.playerDao.deletePlayer(playerId: testPlayer1.id);
playerCount = await database.playerDao.getPlayerCount(); playerCount = await database.playerDao.getPlayerCount();
expect(playerCount, 1); expect(playerCount, 1);