From ae2737b7f9abc2eba131dc70e30d9a7c6d680429 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1n=20Dovjak?= <xdovjak@fi.muni.cz> Date: Fri, 28 May 2021 16:57:29 +0200 Subject: [PATCH] feat: firePlayer - API and changes to facade and tests --- .../facades/TeamManagerFacade.java | 3 +-- .../rest/controller/IceHockeyManagerApi.java | 8 +++++-- .../facades/TeamManagerFacadeImpl.java | 11 +++++---- .../facades/TeamManagerFacadeImplTest.java | 23 ++++++++++++------- 4 files changed, 29 insertions(+), 16 deletions(-) diff --git a/api/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacade.java b/api/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacade.java index 12e72db..2333273 100644 --- a/api/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacade.java +++ b/api/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacade.java @@ -39,9 +39,8 @@ public interface TeamManagerFacade { * Delete player with playerId from team with teamId * * @param playerId Identifier of player - * @param teamId Identifier of team * @throws UnknownPlayerException If playerId does not match any player * @throws UnknownTeamException If teamId does not match any team */ - void firePlayer(long playerId, long teamId); + void firePlayer(long playerId); } 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 66edff1..461ee56 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 @@ -42,6 +42,11 @@ public class IceHockeyManagerApi { return userFacade.getPlayersInTeam(id); } + @DeleteMapping("/player/fire/{id}") + public final void firePlayer(@PathVariable Long id) { + teamManagerFacade.firePlayer(id); + } + @PostMapping("/player/recruitNew") public final void recruitNewPlayer(@Valid @RequestBody PlayerCreateDTO player) { teamManagerFacade.recruitNewPlayer(player); @@ -58,8 +63,7 @@ public class IceHockeyManagerApi { return userFacade.getTeamsInLeague(); } - @PostMapping("/team/create") - public final void createTeam(@Valid @RequestBody TeamCreateDTO team) { + @PostMapping("/team/create") public final void createTeam(@Valid @RequestBody TeamCreateDTO team) { leagueManagerFacade.createNewTeam(team); } diff --git a/service/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacadeImpl.java b/service/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacadeImpl.java index ebef3d8..5d1230b 100644 --- a/service/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacadeImpl.java +++ b/service/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacadeImpl.java @@ -59,13 +59,16 @@ public class TeamManagerFacadeImpl implements TeamManagerFacade{ } @Override - public void firePlayer(long playerId, long teamId) { - Team team = teamService.findTeam(teamId).orElseThrow( - () -> new UnknownTeamException("Team not found") - ); + public void firePlayer(long playerId) { Player player = playerService.findPlayer(playerId).orElseThrow( () -> new UnknownPlayerException("Player not found") ); + Team playerTeam = player.getTeam().orElseThrow( + () -> new UnknownTeamException("Player not in the team") + ); + Team team = teamService.findTeam(playerTeam.getId()).orElseThrow( + () -> new UnknownTeamException("Team not found") + ); teamService.removePlayerFromTeam(team, player); playerService.removeTeamFromPlayer(player, team); } diff --git a/service/src/test/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacadeImplTest.java b/service/src/test/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacadeImplTest.java index 1fdb2bb..233e5e7 100644 --- a/service/src/test/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacadeImplTest.java +++ b/service/src/test/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacadeImplTest.java @@ -70,12 +70,12 @@ public class TeamManagerFacadeImplTest { } @Test - public void firePlayerNonexistentTeam() { - when(teamService.findTeam(1L)).thenReturn(Optional.empty()); + public void firePlayerNotInTeam() { + Player player = buildPlayerMock(1L, "Andrej Sekera"); + when(playerService.findPlayer(1L)).thenReturn(Optional.of(player)); assertThatExceptionOfType(UnknownTeamException.class).isThrownBy( - () -> teamManagerFacade.firePlayer(1L, 1L) + () -> teamManagerFacade.firePlayer(1L) ); - verify(teamService).findTeam(1L); } @Test @@ -84,9 +84,8 @@ public class TeamManagerFacadeImplTest { when(teamService.findTeam(1L)).thenReturn(Optional.ofNullable(team)); when(playerService.findPlayer(1L)).thenReturn(Optional.empty()); assertThatExceptionOfType(UnknownPlayerException.class).isThrownBy( - () -> teamManagerFacade.firePlayer(1L, 1L) + () -> teamManagerFacade.firePlayer(1L) ); - verify(teamService).findTeam(1L); verify(playerService).findPlayer(1L); } @@ -94,9 +93,9 @@ public class TeamManagerFacadeImplTest { public void firePlayer() { Team team = buildTeamMock(1L, "Boston Bruins"); when(teamService.findTeam(1L)).thenReturn(Optional.ofNullable(team)); - Player player = buildPlayerMock(1L, "David Pastrnak"); + Player player = buildPlayerMock(1L, "David Pastrnak", team); when(playerService.findPlayer(1L)).thenReturn(Optional.ofNullable(player)); - teamManagerFacade.firePlayer(1L, 1L); + teamManagerFacade.firePlayer(1L); verify(teamService).removePlayerFromTeam(team, player); verify(playerService).removeTeamFromPlayer(player, team); } @@ -145,6 +144,14 @@ public class TeamManagerFacadeImplTest { return player; } + private Player buildPlayerMock(Long id, String name, Team team) { + var player = mock(Player.class); + when(player.getId()).thenReturn(id); + when(player.getName()).thenReturn(name); + when(player.getTeam()).thenReturn(Optional.ofNullable(team)); + return player; + } + private PlayerCreateDTO buildPlayerCreateDtoMock(String name) { var player = new PlayerCreateDTO(); player.setName(name); -- GitLab