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

feat: firePlayer - API and changes to facade and tests

parent f9bfeea4
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -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);
}
+6 −2
Original line number Diff line number Diff line
@@ -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);
    }

+7 −4
Original line number Diff line number Diff line
@@ -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);
    }
+15 −8
Original line number Diff line number Diff line
@@ -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);