Skip to content

Commit

Permalink
test: #77 스터디 팀 생성 관련 테스트 코드 작성
Browse files Browse the repository at this point in the history
  • Loading branch information
power-minu committed Oct 22, 2024
1 parent ead9a8e commit d4b1f7f
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 11 deletions.
Original file line number Diff line number Diff line change
@@ -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가 누락되었습니다.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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()

);
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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"})
Expand All @@ -84,29 +93,94 @@ 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()
).isEqualTo(ErrorCode.USER_NOT_FOUND);
}

@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<TeamResponse> 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);
}

}

0 comments on commit d4b1f7f

Please sign in to comment.