Commit 7b9ad00d authored by Ján Dovjak's avatar Ján Dovjak
Browse files

feat: recruitVeteranPlayer - API, DTO and changes to facade and tests

parent ae2737b7
Loading
Loading
Loading
Loading
+32 −0
Original line number Diff line number Diff line
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());
    }
}
+3 −3
Original line number Diff line number Diff line
@@ -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
+3 −3
Original line number Diff line number Diff line
@@ -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);
    }


+4 −3
Original line number Diff line number Diff line
@@ -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);
+9 −2
Original line number Diff line number Diff line
@@ -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);
    }