From cabac1fa271f2cdcf1a5f83f95b6478f8a2e3ef0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1n=20Dovjak?= <xdovjak@fi.muni.cz> Date: Fri, 28 May 2021 17:40:21 +0200 Subject: [PATCH] feat: updateGame API --- .../icehockeymanager/dto/GameUpdateDTO.java | 25 +++++++++++++++++++ .../facades/LeagueManagerFacade.java | 7 +++--- .../rest/controller/IceHockeyManagerApi.java | 5 ++++ .../facades/LeagueManagerFacadeImpl.java | 7 +++--- .../facades/LeagueManagerFacadeImplTest.java | 12 ++++++++- 5 files changed, 48 insertions(+), 8 deletions(-) create mode 100644 api/src/main/java/cz/muni/fi/pa165/icehockeymanager/dto/GameUpdateDTO.java diff --git a/api/src/main/java/cz/muni/fi/pa165/icehockeymanager/dto/GameUpdateDTO.java b/api/src/main/java/cz/muni/fi/pa165/icehockeymanager/dto/GameUpdateDTO.java new file mode 100644 index 0000000..6112793 --- /dev/null +++ b/api/src/main/java/cz/muni/fi/pa165/icehockeymanager/dto/GameUpdateDTO.java @@ -0,0 +1,25 @@ +package cz.muni.fi.pa165.icehockeymanager.dto; + +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.PositiveOrZero; + +public class GameUpdateDTO { + + @NotNull + @Getter + @Setter + private Long id; + + @PositiveOrZero + @Getter + @Setter + private int homeTeamScore; + + @PositiveOrZero + @Getter + @Setter + private int awayTeamScore; +} diff --git a/api/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacade.java b/api/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacade.java index 3997924..23d18dd 100644 --- a/api/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacade.java +++ b/api/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacade.java @@ -1,6 +1,7 @@ package cz.muni.fi.pa165.icehockeymanager.facades; import cz.muni.fi.pa165.icehockeymanager.dto.GameCreateDTO; +import cz.muni.fi.pa165.icehockeymanager.dto.GameUpdateDTO; import cz.muni.fi.pa165.icehockeymanager.dto.TeamCreateDTO; /** @@ -24,11 +25,9 @@ public interface LeagueManagerFacade { /** * Updates the game score and also the winner if one is determined by the new score. - * @param gameId ID of the game to be updated. - * @param homeTeamScore the new score of the home team. - * @param awayTeamScore the new score of the away team. + * @param game DTO for updating game */ - void updateGameScore(long gameId, int homeTeamScore, int awayTeamScore); + void updateGameScore(GameUpdateDTO game); /** * Sets the winner of a game. diff --git a/rest/src/main/java/cz/muni/fi/pa165/icehockeymanager/rest/controller/IceHockeyManagerApi.java b/rest/src/main/java/cz/muni/fi/pa165/icehockeymanager/rest/controller/IceHockeyManagerApi.java index 81aa1e0..7eeff9c 100644 --- a/rest/src/main/java/cz/muni/fi/pa165/icehockeymanager/rest/controller/IceHockeyManagerApi.java +++ b/rest/src/main/java/cz/muni/fi/pa165/icehockeymanager/rest/controller/IceHockeyManagerApi.java @@ -74,6 +74,11 @@ public class IceHockeyManagerApi { leagueManagerFacade.scheduleGame(game); } + @PutMapping("/game/update") + public final void updateGame(@Valid @RequestBody GameUpdateDTO game) { + leagueManagerFacade.updateGameScore(game); + } + @GetMapping("/game/team/{id}") public final Collection<GameDTO> getGamesForTeam(@PathVariable Long id) { return userFacade.getGamesForTeam(id); diff --git a/service/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacadeImpl.java b/service/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacadeImpl.java index d18ed5e..ef6f3d9 100644 --- a/service/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacadeImpl.java +++ b/service/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacadeImpl.java @@ -1,6 +1,7 @@ package cz.muni.fi.pa165.icehockeymanager.facades; import cz.muni.fi.pa165.icehockeymanager.dto.GameCreateDTO; +import cz.muni.fi.pa165.icehockeymanager.dto.GameUpdateDTO; import cz.muni.fi.pa165.icehockeymanager.dto.TeamCreateDTO; import cz.muni.fi.pa165.icehockeymanager.dto.TeamDTO; import cz.muni.fi.pa165.icehockeymanager.exceptions.UnknownGameException; @@ -48,11 +49,11 @@ public class LeagueManagerFacadeImpl implements LeagueManagerFacade { } @Override - public void updateGameScore(long gameId, int homeTeamScore, int awayTeamScore) { - Game game = gameService.findGame(gameId).orElseThrow( + public void updateGameScore(GameUpdateDTO gameDTO) { + Game game = gameService.findGame(gameDTO.getId()).orElseThrow( () -> new UnknownGameException("Game not found") ); - gameService.updateGameScore(game, homeTeamScore, awayTeamScore); + gameService.updateGameScore(game, gameDTO.getHomeTeamScore(), gameDTO.getAwayTeamScore()); } @Override diff --git a/service/src/test/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacadeImplTest.java b/service/src/test/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacadeImplTest.java index b232248..de16e7f 100644 --- a/service/src/test/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacadeImplTest.java +++ b/service/src/test/java/cz/muni/fi/pa165/icehockeymanager/facades/LeagueManagerFacadeImplTest.java @@ -2,6 +2,7 @@ package cz.muni.fi.pa165.icehockeymanager.facades; import cz.muni.fi.pa165.icehockeymanager.config.PersistanceApplicationConfig; import cz.muni.fi.pa165.icehockeymanager.dto.GameCreateDTO; +import cz.muni.fi.pa165.icehockeymanager.dto.GameUpdateDTO; import cz.muni.fi.pa165.icehockeymanager.dto.TeamCreateDTO; import cz.muni.fi.pa165.icehockeymanager.dto.TeamDTO; import cz.muni.fi.pa165.icehockeymanager.model.Game; @@ -71,6 +72,14 @@ public class LeagueManagerFacadeImplTest { return gameCreateDTO; } + public GameUpdateDTO buildGameUpdateDTO(Game game, int homeScore, int awayScore) { + var gameUpdate = new GameUpdateDTO(); + gameUpdate.setId(game.getId()); + gameUpdate.setAwayTeamScore(awayScore); + gameUpdate.setHomeTeamScore(homeScore); + return gameUpdate; + } + @Test public void scheduleGame() { var edmonton = buildTeamDTO(1L, "Edmonton Oilers"); @@ -95,8 +104,9 @@ public class LeagueManagerFacadeImplTest { @Test public void updateGameScore() { var game = buildGameMock(1L); + var gameUpdate = buildGameUpdateDTO(game, 1, 2); when(gameService.findGame(1L)).thenReturn(Optional.ofNullable(game)); - leagueManagerFacade.updateGameScore(1L, 1, 2); + leagueManagerFacade.updateGameScore(gameUpdate); verify(gameService).updateGameScore(game, 1, 2); } -- GitLab