From 7b9ad00dc02be5c29450b65ff938a64d69c8def3 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:06:11 +0200 Subject: [PATCH] feat: recruitVeteranPlayer - API, DTO and changes to facade and tests --- .../dto/PlayerVeteranDTO.java | 32 +++++++++++++++++++ .../facades/TeamManagerFacade.java | 6 ++-- .../rest/controller/IceHockeyManagerApi.java | 6 ++-- .../facades/TeamManagerFacadeImpl.java | 7 ++-- .../facades/TeamManagerFacadeImplTest.java | 11 +++++-- 5 files changed, 51 insertions(+), 11 deletions(-) create mode 100644 api/src/main/java/cz/muni/fi/pa165/icehockeymanager/dto/PlayerVeteranDTO.java diff --git a/api/src/main/java/cz/muni/fi/pa165/icehockeymanager/dto/PlayerVeteranDTO.java b/api/src/main/java/cz/muni/fi/pa165/icehockeymanager/dto/PlayerVeteranDTO.java new file mode 100644 index 0000000..85319cc --- /dev/null +++ b/api/src/main/java/cz/muni/fi/pa165/icehockeymanager/dto/PlayerVeteranDTO.java @@ -0,0 +1,32 @@ +package cz.muni.fi.pa165.icehockeymanager.dto; + +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import java.util.Objects; + +public final class PlayerVeteranDTO { + + @NotBlank + @Getter + @Setter + private long playerId; + + @Getter + @Setter + private long teamId; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + PlayerVeteranDTO playerDTO = (PlayerVeteranDTO) o; + return getPlayerId() == playerDTO.getPlayerId() && getTeamId() == playerDTO.getTeamId(); + } + + @Override + public int hashCode() { + return Objects.hash(getPlayerId()); + } +} 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 2333273..f291938 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 @@ -2,6 +2,7 @@ package cz.muni.fi.pa165.icehockeymanager.facades; import cz.muni.fi.pa165.icehockeymanager.dto.PlayerCreateDTO; import cz.muni.fi.pa165.icehockeymanager.dto.PlayerDTO; +import cz.muni.fi.pa165.icehockeymanager.dto.PlayerVeteranDTO; import cz.muni.fi.pa165.icehockeymanager.exceptions.UnknownPlayerException; import cz.muni.fi.pa165.icehockeymanager.exceptions.UnknownTeamException; @@ -23,10 +24,9 @@ public interface TeamManagerFacade { /** * Adds player with playerId to team with teamId * - * @param playerId Identifier of the player - * @param teamId Identifier of the team + * @param playerVeteranDTO DTO for recruiting veteran player */ - void recruitVeteranPlayer(long playerId, long teamId); + void recruitVeteranPlayer(PlayerVeteranDTO playerVeteranDTO); /** * Retrieve all players without team 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 461ee56..a727278 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 @@ -52,9 +52,9 @@ public class IceHockeyManagerApi { teamManagerFacade.recruitNewPlayer(player); } - @PostMapping("/player/recruitFree") - public final void recruitFreePlayer(@Valid @RequestBody long playerId) { - teamManagerFacade.recruitVeteranPlayer(playerId, 2L); + @PostMapping("/player/recruitVeteran") + public final void recruitVeteranPlayer(@Valid @RequestBody PlayerVeteranDTO player) { + teamManagerFacade.recruitVeteranPlayer(player); } 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 5d1230b..38cbc7a 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 @@ -2,6 +2,7 @@ package cz.muni.fi.pa165.icehockeymanager.facades; import cz.muni.fi.pa165.icehockeymanager.dto.PlayerCreateDTO; import cz.muni.fi.pa165.icehockeymanager.dto.PlayerDTO; +import cz.muni.fi.pa165.icehockeymanager.dto.PlayerVeteranDTO; import cz.muni.fi.pa165.icehockeymanager.exceptions.UnknownPlayerException; import cz.muni.fi.pa165.icehockeymanager.exceptions.UnknownTeamException; import cz.muni.fi.pa165.icehockeymanager.model.Player; @@ -41,11 +42,11 @@ public class TeamManagerFacadeImpl implements TeamManagerFacade{ } @Override - public void recruitVeteranPlayer(long playerId, long teamId){ - Team team = teamService.findTeam(teamId).orElseThrow( + public void recruitVeteranPlayer(PlayerVeteranDTO playerDto){ + Team team = teamService.findTeam(playerDto.getTeamId()).orElseThrow( () -> new UnknownTeamException("Team not found") ); - Player player = playerService.findPlayer(playerId).orElseThrow( + Player player = playerService.findPlayer(playerDto.getPlayerId()).orElseThrow( () -> new UnknownPlayerException("Player not found") ); teamService.addPlayerToTeam(team, player); 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 233e5e7..3c492ac 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 @@ -3,6 +3,7 @@ package cz.muni.fi.pa165.icehockeymanager.facades; import cz.muni.fi.pa165.icehockeymanager.config.PersistanceApplicationConfig; import cz.muni.fi.pa165.icehockeymanager.dto.PlayerCreateDTO; import cz.muni.fi.pa165.icehockeymanager.dto.PlayerDTO; +import cz.muni.fi.pa165.icehockeymanager.dto.PlayerVeteranDTO; import cz.muni.fi.pa165.icehockeymanager.exceptions.UnknownPlayerException; import cz.muni.fi.pa165.icehockeymanager.exceptions.UnknownTeamException; import cz.muni.fi.pa165.icehockeymanager.model.Player; @@ -103,8 +104,11 @@ public class TeamManagerFacadeImplTest { @Test public void recruitVeteranPlayerNonexistentTeam() { when(teamService.findTeam(1L)).thenReturn(Optional.empty()); + PlayerVeteranDTO player = new PlayerVeteranDTO(); + player.setPlayerId(1L); + player.setTeamId(1L); assertThatExceptionOfType(UnknownTeamException.class).isThrownBy( - () -> teamManagerFacade.recruitVeteranPlayer(1L, 1L) + () -> teamManagerFacade.recruitVeteranPlayer(player) ); verify(teamService).findTeam(1L); } @@ -112,10 +116,13 @@ public class TeamManagerFacadeImplTest { @Test public void recruitVeteranPlayerNonexistentPlayer() { Team team = buildTeamMock(1L, "Boston Bruins"); + PlayerVeteranDTO player = new PlayerVeteranDTO(); + player.setPlayerId(1L); + player.setTeamId(1L); when(teamService.findTeam(1L)).thenReturn(Optional.ofNullable(team)); when(playerService.findPlayer(1L)).thenReturn(Optional.empty()); assertThatExceptionOfType(UnknownPlayerException.class).isThrownBy( - () -> teamManagerFacade.recruitVeteranPlayer(1L, 1L) + () -> teamManagerFacade.recruitVeteranPlayer(player) ); verify(teamService).findTeam(1L); } -- GitLab