diff --git a/src/main/java/org/team1/nbe1_2_team01/domain/group/controller/request/TeamApprovalUpdateRequest.java b/src/main/java/org/team1/nbe1_2_team01/domain/group/controller/request/TeamApprovalUpdateRequest.java index 02a1e9e..20add2e 100644 --- a/src/main/java/org/team1/nbe1_2_team01/domain/group/controller/request/TeamApprovalUpdateRequest.java +++ b/src/main/java/org/team1/nbe1_2_team01/domain/group/controller/request/TeamApprovalUpdateRequest.java @@ -1,9 +1,11 @@ package org.team1.nbe1_2_team01.domain.group.controller.request; import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; import lombok.Data; @Data +@AllArgsConstructor public class TeamApprovalUpdateRequest { @NotNull(message = "teamId가 누락되었습니다.") diff --git a/src/main/java/org/team1/nbe1_2_team01/global/config/SecurityConfig.java b/src/main/java/org/team1/nbe1_2_team01/global/config/SecurityConfig.java index 9665510..7728be2 100644 --- a/src/main/java/org/team1/nbe1_2_team01/global/config/SecurityConfig.java +++ b/src/main/java/org/team1/nbe1_2_team01/global/config/SecurityConfig.java @@ -59,6 +59,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { .requestMatchers("/api/user/admin/**").hasRole("ADMIN") .requestMatchers("/api/email/admin/**").hasRole("ADMIN") .requestMatchers("/api/course/admin/**").hasRole("ADMIN") + .requestMatchers("/api/teams/admin/**").hasRole("ADMIN") .anyRequest().authenticated() ); diff --git a/src/test/java/org/team1/nbe1_2_team01/domain/group/service/TeamServiceTest.java b/src/test/java/org/team1/nbe1_2_team01/domain/group/service/TeamServiceTest.java index 766ff13..18767bb 100644 --- a/src/test/java/org/team1/nbe1_2_team01/domain/group/service/TeamServiceTest.java +++ b/src/test/java/org/team1/nbe1_2_team01/domain/group/service/TeamServiceTest.java @@ -1,6 +1,5 @@ package org.team1.nbe1_2_team01.domain.group.service; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.slf4j.Logger; @@ -9,15 +8,15 @@ import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.annotation.DirtiesContext; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.StopWatch; import org.team1.nbe1_2_team01.IntegrationTestSupport; +import org.team1.nbe1_2_team01.domain.group.controller.request.TeamApprovalUpdateRequest; import org.team1.nbe1_2_team01.domain.group.controller.request.TeamCreateRequest; import org.team1.nbe1_2_team01.domain.group.entity.Belonging; import org.team1.nbe1_2_team01.domain.group.entity.Team; import org.team1.nbe1_2_team01.domain.group.entity.TeamType; import org.team1.nbe1_2_team01.domain.group.repository.TeamRepository; +import org.team1.nbe1_2_team01.domain.group.service.response.TeamResponse; import org.team1.nbe1_2_team01.domain.user.entity.Course; -import org.team1.nbe1_2_team01.domain.user.entity.Role; import org.team1.nbe1_2_team01.domain.user.entity.User; import org.team1.nbe1_2_team01.domain.user.fixture.UserFixture; import org.team1.nbe1_2_team01.domain.user.repository.CourseRepository; @@ -62,6 +61,16 @@ void setup() { userRepository.save(user2); } + /* 프로젝트 팀 생성 관련 */ + @Test + @WithMockUser(username = "root", roles = {"ADMIN"}) + void 프로젝트팀_생성_실패_회원PK_없음() { + TeamCreateRequest teamCreateRequest = new TeamCreateRequest(1L, "PROJECT", "projectTeam", List.of(3L, 4L, 5L), 3L); + + assertThat( + assertThrows(AppException.class, () -> teamService.teamCreate(teamCreateRequest)).getErrorCode() + ).isEqualTo(ErrorCode.USER_NOT_FOUND); + } @Test @WithMockUser(username = "root", roles = {"ADMIN"}) @@ -84,8 +93,24 @@ void setup() { @Test @WithMockUser(username = "root", roles = {"ADMIN"}) - void 프로젝트팀_생성_실패_회원PK_없음() { - TeamCreateRequest teamCreateRequest = new TeamCreateRequest(1L, "PROJECT", "projectTeam", List.of(3L, 4L, 5L), 3L); + void 프로젝트팀_생성_성공() { + TeamCreateRequest teamCreateRequest = new TeamCreateRequest(1L, "PROJECT", "projectTeam", List.of(3L, 4L), 3L); + Message message = teamService.teamCreate(teamCreateRequest); + assertThat(message.getValue()).isEqualTo("1"); + Team createdTeam = teamRepository.findById(1L).get(); + assertThat(createdTeam.getName()).isEqualTo("projectTeam"); + assertThat(createdTeam.getBelongings().stream().map(Belonging::getUser).map(User::getId).toList()).contains(3L, 4L); + assertThat(createdTeam.getTeamType()).isEqualTo(TeamType.PROJECT); + assertThat(createdTeam.isCreationWaiting()).isEqualTo(false); + assertThat(createdTeam.isDeletionWaiting()).isEqualTo(false); + assertThat(createdTeam.getCourse().getId()).isEqualTo(1L); + } + + /* 스터디 팀 생성 관련 */ + @Test + @WithMockUser(username = "user", roles = {"USER"}) + void 스터디팀_생성_실패_회원PK_없음() { + TeamCreateRequest teamCreateRequest = new TeamCreateRequest(1L, "STUDY", "studyTeam", List.of(3L, 4L, 5L), 3L); assertThat( assertThrows(AppException.class, () -> teamService.teamCreate(teamCreateRequest)).getErrorCode() @@ -93,20 +118,69 @@ void setup() { } @Test - @WithMockUser(username = "root", roles = {"ADMIN"}) - void 프로젝트팀_생성_성공() { - TeamCreateRequest teamCreateRequest = new TeamCreateRequest(1L, "PROJECT", "projectTeam", List.of(3L, 4L), 3L); + @WithMockUser(username = "user", roles = {"USER"}) + void 스터디팀_생성_실패_코스_없음() { + TeamCreateRequest teamCreateRequest = new TeamCreateRequest(2L, "STUDY", "studyTeam", List.of(3L), 3L); + + assertThat( + assertThrows(AppException.class, () -> teamService.teamCreate(teamCreateRequest)).getErrorCode() + ).isEqualTo(ErrorCode.COURSE_NOT_FOUND); + } + + @Test + @WithMockUser(username = "user", roles = {"USER"}) + void 스터디팀_생성_성공() { + TeamCreateRequest teamCreateRequest = new TeamCreateRequest(1L, "STUDY", "studyTeam", List.of(3L, 4L), 3L); Message message = teamService.teamCreate(teamCreateRequest); assertThat(message.getValue()).isEqualTo("1"); Team createdTeam = teamRepository.findById(1L).get(); - assertThat(createdTeam.getName()).isEqualTo("projectTeam"); + assertThat(createdTeam.getName()).isEqualTo("studyTeam"); assertThat(createdTeam.getBelongings().stream().map(Belonging::getUser).map(User::getId).toList()).contains(3L, 4L); - assertThat(createdTeam.getTeamType()).isEqualTo(TeamType.PROJECT); - assertThat(createdTeam.isCreationWaiting()).isEqualTo(false); + assertThat(createdTeam.getTeamType()).isEqualTo(TeamType.STUDY); + assertThat(createdTeam.isCreationWaiting()).isEqualTo(true); assertThat(createdTeam.isDeletionWaiting()).isEqualTo(false); assertThat(createdTeam.getCourse().getId()).isEqualTo(1L); } + @Test + @WithMockUser(username = "root", roles = {"ADMIN"}) + void 생성대기_스터디팀_목록조회_성공() { + TeamCreateRequest teamCreateRequest = new TeamCreateRequest(1L, "STUDY", "studyTeam", List.of(3L, 4L), 3L); + teamService.teamCreate(teamCreateRequest); + List teamResponses = teamService.creationWaitingStudyTeamList(); + assertThat(teamResponses.size()).isEqualTo(1); + assertThat(teamResponses.get(0).getName()).isEqualTo("studyTeam"); + } + + @Test + @WithMockUser(username = "root", roles = {"ADMIN"}) + void 스터디팀_생성승인_실패_팀없음() { + TeamCreateRequest teamCreateRequest = new TeamCreateRequest(1L, "STUDY", "studyTeam", List.of(3L, 4L), 3L); + teamService.teamCreate(teamCreateRequest); + assertThat( + assertThrows(AppException.class, () -> teamService.studyTeamCreationApprove(new TeamApprovalUpdateRequest(2L))).getErrorCode() + ).isEqualTo(ErrorCode.TEAM_NOT_FOUND); + } + + @Test + @WithMockUser(username = "root", roles = {"ADMIN"}) + void 스터디팀_생성승인_실패_대기중아님() { + TeamCreateRequest teamCreateRequest = new TeamCreateRequest(1L, "STUDY", "studyTeam", List.of(3L, 4L), 3L); + teamService.teamCreate(teamCreateRequest); + teamService.studyTeamCreationApprove(new TeamApprovalUpdateRequest(1L)); + assertThat( + assertThrows(AppException.class, () -> teamService.studyTeamCreationApprove(new TeamApprovalUpdateRequest(1L))).getErrorCode() + ).isEqualTo(ErrorCode.TEAM_NOT_WAITING); + } + @Test + @WithMockUser(username = "root", roles = {"ADMIN"}) + void 스터디팀_생성승인_성공() { + TeamCreateRequest teamCreateRequest = new TeamCreateRequest(1L, "STUDY", "studyTeam", List.of(3L, 4L), 3L); + teamService.teamCreate(teamCreateRequest); + assertThat(teamRepository.findById(1L).get().isCreationWaiting()).isEqualTo(true); + teamService.studyTeamCreationApprove(new TeamApprovalUpdateRequest(1L)); + assertThat(teamRepository.findById(1L).get().isCreationWaiting()).isEqualTo(false); + } }