diff --git a/lib/data/dao/game_dao.dart b/lib/data/dao/game_dao.dart index 6409ba5..daee4b7 100644 --- a/lib/data/dao/game_dao.dart +++ b/lib/data/dao/game_dao.dart @@ -306,4 +306,17 @@ class GameDao extends DatabaseAccessor with _$GameDaoMixin { final result = await query.getSingleOrNull(); return result != null; } + + /// Changes the title of the game with the given [gameId] to [newName]. + /// Returns `true` if more than 0 rows were affected, otherwise `false`. + Future updateGameName({ + required String gameId, + required String newName, + }) async { + final query = update(gameTable)..where((g) => g.id.equals(gameId)); + final rowsAffected = await query.write( + GameTableCompanion(name: Value(newName)), + ); + return rowsAffected > 0; + } } diff --git a/test/db_tests/game_test.dart b/test/db_tests/game_test.dart index 28126cc..4a5cc32 100644 --- a/test/db_tests/game_test.dart +++ b/test/db_tests/game_test.dart @@ -308,5 +308,23 @@ void main() { expect(removedWinner, null); }); + + test('Renaming a game works correctly', () async { + await database.gameDao.addGame(game: testGame1); + + var fetchedGame = await database.gameDao.getGameById( + gameId: testGame1.id, + ); + expect(fetchedGame.name, testGame1.name); + + const newName = 'Updated Game Name'; + await database.gameDao.updateGameName( + gameId: testGame1.id, + newName: newName, + ); + + fetchedGame = await database.gameDao.getGameById(gameId: testGame1.id); + expect(fetchedGame.name, newName); + }); }); }