Skip to content
Snippets Groups Projects
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
No related branches found
No related tags found
No related merge requests found
......@@ -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);
}
......@@ -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);
}
......
......@@ -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);
}
......
......@@ -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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment