Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package io.nickreuter.retroapi.team;

import io.nickreuter.retroapi.team.exception.BadInviteException;
import io.nickreuter.retroapi.team.exception.TeamAlreadyExistsException;
import io.nickreuter.retroapi.team.exception.TeamNotFoundException;
import jakarta.validation.Valid;
import org.springframework.http.HttpStatus;
Expand All @@ -25,7 +24,7 @@ public TeamController(TeamService teamService) {
}

@PostMapping
public ResponseEntity<Void> createTeam(@Valid @RequestBody CreateTeamRequest request, Principal principal) throws TeamAlreadyExistsException {
public ResponseEntity<Void> createTeam(@Valid @RequestBody CreateTeamRequest request, Principal principal) {
var team = teamService.createTeam(request.name(), principal.getName());
return ResponseEntity.created(URI.create("/api/teams/%s".formatted(team.getId()))).build();
}
Expand Down Expand Up @@ -55,11 +54,6 @@ public ResponseEntity<Void> removeUser(@PathVariable("id") UUID teamId, @PathVar
return ResponseEntity.ok().build();
}

@ExceptionHandler(TeamAlreadyExistsException.class)
public ResponseEntity<Void> handleTeamAlreadyExists() {
return ResponseEntity.status(HttpStatus.CONFLICT).build();
}

@ExceptionHandler(TeamNotFoundException.class)
public ResponseEntity<Void> handleTeamNotFound() {
return ResponseEntity.notFound().build();
Expand Down
2 changes: 0 additions & 2 deletions src/main/java/io/nickreuter/retroapi/team/TeamEntity.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.nickreuter.retroapi.team;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
Expand All @@ -20,7 +19,6 @@ public class TeamEntity {
@Id
@GeneratedValue
private UUID id;
@Column(unique = true)
private String name;
@CreationTimestamp
private Instant createdAt;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,5 @@

@Repository
public interface TeamRepository extends JpaRepository<TeamEntity, UUID> {
boolean existsByName(String name);
List<TeamEntity> findAllByIdInOrderByNameAsc(Set<UUID> ids);
}
4 changes: 1 addition & 3 deletions src/main/java/io/nickreuter/retroapi/team/TeamService.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package io.nickreuter.retroapi.team;

import io.nickreuter.retroapi.team.exception.BadInviteException;
import io.nickreuter.retroapi.team.exception.TeamAlreadyExistsException;
import io.nickreuter.retroapi.team.invite.InviteEntity;
import io.nickreuter.retroapi.team.invite.InviteService;
import io.nickreuter.retroapi.team.usermapping.UserMappingEntity;
Expand All @@ -28,8 +27,7 @@ public TeamService(TeamRepository teamRepository, UserMappingService userMapping
this.inviteService = inviteService;
}

public TeamEntity createTeam(String name, String userId) throws TeamAlreadyExistsException {
if (teamRepository.existsByName(name)) throw new TeamAlreadyExistsException();
public TeamEntity createTeam(String name, String userId) {
var team = teamRepository.save(new TeamEntity(name));
userMappingService.addUserToTeam(userId, team.getId());
return team;
Expand Down

This file was deleted.

2 changes: 1 addition & 1 deletion src/main/resources/db/changelog.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<constraints nullable="false" primaryKey="true" />
</column>
<column name="name" type="VARCHAR(255)">
<constraints nullable="false" unique="true" />
<constraints nullable="false"/>
</column>
<column name="created_at" type="datetime">
<constraints nullable="false" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package io.nickreuter.retroapi.retro.thought;

import io.nickreuter.retroapi.retro.RetroEntity;
import io.nickreuter.retroapi.retro.RetroRepository;
import io.nickreuter.retroapi.team.TeamEntity;
import io.nickreuter.retroapi.team.TeamRepository;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;

import static org.assertj.core.api.Assertions.assertThat;

@DataJpaTest
class ThoughtRepositoryTest {
@Autowired
private ThoughtRepository subject;
@Autowired
private RetroRepository retroRepository;
@Autowired
private TeamRepository teamRepository;

@Test
void save_ShouldPreserveEmojiCharacters() {
var team = teamRepository.save(new TeamEntity("test-team"));
var retro = retroRepository.save(new RetroEntity(team.getId(), "template-1"));
var messageWithEmoji = "Great work! 😀🎉👍 Keep it up! 🚀";

var thought = ThoughtEntity.from(messageWithEmoji, "happy", retro.getId());
var saved = subject.save(thought);

var retrieved = subject.findById(saved.getId()).orElseThrow();
assertThat(retrieved.getMessage()).isEqualTo(messageWithEmoji);
}
}
12 changes: 0 additions & 12 deletions src/test/java/io/nickreuter/retroapi/team/TeamControllerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.fasterxml.jackson.databind.ObjectMapper;
import io.nickreuter.retroapi.team.exception.BadInviteException;
import io.nickreuter.retroapi.team.exception.TeamAlreadyExistsException;
import io.nickreuter.retroapi.team.usermapping.UserMappingAuthorizationService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
Expand Down Expand Up @@ -84,17 +83,6 @@ void createTeam_WithInvalidToken_Throws401() throws Exception {
.andExpect(status().isUnauthorized());
}

@Test
void createTeam_WhenTeamAlreadyExists_Throws409() throws Exception {
var teamName = "Team name";
doThrow(TeamAlreadyExistsException.class).when(service).createTeam(teamName, "user");
mockMvc.perform(post("/api/teams")
.with(jwt())
.content(objectMapper.writeValueAsString(new CreateTeamRequest(teamName)))
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isConflict());
}

@Test
void getTeamsForUser_ReturnsListOfTeams() throws Exception {
var team1 = new TeamEntity(UUID.fromString("7c52730b-b9e8-4db8-a8fd-4fd3a9d84809"), "Team 1", Instant.ofEpochSecond(1000000001));
Expand Down
13 changes: 0 additions & 13 deletions src/test/java/io/nickreuter/retroapi/team/TeamRepositoryTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,25 +8,12 @@
import java.util.UUID;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;

@DataJpaTest
class TeamRepositoryTest {
@Autowired
private TeamRepository subject;

@Test
public void existsByName_WhenTeamNameDoesNotExist_ReturnsFalse() {
assertFalse(subject.existsByName("name"));
}

@Test
public void existsByName_WhenTeamNameExists_ReturnsTrue() {
subject.save(new TeamEntity("name"));
assertTrue(subject.existsByName("name"));
}

@Test
public void findAllByIdInOrderByNameAsc_WhenTeamsExist_ReturnsTeamsInNameOrderAscending() {
var team1 = subject.save(new TeamEntity("C Team"));
Expand Down
14 changes: 2 additions & 12 deletions src/test/java/io/nickreuter/retroapi/team/TeamServiceTest.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package io.nickreuter.retroapi.team;

import io.nickreuter.retroapi.team.exception.BadInviteException;
import io.nickreuter.retroapi.team.exception.TeamAlreadyExistsException;
import io.nickreuter.retroapi.team.invite.InviteEntity;
import io.nickreuter.retroapi.team.invite.InviteService;
import io.nickreuter.retroapi.team.usermapping.UserMappingEntity;
Expand All @@ -23,9 +22,8 @@ class TeamServiceTest {
private final TeamService service = new TeamService(teamRepository, userMappingService, inviteService);

@Test
void createTeam_ShouldReturnCreatedTeam() throws TeamAlreadyExistsException {
void createTeam_ShouldReturnCreatedTeam() {
var expected = new TeamEntity(UUID.randomUUID(), "expected name", Instant.now());
when(teamRepository.existsByName("expected name")).thenReturn(false);
when(teamRepository.save(ArgumentMatchers.argThat((TeamEntity team) ->
team.getId() == null &&
Objects.equals(team.getName(), "expected name") &&
Expand All @@ -36,16 +34,8 @@ void createTeam_ShouldReturnCreatedTeam() throws TeamAlreadyExistsException {
}

@Test
void createTeam_WhenTeamAlreadyExists_ShouldThrowException() {
when(teamRepository.existsByName("team already exists")).thenReturn(true);
assertThatExceptionOfType(TeamAlreadyExistsException.class).isThrownBy(() -> service.createTeam("team already exists", "user ID"));
verify(teamRepository, times(0)).save(any());
}

@Test
void createTeam_ShouldAddCreatingUserToTeam() throws TeamAlreadyExistsException {
void createTeam_ShouldAddCreatingUserToTeam() {
var expected = new TeamEntity(UUID.randomUUID(), "expected team name", Instant.now());
when(teamRepository.existsByName("expected team name")).thenReturn(false);
when(teamRepository.save(any())).thenReturn(expected);
var actual = service.createTeam("expected team name", "User ID");
assertThat(actual).isEqualTo(expected);
Expand Down