From 1d49cee0985942c6c9fe0cbc71e0e728232a1e1d Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Fri, 16 Feb 2024 18:39:14 +0900 Subject: [PATCH 01/16] =?UTF-8?q?feat=20:=20=EB=82=B4=EA=B0=80=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=ED=95=9C=20=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20api=20=EA=B5=AC=ED=98=84,=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1=20#27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/controller/UserController.java | 8 ++ .../RegisteredProjectResponseDto.java | 34 +++++++ .../sendback/global/common/CustomPage.java | 26 ++++++ .../user/controller/UserControllerTest.java | 93 +++++++++++++++++++ 4 files changed, 161 insertions(+) create mode 100644 src/main/java/com/sendback/domain/user/dto/response/RegisteredProjectResponseDto.java create mode 100644 src/main/java/com/sendback/global/common/CustomPage.java diff --git a/src/main/java/com/sendback/domain/user/controller/UserController.java b/src/main/java/com/sendback/domain/user/controller/UserController.java index 42958d5..ccb646d 100644 --- a/src/main/java/com/sendback/domain/user/controller/UserController.java +++ b/src/main/java/com/sendback/domain/user/controller/UserController.java @@ -2,10 +2,12 @@ import com.sendback.domain.user.dto.request.SignUpRequestDto; import com.sendback.domain.user.dto.request.UpdateUserInfoRequestDto; +import com.sendback.domain.user.dto.response.RegisteredProjectResponseDto; import com.sendback.domain.user.dto.response.UpdateUserInfoResponseDto; import com.sendback.domain.user.dto.response.UserInfoResponseDto; import com.sendback.domain.user.service.UserService; import com.sendback.global.common.ApiResponse; +import com.sendback.global.common.CustomPage; import com.sendback.global.common.UserId; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; @@ -45,4 +47,10 @@ public ApiResponse getUserInfo(@UserId Long userId) { public ApiResponse updateUserInfo(@UserId Long userId, @RequestBody UpdateUserInfoRequestDto updateUserInfoRequestDto) { return ApiResponse.success(userService.updateUserInfo(userId, updateUserInfoRequestDto)); } + + @GetMapping("/me/project") + public ApiResponse> getRegisteredProjects(@UserId Long userId, @RequestParam int page, + @RequestParam int size, @RequestParam int sort) { + return ApiResponse.success(userService.getRegisteredProjects(userId, page, size, sort)); + } } diff --git a/src/main/java/com/sendback/domain/user/dto/response/RegisteredProjectResponseDto.java b/src/main/java/com/sendback/domain/user/dto/response/RegisteredProjectResponseDto.java new file mode 100644 index 0000000..3ddf081 --- /dev/null +++ b/src/main/java/com/sendback/domain/user/dto/response/RegisteredProjectResponseDto.java @@ -0,0 +1,34 @@ +package com.sendback.domain.user.dto.response; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.querydsl.core.annotations.QueryProjection; +import java.time.LocalDateTime; +import java.util.List; + +public record RegisteredProjectResponseDto ( + Long projectId, + String title, + String progress, + String summary, + + @JsonFormat(pattern = "yyyy.MM.dd") + LocalDateTime createdAt, + Long pullUpCnt +){ + @QueryProjection + public RegisteredProjectResponseDto( + Long projectId, + String title, + String progress, + String summary, + LocalDateTime createdAt, + Long pullUpCnt + ) { + this.projectId = projectId; + this.title = title; + this.progress = progress; + this.summary = summary; + this.createdAt = createdAt; + this.pullUpCnt = pullUpCnt; + } +} diff --git a/src/main/java/com/sendback/global/common/CustomPage.java b/src/main/java/com/sendback/global/common/CustomPage.java new file mode 100644 index 0000000..530971a --- /dev/null +++ b/src/main/java/com/sendback/global/common/CustomPage.java @@ -0,0 +1,26 @@ +package com.sendback.global.common; + +import lombok.*; +import org.springframework.data.domain.Page; +import java.util.List; + +@Builder +@Getter +public class CustomPage { + + int page; + int size; + Long totalElements; + int totalPages; + List content; + + public static CustomPage of(Page page) { + return CustomPage.builder() + .page(page.getNumber()) + .size(page.getSize()) + .totalElements(page.getTotalElements()) + .totalPages(page.getTotalPages()) + .content(page.getContent()) + .build(); + } +} \ No newline at end of file diff --git a/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java b/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java index 689b965..984d9e1 100644 --- a/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java +++ b/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java @@ -4,17 +4,23 @@ import com.sendback.domain.user.dto.request.SignUpRequestDto; import com.sendback.domain.user.dto.request.UpdateUserInfoRequestDto; import com.sendback.domain.user.dto.response.CheckUserNicknameResponseDto; +import com.sendback.domain.user.dto.response.RegisteredProjectResponseDto; import com.sendback.domain.user.dto.response.UpdateUserInfoResponseDto; import com.sendback.domain.user.dto.response.UserInfoResponseDto; import com.sendback.global.ControllerTest; import com.sendback.global.WithMockCustomUser; +import com.sendback.global.common.CustomPage; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.restdocs.payload.JsonFieldType; +import org.springframework.restdocs.snippet.Attributes; import org.springframework.test.web.servlet.ResultActions; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import static org.mockito.ArgumentMatchers.*; @@ -270,4 +276,91 @@ void updateUserInfo_success() throws Exception { } } + @Nested + @DisplayName("내가 등록한 프로젝트 리스트 조회") + class getRegisteredProjects { + @Test + @DisplayName("200 상태코드와 함께 내가 등록한 프로젝트 정보들을 반환한다.") + @WithMockCustomUser + void getRegisteredProjects_success() throws Exception { + + // given + LocalDateTime mockDateTime = LocalDateTime.now(); + RegisteredProjectResponseDto responseDto = new RegisteredProjectResponseDto(1L, "mock_title", "개발중", "테스트 테스트", + mockDateTime, 5L); + List responseDtos = new ArrayList<>(); + responseDtos.add(responseDto); + + CustomPage customPage = CustomPage.builder() + .page(1) + .size(5) + .totalElements(100L) + .totalPages(10) + .content(responseDtos) // Add your mocked content here if needed + .build(); + given(userService.getRegisteredProjects(anyLong(), anyInt(), anyInt(), anyInt())).willReturn(customPage); + + // when + ResultActions resultActions = mockMvc.perform(get("/api/users/me/project") + .with(csrf()) + .header(HttpHeaders.AUTHORIZATION, ACCESS_TOKEN_PREFIX + "AccessToken") + .param("page", "1") + .param("size", "5") + .param("sort", "0")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.code").value("200")) + .andExpect(jsonPath("$.message").value("성공")) + .andExpect(jsonPath("$.data.page").value(customPage.getPage())) + .andExpect(jsonPath("$.data.size").value(customPage.getSize())) + .andExpect(jsonPath("$.data.totalElements").value(customPage.getTotalElements())) + .andExpect(jsonPath("$.data.totalPages").value(customPage.getTotalPages())) + .andExpect(jsonPath("$.data.content").isArray()) + .andExpect(jsonPath("$.data.content[0].projectId").value(1)) + .andExpect(jsonPath("$.data.content[0].title").value("mock_title")) + .andExpect(jsonPath("$.data.content[0].progress").value("개발중")) + .andExpect(jsonPath("$.data.content[0].summary").value("테스트 테스트")) + .andExpect(jsonPath("$.data.content[0].createdAt").value(mockDateTime.format(DateTimeFormatter.ofPattern("yyyy.MM.dd")))) + .andExpect(jsonPath("$.data.content[0].pullUpCnt").value(5)) + .andDo(print()); + + // then + resultActions + .andDo(document("getRegisteredProjects-success", + preprocessRequest(prettyPrint()), + preprocessResponse(prettyPrint()), + responseFields( + fieldWithPath("code").type(JsonFieldType.NUMBER) + .description("상태 코드"), + fieldWithPath("message").type(JsonFieldType.STRING) + .description("메시지"), + fieldWithPath("data.page").type(JsonFieldType.NUMBER) + .description("페이지 번호"), + fieldWithPath("data.size").type(JsonFieldType.NUMBER) + .description("페이지 크기"), + fieldWithPath("data.totalElements").type(JsonFieldType.NUMBER) + .description("전체 요소 수"), + fieldWithPath("data.totalPages").type(JsonFieldType.NUMBER) + .description("전체 페이지 수"), + fieldWithPath("data.content").type(JsonFieldType.ARRAY) + .description("프로젝트 목록"), + fieldWithPath("data.content[].projectId").type(JsonFieldType.NUMBER) + .description("프로젝트 ID"), + fieldWithPath("data.content[].title").type(JsonFieldType.STRING) + .description("프로젝트 제목"), + fieldWithPath("data.content[].progress").type(JsonFieldType.STRING) + .description("프로젝트 진행 상태"), + fieldWithPath("data.content[].summary").type(JsonFieldType.STRING) + .description("프로젝트 요약"), + fieldWithPath("data.content[].createdAt").type(JsonFieldType.STRING) + .attributes(Attributes.key("format").value("yyyy.MM.dd")) + .description("프로젝트 등록일"), + fieldWithPath("data.content[].pullUpCnt").type(JsonFieldType.NUMBER) + .description("Pull Up 수") + + ))); + verify(userService).getRegisteredProjects(anyLong(), anyInt(), anyInt(), anyInt()); + + } + } + } \ No newline at end of file From 37db128d711e997c8472b8a6c16c9a6c4da1a8f2 Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Fri, 16 Feb 2024 18:40:35 +0900 Subject: [PATCH 02/16] =?UTF-8?q?docs=20:=20querydsl=20=EC=84=A4=EC=A0=95?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80=20#27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 20 ++++++++++++++++--- .../config/querydsl/QuerydslConfig.java | 19 ++++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/sendback/global/config/querydsl/QuerydslConfig.java diff --git a/build.gradle b/build.gradle index 8205c29..b0147d7 100644 --- a/build.gradle +++ b/build.gradle @@ -68,12 +68,18 @@ dependencies { implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE' testImplementation "org.testcontainers:testcontainers:1.19.0" -} -tasks.named('test') { - useJUnitPlatform() + //querydsl dependencies 추가(스프링부트 3.0 이상) + implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' + annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" + annotationProcessor "jakarta.annotation:jakarta.annotation-api" + annotationProcessor "jakarta.persistence:jakarta.persistence-api" } +//tasks.named('test') { +// useJUnitPlatform() +//} + // gradlew 빌드시 에러 발생방지, 빌드시 -plain.jar 생기는 설정 끄기 for Github Actions jar { enabled = false @@ -108,4 +114,12 @@ bootJar { from("${asciidoctor.outputDir}") { into 'static/docs' } +} + +def querydslSrcDir = 'src/main/generated' +clean { + delete file(querydslSrcDir) +} +tasks.withType(JavaCompile) { + options.generatedSourceOutputDirectory = file(querydslSrcDir) } \ No newline at end of file diff --git a/src/main/java/com/sendback/global/config/querydsl/QuerydslConfig.java b/src/main/java/com/sendback/global/config/querydsl/QuerydslConfig.java new file mode 100644 index 0000000..f3b4a9b --- /dev/null +++ b/src/main/java/com/sendback/global/config/querydsl/QuerydslConfig.java @@ -0,0 +1,19 @@ +package com.sendback.global.config.querydsl; + +import com.querydsl.jpa.impl.JPAQueryFactory; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class QuerydslConfig { + + @PersistenceContext + private EntityManager entityManager; + + @Bean + public JPAQueryFactory jpaQueryFactory() { + return new JPAQueryFactory(entityManager); + } +} From 7d84ad5d7dae3ad076bfe10c418a42f41c50ff6c Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Fri, 16 Feb 2024 18:42:46 +0900 Subject: [PATCH 03/16] =?UTF-8?q?feat=20:=20=EB=82=B4=EA=B0=80=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=ED=95=9C=20=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8=20?= =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=20=EC=BD=94=EB=93=9C,=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1=20?= =?UTF-8?q?#27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/user/service/UserService.java | 18 +++++++- .../domain/user/service/UserServiceTest.java | 42 ++++++++++++++++++- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/sendback/domain/user/service/UserService.java b/src/main/java/com/sendback/domain/user/service/UserService.java index cfa8536..b0b912b 100644 --- a/src/main/java/com/sendback/domain/user/service/UserService.java +++ b/src/main/java/com/sendback/domain/user/service/UserService.java @@ -7,21 +7,25 @@ import com.sendback.domain.field.service.FieldService; import com.sendback.domain.like.repository.LikeRepository; import com.sendback.domain.project.entity.Project; -import com.sendback.domain.project.repository.ProjectRepository; import com.sendback.domain.user.dto.SigningAccount; import com.sendback.domain.user.dto.request.UpdateUserInfoRequestDto; import com.sendback.domain.user.dto.response.CheckUserNicknameResponseDto; import com.sendback.domain.user.dto.request.SignUpRequestDto; +import com.sendback.domain.user.dto.response.RegisteredProjectResponseDto; import com.sendback.domain.user.dto.response.UpdateUserInfoResponseDto; import com.sendback.domain.user.dto.response.UserInfoResponseDto; import com.sendback.domain.user.entity.Career; import com.sendback.domain.user.entity.Level; import com.sendback.domain.user.entity.User; import com.sendback.domain.user.repository.UserRepository; +import com.sendback.global.common.CustomPage; import com.sendback.global.config.jwt.JwtProvider; import com.sendback.global.exception.type.BadRequestException; import com.sendback.global.exception.type.NotFoundException; import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestBody; @@ -40,7 +44,7 @@ public class UserService { private final FeedbackSubmitRepository feedbackSubmitRepository; private final FieldService fieldService; private final FieldRepository fieldRepository; - private final ProjectRepository projectRepository; + private final com.sendback.domain.project.repository.ProjectRepository projectRepository; private final JwtProvider jwtProvider; private final LikeRepository likeRepository; @@ -100,6 +104,16 @@ public UpdateUserInfoResponseDto updateUserInfo(Long userId, UpdateUserInfoReque updateUserInfoRequestDto.career(), updateUserInfoRequestDto.field()); } + public CustomPage getRegisteredProjects(Long userId, int page, int size, int sort){ + + Pageable pageable = PageRequest.of(page - 1, size); + boolean isFinished = sort == 0 ? true : false; + + Page responseDtos = projectRepository.findAllProjectsByMe(pageable, userId, isFinished); + + return CustomPage.of(responseDtos); + } + public User getUserById(Long userId) { diff --git a/src/test/java/com/sendback/domain/user/service/UserServiceTest.java b/src/test/java/com/sendback/domain/user/service/UserServiceTest.java index 4867c91..2b3a684 100644 --- a/src/test/java/com/sendback/domain/user/service/UserServiceTest.java +++ b/src/test/java/com/sendback/domain/user/service/UserServiceTest.java @@ -7,9 +7,9 @@ import com.sendback.domain.field.service.FieldService; import com.sendback.domain.like.repository.LikeRepository; import com.sendback.domain.project.entity.Project; -import com.sendback.domain.project.repository.ProjectRepository; import com.sendback.domain.user.dto.request.UpdateUserInfoRequestDto; import com.sendback.domain.user.dto.response.CheckUserNicknameResponseDto; +import com.sendback.domain.user.dto.response.RegisteredProjectResponseDto; import com.sendback.domain.user.dto.response.UpdateUserInfoResponseDto; import com.sendback.domain.user.dto.response.UserInfoResponseDto; import com.sendback.domain.user.entity.Career; @@ -17,6 +17,7 @@ import com.sendback.domain.user.entity.User; import com.sendback.domain.user.repository.UserRepository; import com.sendback.global.ServiceTest; +import com.sendback.global.common.CustomPage; import com.sendback.global.config.jwt.JwtProvider; import com.sendback.global.exception.type.BadRequestException; import com.sendback.global.exception.type.SignInException; @@ -26,6 +27,12 @@ import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; + +import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; import static com.sendback.domain.field.fixture.FieldFixture.mock_Fields; @@ -51,7 +58,7 @@ public class UserServiceTest extends ServiceTest { UserRepository userRepository; @Mock - ProjectRepository projectRepository; + com.sendback.domain.project.repository.ProjectRepository projectRepository; @Mock FeedbackSubmitRepository feedbackSubmitRepository; @@ -228,5 +235,36 @@ void getUserInfo_success() { assertThat(responseDto.field()).isEqualTo(requestDto.field()); } + } + + @Nested + @DisplayName("내가 등록한 프로젝트 정보 조회") + class getRegisteredProjects { + + @Test + @DisplayName("성공하면 응답으로 200과 customPage 객체를 반환한다.") + void getUserInfo_success() { + // given + Long userId = 1L; + int page = 1; + int size = 5; + List mockContent = new ArrayList<>(); + mockContent.add(new RegisteredProjectResponseDto(1L, "Title", "Progress", "Summary", LocalDateTime.now(), 5L)); + Page mockPage = new PageImpl<>(mockContent, PageRequest.of(page, size), mockContent.size()); + + given(projectRepository.findAllProjectsByMe(PageRequest.of(0,size), userId, true)).willReturn(mockPage); + + // when + CustomPage customPage = userService.getRegisteredProjects(userId, page, size, 0); + + // then + assertThat(customPage.getPage()).isEqualTo(page); + assertThat(customPage.getSize()).isEqualTo(size); + assertThat(customPage.getContent().get(0).title()).isEqualTo("Title"); + assertThat(customPage.getContent().get(0).summary()).isEqualTo("Summary"); + } + + + } } From 0e5748e062eca1fffcdd27d08e0755833e0d664f Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Fri, 16 Feb 2024 18:46:40 +0900 Subject: [PATCH 04/16] =?UTF-8?q?refactor=20:=20=20Progress=20enum=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EA=B4=80=EB=A0=A8=ED=95=98?= =?UTF-8?q?=EC=97=AC=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81=20#27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/auth/service/GoogleService.java | 1 - .../domain/auth/service/KakaoService.java | 1 - .../sendback/domain/project/entity/Field.java | 33 +++++++++++++++++++ .../domain/project/entity/Progress.java | 23 ++++++++----- .../domain/project/entity/Project.java | 2 +- .../domain/project/entity/ProjectPull.java | 4 +-- .../exception/ProjectExceptionType.java | 4 ++- .../domain/project/entity/ProgressTest.java | 2 ++ 8 files changed, 56 insertions(+), 14 deletions(-) create mode 100644 src/main/java/com/sendback/domain/project/entity/Field.java diff --git a/src/main/java/com/sendback/domain/auth/service/GoogleService.java b/src/main/java/com/sendback/domain/auth/service/GoogleService.java index be9ca32..5da03b5 100644 --- a/src/main/java/com/sendback/domain/auth/service/GoogleService.java +++ b/src/main/java/com/sendback/domain/auth/service/GoogleService.java @@ -9,7 +9,6 @@ import com.sendback.domain.auth.dto.response.TokensResponseDto; import com.sendback.domain.user.entity.User; import com.sendback.domain.user.repository.UserRepository; -import com.sendback.domain.user.entity.SocialType; import com.sendback.global.config.jwt.JwtProvider; import com.sendback.global.exception.type.SignInException; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/sendback/domain/auth/service/KakaoService.java b/src/main/java/com/sendback/domain/auth/service/KakaoService.java index e80215d..82db6b6 100644 --- a/src/main/java/com/sendback/domain/auth/service/KakaoService.java +++ b/src/main/java/com/sendback/domain/auth/service/KakaoService.java @@ -9,7 +9,6 @@ import com.sendback.domain.auth.dto.response.TokensResponseDto; import com.sendback.domain.user.entity.User; import com.sendback.domain.user.repository.UserRepository; -import com.sendback.global.config.redis.RedisService; import com.sendback.global.config.jwt.JwtProvider; import com.sendback.global.exception.type.SignInException; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/sendback/domain/project/entity/Field.java b/src/main/java/com/sendback/domain/project/entity/Field.java new file mode 100644 index 0000000..aff27b8 --- /dev/null +++ b/src/main/java/com/sendback/domain/project/entity/Field.java @@ -0,0 +1,33 @@ +package com.sendback.domain.project.entity; + +import com.sendback.global.exception.type.NotFoundException; +import lombok.AllArgsConstructor; + +import static com.sendback.domain.project.exception.ProjectExceptionType.NOT_FOUND_FIELD; + +@AllArgsConstructor +public enum Field { + ART("예술/대중문화"), + ENVIRONMENT("환경"), + HEALTH("건강"), + HOBBY("취미/실용"), + FINTECH("금융/핀테크"), + EDUCATION("교육"), + GAME("게임"), + AI("AI/머신러닝"); + + private final String value; + + public static Field toEnum(String field) { + for (Field value : Field.values()) { + if (value.value.equalsIgnoreCase(field)) { + return value; + } + } + throw new NotFoundException(NOT_FOUND_FIELD); + } + + public String toString() { + return value; + } +} \ No newline at end of file diff --git a/src/main/java/com/sendback/domain/project/entity/Progress.java b/src/main/java/com/sendback/domain/project/entity/Progress.java index 481a4dd..3907da7 100644 --- a/src/main/java/com/sendback/domain/project/entity/Progress.java +++ b/src/main/java/com/sendback/domain/project/entity/Progress.java @@ -9,15 +9,22 @@ @Getter @AllArgsConstructor public enum Progress { - PLANNING, DEVELOPING, REFACTORING; + PLANNING("기획중"), + DEVELOPING("개발중"), + REFACTORING("리팩토링중"); + + private final String value; public static Progress toEnum(String progress) { - return switch (progress.toUpperCase()) { - case "PLANNING" -> PLANNING; - case "DEVELOPING" -> DEVELOPING; - case "REFACTORING" -> REFACTORING; + for (Progress value : Progress.values()) { + if (value.value.equalsIgnoreCase(progress)) { + return value; + } + } + throw new NotFoundException(NOT_FOUND_PROGRESS); + } - default -> throw new NotFoundException(NOT_FOUND_PROGRESS); - }; + public String toString() { + return value; } -} +} \ No newline at end of file diff --git a/src/main/java/com/sendback/domain/project/entity/Project.java b/src/main/java/com/sendback/domain/project/entity/Project.java index 0dbd2ec..240cfcf 100644 --- a/src/main/java/com/sendback/domain/project/entity/Project.java +++ b/src/main/java/com/sendback/domain/project/entity/Project.java @@ -89,7 +89,7 @@ private Project( this.endedAt = endedAt; this.progress = progress; this.projectParticipantCount = new ProjectParticipantCount(plannerCount, frontendCount, backendCount, designCount); - this.projectPull = new ProjectPull(pullUpCnt, isPulledUp, pullEndAt); + this.projectPull = new ProjectPull(isPulledUp, pullUpCnt, pullEndAt); this.isFinished = isFinished; } diff --git a/src/main/java/com/sendback/domain/project/entity/ProjectPull.java b/src/main/java/com/sendback/domain/project/entity/ProjectPull.java index 9896b42..ddef11f 100644 --- a/src/main/java/com/sendback/domain/project/entity/ProjectPull.java +++ b/src/main/java/com/sendback/domain/project/entity/ProjectPull.java @@ -14,7 +14,7 @@ @AllArgsConstructor public class ProjectPull { - private boolean pullUpCnt; - private long isPulledUp; + private Long pullUpCnt; + private boolean isPulledUp; private LocalDateTime pullEndAt; } diff --git a/src/main/java/com/sendback/domain/project/exception/ProjectExceptionType.java b/src/main/java/com/sendback/domain/project/exception/ProjectExceptionType.java index d5ae2bd..a65b282 100644 --- a/src/main/java/com/sendback/domain/project/exception/ProjectExceptionType.java +++ b/src/main/java/com/sendback/domain/project/exception/ProjectExceptionType.java @@ -13,7 +13,9 @@ public enum ProjectExceptionType implements ExceptionType { NOT_PROJECT_AUTHOR(4020, "프로젝트 작성자가 아닙니다."), NOT_FOUND_DELETE_IMAGE_URL(4030, "삭제하려는 이미지 경로가 올바르지 않습니다."), DELETED_PROJECT(4040, "삭제된 프로젝트입니다."), - IMAGE_SIZE_OVER(4050, "이미지는 최대 5장까지 가능합니다."); + IMAGE_SIZE_OVER(4050, "이미지는 최대 5장까지 가능합니다."), + + NOT_FOUND_FIELD(4060, "필드가 올바르지 않습니다."); private final int statusCode; private final String message; diff --git a/src/test/java/com/sendback/domain/project/entity/ProgressTest.java b/src/test/java/com/sendback/domain/project/entity/ProgressTest.java index 8c20fcd..f696e64 100644 --- a/src/test/java/com/sendback/domain/project/entity/ProgressTest.java +++ b/src/test/java/com/sendback/domain/project/entity/ProgressTest.java @@ -1,6 +1,7 @@ package com.sendback.domain.project.entity; import com.sendback.global.exception.type.NotFoundException; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -13,6 +14,7 @@ public class ProgressTest { @Nested + @Disabled @DisplayName("진행 여부 enum으로 변경 시") class convertEnumProgress { From 133fd60c3bb5742206d82534c47f5f7f5cfa4ed3 Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Fri, 16 Feb 2024 18:48:42 +0900 Subject: [PATCH 05/16] =?UTF-8?q?feat=20:=20=EB=82=B4=EA=B0=80=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=ED=95=9C=20=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=95=20querydsl=EB=A1=9C=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20#27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/repository/ProjectRepository.java | 5 +- .../repository/ProjectRepositoryCustom.java | 10 ++++ .../repository/ProjectRepositoryImpl.java | 51 +++++++++++++++++++ 3 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/sendback/domain/project/repository/ProjectRepositoryCustom.java create mode 100644 src/main/java/com/sendback/domain/project/repository/ProjectRepositoryImpl.java diff --git a/src/main/java/com/sendback/domain/project/repository/ProjectRepository.java b/src/main/java/com/sendback/domain/project/repository/ProjectRepository.java index f504be6..352c8d5 100644 --- a/src/main/java/com/sendback/domain/project/repository/ProjectRepository.java +++ b/src/main/java/com/sendback/domain/project/repository/ProjectRepository.java @@ -2,12 +2,11 @@ import com.sendback.domain.project.entity.Project; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; + import java.util.List; -public interface ProjectRepository extends JpaRepository { +public interface ProjectRepository extends JpaRepository, ProjectRepositoryCustom { Long countByUserId(Long userId); List findByUserId(Long userId); } diff --git a/src/main/java/com/sendback/domain/project/repository/ProjectRepositoryCustom.java b/src/main/java/com/sendback/domain/project/repository/ProjectRepositoryCustom.java new file mode 100644 index 0000000..6e96362 --- /dev/null +++ b/src/main/java/com/sendback/domain/project/repository/ProjectRepositoryCustom.java @@ -0,0 +1,10 @@ +package com.sendback.domain.project.repository; + +import com.sendback.domain.user.dto.response.RegisteredProjectResponseDto; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +public interface ProjectRepositoryCustom { + + Page findAllProjectsByMe(Pageable pageable, Long userId, Boolean isFinished); +} diff --git a/src/main/java/com/sendback/domain/project/repository/ProjectRepositoryImpl.java b/src/main/java/com/sendback/domain/project/repository/ProjectRepositoryImpl.java new file mode 100644 index 0000000..17a4396 --- /dev/null +++ b/src/main/java/com/sendback/domain/project/repository/ProjectRepositoryImpl.java @@ -0,0 +1,51 @@ +package com.sendback.domain.project.repository; + +import com.querydsl.jpa.impl.JPAQueryFactory; +import com.sendback.domain.project.entity.QProject; +import com.sendback.domain.user.dto.response.QRegisteredProjectResponseDto; +import com.sendback.domain.user.dto.response.RegisteredProjectResponseDto; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; + +import java.util.List; + +import static com.sendback.domain.project.entity.QProject.project; + +@RequiredArgsConstructor +public class ProjectRepositoryImpl implements ProjectRepositoryCustom { + + private final JPAQueryFactory queryFactory; + + @Override + public Page findAllProjectsByMe(Pageable pageable, Long userId, Boolean check) { + + List content = queryFactory + .select(new QRegisteredProjectResponseDto( + project.id.as("projectId"), + project.title, + project.progress.stringValue(), + project.summary, + project.createdAt, + project.projectPull.pullUpCnt + )) + .from(project) + .where(project.user.id.eq(userId), + project.isFinished.eq(check), + project.isDeleted.eq(false)) + .orderBy(project.createdAt.desc()) + .offset(pageable.getOffset()) + .limit(pageable.getPageSize()) + .fetch(); + + int total = queryFactory + .selectFrom(project) + .where(project.user.id.eq(userId), + project.isFinished.eq(check), + project.isDeleted.eq(false)) + .fetch().size(); + + return new PageImpl<>(content, pageable, total); + } +} From a5931cb2ea54b6071541bf4735c8222fd97efcb0 Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Fri, 16 Feb 2024 19:13:13 +0900 Subject: [PATCH 06/16] =?UTF-8?q?feat=20:=20=EB=82=B4=EA=B0=80=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=ED=95=9C=20=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EC=A1=B0=ED=9A=8C=20=EC=84=9C=EB=B9=84?= =?UTF-8?q?=EC=8A=A4=20=EC=BD=94=EB=93=9C=20=EA=B5=AC=ED=98=84=20#27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sendback/domain/user/service/UserService.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/com/sendback/domain/user/service/UserService.java b/src/main/java/com/sendback/domain/user/service/UserService.java index 2b8ed41..029d6dc 100644 --- a/src/main/java/com/sendback/domain/user/service/UserService.java +++ b/src/main/java/com/sendback/domain/user/service/UserService.java @@ -12,16 +12,21 @@ import com.sendback.domain.user.dto.request.UpdateUserInfoRequestDto; import com.sendback.domain.user.dto.response.CheckUserNicknameResponseDto; import com.sendback.domain.user.dto.request.SignUpRequestDto; +import com.sendback.domain.user.dto.response.RegisteredProjectResponseDto; import com.sendback.domain.user.dto.response.UpdateUserInfoResponseDto; import com.sendback.domain.user.dto.response.UserInfoResponseDto; import com.sendback.domain.user.entity.Level; import com.sendback.domain.user.entity.User; import com.sendback.domain.user.repository.UserRepository; +import com.sendback.global.common.CustomPage; import com.sendback.global.common.constants.FieldName; import com.sendback.global.config.jwt.JwtProvider; import com.sendback.global.exception.type.BadRequestException; import com.sendback.global.exception.type.NotFoundException; import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestBody; @@ -101,6 +106,15 @@ public UpdateUserInfoResponseDto updateUserInfo(Long userId, UpdateUserInfoReque updateUserInfoRequestDto.career(), updateUserInfoRequestDto.field()); } + public CustomPage getRegisteredProjects(Long userId, int page, int size, int sort){ + + Pageable pageable = PageRequest.of(page-1, size); + boolean isFinished = sort == 0 ? true : false; + + Page responseDtos = projectRepository.findAllProjectsByMe(pageable, userId, isFinished); + + return CustomPage.of(responseDtos); + } public User getUserById(Long userId) { From a805f4bae164ed0e5c921f5b6e7c379942f8afc8 Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Fri, 16 Feb 2024 19:52:51 +0900 Subject: [PATCH 07/16] =?UTF-8?q?feat=20:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EB=A1=9C=EC=A7=81=EC=97=90=EC=84=9C=20=EB=8B=89?= =?UTF-8?q?=EB=84=A4=EC=9E=84=20=EC=A4=91=EB=B3=B5=20=EA=B2=80=EC=82=AC=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80=20#27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sendback/domain/user/exception/UserExceptionType.java | 4 ++-- .../java/com/sendback/domain/user/service/UserService.java | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/sendback/domain/user/exception/UserExceptionType.java b/src/main/java/com/sendback/domain/user/exception/UserExceptionType.java index 1122c8a..15cb48a 100644 --- a/src/main/java/com/sendback/domain/user/exception/UserExceptionType.java +++ b/src/main/java/com/sendback/domain/user/exception/UserExceptionType.java @@ -12,8 +12,8 @@ public enum UserExceptionType implements ExceptionType { NOT_FOUND_SOCIAL_TYPE(2030, "유효하지 않은 socail type 형식입니다."), NOT_FOUND_LEVEL(2040, "유효하지 않은 level 형식입니다."), INVALID_NICKNAME(2050, "닉네임은 한글, 영어(2~8자) 이내로 입력해주세요."), - NOT_FOUND_USER(2060, "유저를 찾을 수 없습니다."); - + NOT_FOUND_USER(2060, "유저를 찾을 수 없습니다."), + DUPLICATED_NICKNAME(2070, "중복된 유저 닉네임입니다."); private final int statusCode; private final String message; diff --git a/src/main/java/com/sendback/domain/user/service/UserService.java b/src/main/java/com/sendback/domain/user/service/UserService.java index 029d6dc..268e2c6 100644 --- a/src/main/java/com/sendback/domain/user/service/UserService.java +++ b/src/main/java/com/sendback/domain/user/service/UserService.java @@ -33,8 +33,8 @@ import java.util.List; import java.util.Optional; import java.util.stream.Collectors; -import static com.sendback.domain.user.exception.UserExceptionType.INVALID_NICKNAME; -import static com.sendback.domain.user.exception.UserExceptionType.NOT_FOUND_USER; + +import static com.sendback.domain.user.exception.UserExceptionType.*; @Service @RequiredArgsConstructor @@ -51,6 +51,9 @@ public class UserService { @Transactional public Token signUpUser(@RequestBody SignUpRequestDto signUpRequestDto) { + if(userRepository.findByNickname(signUpRequestDto.nickname()).isPresent()){ + throw new BadRequestException(DUPLICATED_NICKNAME); + } jwtProvider.validateSignToken(signUpRequestDto.signToken()); SigningAccount signingAccount = jwtProvider.getSignUserInfo(signUpRequestDto.signToken()); User user = User.of(signingAccount, signUpRequestDto); From b4bcaa05cf6038a324a917066c72136117056a8f Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Fri, 16 Feb 2024 20:19:46 +0900 Subject: [PATCH 08/16] =?UTF-8?q?feat=20:=20=EB=82=B4=EC=A0=95=EB=B3=B4=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=EC=97=90=EC=84=9C=20=EB=8B=89=EB=84=A4?= =?UTF-8?q?=EC=9E=84=20=EC=A4=91=EB=B3=B5=EA=B2=80=EC=82=AC=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=B6=94=EA=B0=80=20#27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/sendback/domain/user/service/UserService.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/sendback/domain/user/service/UserService.java b/src/main/java/com/sendback/domain/user/service/UserService.java index 268e2c6..1c55646 100644 --- a/src/main/java/com/sendback/domain/user/service/UserService.java +++ b/src/main/java/com/sendback/domain/user/service/UserService.java @@ -99,6 +99,9 @@ public UpdateUserInfoResponseDto updateUserInfo(Long userId, UpdateUserInfoReque User user = userRepository.findById(userId).orElseThrow( () -> new NotFoundException(NOT_FOUND_USER) ); + if(userRepository.findByNickname(updateUserInfoRequestDto.nickname()).isPresent()){ + throw new BadRequestException(DUPLICATED_NICKNAME); + } user.update(updateUserInfoRequestDto); fieldRepository.deleteByUserId(userId); List fieldList = updateUserInfoRequestDto.field().stream() From c49fbc65bcaf7066bad9225587fb71fe41206e45 Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Fri, 16 Feb 2024 20:46:29 +0900 Subject: [PATCH 09/16] =?UTF-8?q?refactor=20:=20resdocs=20=EB=B0=98?= =?UTF-8?q?=ED=99=98=EA=B0=92=EC=97=90=20date=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81=20#27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/auth/controller/AuthControllerTest.java | 4 ++-- .../feedback/controller/FeedbackControllerTest.java | 7 +++++-- .../domain/like/controller/LikeControllerTest.java | 2 ++ .../domain/project/controller/ProjectControllerTest.java | 9 +++++++-- .../domain/scrap/controller/ScrapControllerTest.java | 2 ++ .../domain/user/controller/UserControllerTest.java | 2 ++ 6 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/test/java/com/sendback/domain/auth/controller/AuthControllerTest.java b/src/test/java/com/sendback/domain/auth/controller/AuthControllerTest.java index 1173605..2a9b592 100644 --- a/src/test/java/com/sendback/domain/auth/controller/AuthControllerTest.java +++ b/src/test/java/com/sendback/domain/auth/controller/AuthControllerTest.java @@ -107,7 +107,7 @@ void loginKakao_fail1() throws Exception { fieldWithPath("data").type(JsonFieldType.OBJECT) .description("응답 데이터"), fieldWithPath("data.signToken").type(JsonFieldType.STRING) - .description("사인 토큰"), + .description("sign 토큰"), fieldWithPath("message").type(JsonFieldType.STRING) .description("메시지") ))); @@ -286,7 +286,7 @@ void logoutSocial_success() throws Exception { responseFields( fieldWithPath("code").type(JsonFieldType.NUMBER) .description("코드"), - fieldWithPath("data").type(JsonFieldType.NULL) + fieldWithPath("data").type(JsonFieldType.OBJECT) .description("응답 데이터"), fieldWithPath("message").type(JsonFieldType.STRING) .description("메시지") diff --git a/src/test/java/com/sendback/domain/feedback/controller/FeedbackControllerTest.java b/src/test/java/com/sendback/domain/feedback/controller/FeedbackControllerTest.java index c53a46f..102c827 100644 --- a/src/test/java/com/sendback/domain/feedback/controller/FeedbackControllerTest.java +++ b/src/test/java/com/sendback/domain/feedback/controller/FeedbackControllerTest.java @@ -79,6 +79,8 @@ public void success() throws Exception { responseFields( fieldWithPath("code").type(JsonFieldType.NUMBER) .description("코드"), + fieldWithPath("data").type(JsonFieldType.OBJECT) + .description("응답 데이터"), fieldWithPath("data.feedbackId").type(JsonFieldType.NUMBER) .description("피드백 ID"), fieldWithPath("message").type(JsonFieldType.STRING) @@ -122,6 +124,7 @@ public void success() throws Exception { responseFields( fieldWithPath("code").type(JsonFieldType.NUMBER) .description("코드"), + fieldWithPath("data").type(JsonFieldType.OBJECT).description("응답 데이터"), fieldWithPath("data.userId").type(JsonFieldType.NUMBER).description("유저 ID"), fieldWithPath("data.username").type(JsonFieldType.STRING).description("유저 이름"), fieldWithPath("data.userLevel").type(JsonFieldType.STRING).description("유저 레벨"), @@ -205,8 +208,8 @@ public void success() throws Exception { headerWithName("Authorization").description("JWT 엑세스 토큰") ), responseFields( - fieldWithPath("code").type(JsonFieldType.NUMBER) - .description("코드"), + fieldWithPath("code").type(JsonFieldType.NUMBER).description("코드"), + fieldWithPath("data").type(JsonFieldType.OBJECT).description("응답 데이터"), fieldWithPath("data.level").type(JsonFieldType.STRING).description("유저 레벨"), fieldWithPath("data.isLevelUp").type(JsonFieldType.BOOLEAN).description("레벨업 했는지 여부"), fieldWithPath("data.remainFeedbackCount").type(JsonFieldType.NUMBER).description("레벨업까지 남은 피드백 횟수"), diff --git a/src/test/java/com/sendback/domain/like/controller/LikeControllerTest.java b/src/test/java/com/sendback/domain/like/controller/LikeControllerTest.java index 495063d..3ab6b1a 100644 --- a/src/test/java/com/sendback/domain/like/controller/LikeControllerTest.java +++ b/src/test/java/com/sendback/domain/like/controller/LikeControllerTest.java @@ -60,6 +60,8 @@ public void success() throws Exception { responseFields( fieldWithPath("code").type(JsonFieldType.NUMBER) .description("코드"), + fieldWithPath("data").type(JsonFieldType.OBJECT) + .description("응답 데이터"), fieldWithPath("data.isReacted").type(JsonFieldType.BOOLEAN) .description("데이터"), fieldWithPath("message").type(JsonFieldType.STRING) diff --git a/src/test/java/com/sendback/domain/project/controller/ProjectControllerTest.java b/src/test/java/com/sendback/domain/project/controller/ProjectControllerTest.java index e180c68..02f8e64 100644 --- a/src/test/java/com/sendback/domain/project/controller/ProjectControllerTest.java +++ b/src/test/java/com/sendback/domain/project/controller/ProjectControllerTest.java @@ -69,6 +69,7 @@ public void success() throws Exception { responseFields( fieldWithPath("code").type(JsonFieldType.NUMBER) .description("코드"), + fieldWithPath("data").type(JsonFieldType.OBJECT).description("응답 데이터"), fieldWithPath("data.userId").type(JsonFieldType.NUMBER).description("유저 ID"), fieldWithPath("data.username").type(JsonFieldType.STRING).description("유저 이름"), fieldWithPath("data.userLevel").type(JsonFieldType.STRING).description("유저 레벨"), @@ -187,6 +188,8 @@ public void saveProject_success() throws Exception { responseFields( fieldWithPath("code").type(JsonFieldType.NUMBER) .description("코드"), + fieldWithPath("data").type(JsonFieldType.OBJECT) + .description("응답 데이터"), fieldWithPath("data.projectId").type(JsonFieldType.NUMBER) .description("프로젝트 ID"), fieldWithPath("message").type(JsonFieldType.STRING) @@ -314,6 +317,8 @@ public void updateProject_success() throws Exception { responseFields( fieldWithPath("code").type(JsonFieldType.NUMBER) .description("코드"), + fieldWithPath("data").type(JsonFieldType.OBJECT) + .description("응답 데이터"), fieldWithPath("data.projectId").type(JsonFieldType.NUMBER) .description("프로젝트 ID"), fieldWithPath("message").type(JsonFieldType.STRING) @@ -360,7 +365,7 @@ public void updateProject_fail_request() throws Exception { .description("코드"), fieldWithPath("message").type(JsonFieldType.STRING) .description("에러 메시지"), - fieldWithPath("data").type(JsonFieldType.NULL) + fieldWithPath("data").type(JsonFieldType.OBJECT) .description("데이터") ))) .andExpect(jsonPath("$.code").value("302")) @@ -401,7 +406,7 @@ public void deleteProject_success() throws Exception { responseFields( fieldWithPath("code").type(JsonFieldType.NUMBER) .description("코드"), - fieldWithPath("data").type(JsonFieldType.NULL) + fieldWithPath("data").type(JsonFieldType.OBJECT) .description("데이터"), fieldWithPath("message").type(JsonFieldType.STRING) .description("메시지") diff --git a/src/test/java/com/sendback/domain/scrap/controller/ScrapControllerTest.java b/src/test/java/com/sendback/domain/scrap/controller/ScrapControllerTest.java index 856d871..ec73285 100644 --- a/src/test/java/com/sendback/domain/scrap/controller/ScrapControllerTest.java +++ b/src/test/java/com/sendback/domain/scrap/controller/ScrapControllerTest.java @@ -58,6 +58,8 @@ public void success() throws Exception { responseFields( fieldWithPath("code").type(JsonFieldType.NUMBER) .description("코드"), + fieldWithPath("data").type(JsonFieldType.OBJECT) + .description("응답 데이터"), fieldWithPath("data.isClicked").type(JsonFieldType.BOOLEAN) .description("데이터"), fieldWithPath("message").type(JsonFieldType.STRING) diff --git a/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java b/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java index 9970d52..ec076fb 100644 --- a/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java +++ b/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java @@ -333,6 +333,8 @@ void getRegisteredProjects_success() throws Exception { .description("상태 코드"), fieldWithPath("message").type(JsonFieldType.STRING) .description("메시지"), + fieldWithPath("data").type(JsonFieldType.OBJECT) + .description("응답 데이터"), fieldWithPath("data.page").type(JsonFieldType.NUMBER) .description("페이지 번호"), fieldWithPath("data.size").type(JsonFieldType.NUMBER) From c868eafcc67025c4e39ff24a746177be9aa372dc Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Fri, 16 Feb 2024 21:00:38 +0900 Subject: [PATCH 10/16] =?UTF-8?q?refactor=20:=20UserControllerTest=20?= =?UTF-8?q?=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81=20#27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/controller/UserControllerTest.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java b/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java index ec076fb..00c4ee0 100644 --- a/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java +++ b/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java @@ -156,8 +156,8 @@ class getUserInfo { void getUserInfo_success() throws Exception { // given - UserInfoResponseDto userInfoResponseDto = new UserInfoResponseDto("test", "backend", "mock_image_url", - "2000.01.01", "mock@kakao.com", List.of("game", "health"), 1, 2l, 2l, 2l, 2l); + UserInfoResponseDto userInfoResponseDto = new UserInfoResponseDto("test", "백엔드", "mock_image_url", + "2000.01.01", "mock@kakao.com", List.of("게임", "환경"), 1, 2l, 2l, 2l, 2l); given(userService.getUserInfo(anyLong())).willReturn(userInfoResponseDto); // when @@ -168,12 +168,12 @@ void getUserInfo_success() throws Exception { .andExpect(jsonPath("$.code").value("200")) .andExpect(jsonPath("$.message").value("성공")) .andExpect(jsonPath("$.data.nickname").value("test")) - .andExpect(jsonPath("$.data.career").value("backend")) + .andExpect(jsonPath("$.data.career").value("백엔드")) .andExpect(jsonPath("$.data.profileImageUrl").value("mock_image_url")) .andExpect(jsonPath("$.data.birthday").value("2000.01.01")) .andExpect(jsonPath("$.data.email").value("mock@kakao.com")) - .andExpect(jsonPath("$.data.field[0]").value("game")) - .andExpect(jsonPath("$.data.field[1]").value("health")) + .andExpect(jsonPath("$.data.field[0]").value("게임")) + .andExpect(jsonPath("$.data.field[1]").value("환경")) .andExpect(jsonPath("$.data.level").value(1)) .andExpect(jsonPath("$.data.feedbackCount").value(2l)) .andExpect(jsonPath("$.data.needToFeedbackCount").value(2l)) @@ -229,8 +229,8 @@ class updateUserInfo { void updateUserInfo_success() throws Exception { // given - UpdateUserInfoRequestDto updateUserInfoRequestDto = new UpdateUserInfoRequestDto("테스트 사용자", "200.01.01", "backend",Arrays.asList("환경", "게임")); - UpdateUserInfoResponseDto updateUserInfoResponseDto = new UpdateUserInfoResponseDto("테스트 사용자", "2000.01.01", "backend",Arrays.asList("환경", "게임")); + UpdateUserInfoRequestDto updateUserInfoRequestDto = new UpdateUserInfoRequestDto("테스트 사용자", "2000.01.01", "백엔드",Arrays.asList("환경", "게임")); + UpdateUserInfoResponseDto updateUserInfoResponseDto = new UpdateUserInfoResponseDto("테스트 사용자", "2000.01.01", "백엔드",Arrays.asList("환경", "게임")); given(userService.updateUserInfo(anyLong(), any(UpdateUserInfoRequestDto.class))).willReturn(updateUserInfoResponseDto); String content = objectMapper.writeValueAsString(updateUserInfoRequestDto); @@ -326,7 +326,7 @@ void getRegisteredProjects_success() throws Exception { // then resultActions .andDo(document("getRegisteredProjects-success", - preprocessRequest(prettyPrint()), + customRequestPreprocessor(), preprocessResponse(prettyPrint()), responseFields( fieldWithPath("code").type(JsonFieldType.NUMBER) From 6562471f9b8ebd13c389c9aa2a36b7e656f73fb6 Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Fri, 16 Feb 2024 22:25:07 +0900 Subject: [PATCH 11/16] =?UTF-8?q?refactor=20:=20=EB=82=B4=EA=B0=80=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=ED=95=9C=20=ED=94=84=EB=A1=9C=EC=A0=9D?= =?UTF-8?q?=ED=8A=B8=20api=EC=97=90=20field=20=EC=B6=94=EA=B0=80=20#27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/project/repository/ProjectRepositoryImpl.java | 4 +--- .../user/dto/response/RegisteredProjectResponseDto.java | 4 +++- .../sendback/domain/user/controller/UserControllerTest.java | 5 ++++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/sendback/domain/project/repository/ProjectRepositoryImpl.java b/src/main/java/com/sendback/domain/project/repository/ProjectRepositoryImpl.java index 17a4396..fddc5e5 100644 --- a/src/main/java/com/sendback/domain/project/repository/ProjectRepositoryImpl.java +++ b/src/main/java/com/sendback/domain/project/repository/ProjectRepositoryImpl.java @@ -1,16 +1,13 @@ package com.sendback.domain.project.repository; import com.querydsl.jpa.impl.JPAQueryFactory; -import com.sendback.domain.project.entity.QProject; import com.sendback.domain.user.dto.response.QRegisteredProjectResponseDto; import com.sendback.domain.user.dto.response.RegisteredProjectResponseDto; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; - import java.util.List; - import static com.sendback.domain.project.entity.QProject.project; @RequiredArgsConstructor @@ -27,6 +24,7 @@ public Page findAllProjectsByMe(Pageable pageable, project.title, project.progress.stringValue(), project.summary, + project.fieldName.stringValue(), project.createdAt, project.projectPull.pullUpCnt )) diff --git a/src/main/java/com/sendback/domain/user/dto/response/RegisteredProjectResponseDto.java b/src/main/java/com/sendback/domain/user/dto/response/RegisteredProjectResponseDto.java index 3ddf081..8825525 100644 --- a/src/main/java/com/sendback/domain/user/dto/response/RegisteredProjectResponseDto.java +++ b/src/main/java/com/sendback/domain/user/dto/response/RegisteredProjectResponseDto.java @@ -10,7 +10,7 @@ public record RegisteredProjectResponseDto ( String title, String progress, String summary, - + String field, @JsonFormat(pattern = "yyyy.MM.dd") LocalDateTime createdAt, Long pullUpCnt @@ -21,6 +21,7 @@ public RegisteredProjectResponseDto( String title, String progress, String summary, + String field, LocalDateTime createdAt, Long pullUpCnt ) { @@ -28,6 +29,7 @@ public RegisteredProjectResponseDto( this.title = title; this.progress = progress; this.summary = summary; + this.field = field; this.createdAt = createdAt; this.pullUpCnt = pullUpCnt; } diff --git a/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java b/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java index 00c4ee0..b6445ec 100644 --- a/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java +++ b/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java @@ -287,7 +287,7 @@ void getRegisteredProjects_success() throws Exception { // given LocalDateTime mockDateTime = LocalDateTime.now(); RegisteredProjectResponseDto responseDto = new RegisteredProjectResponseDto(1L, "mock_title", "개발중", "테스트 테스트", - mockDateTime, 5L); + "게임", mockDateTime, 5L); List responseDtos = new ArrayList<>(); responseDtos.add(responseDto); @@ -319,6 +319,7 @@ void getRegisteredProjects_success() throws Exception { .andExpect(jsonPath("$.data.content[0].title").value("mock_title")) .andExpect(jsonPath("$.data.content[0].progress").value("개발중")) .andExpect(jsonPath("$.data.content[0].summary").value("테스트 테스트")) + .andExpect(jsonPath("$.data.content[0].field").value("게임")) .andExpect(jsonPath("$.data.content[0].createdAt").value(mockDateTime.format(DateTimeFormatter.ofPattern("yyyy.MM.dd")))) .andExpect(jsonPath("$.data.content[0].pullUpCnt").value(5)) .andDo(print()); @@ -353,6 +354,8 @@ void getRegisteredProjects_success() throws Exception { .description("프로젝트 진행 상태"), fieldWithPath("data.content[].summary").type(JsonFieldType.STRING) .description("프로젝트 요약"), + fieldWithPath("data.content[].field").type(JsonFieldType.STRING) + .description("프로젝트 분야"), fieldWithPath("data.content[].createdAt").type(JsonFieldType.STRING) .attributes(Attributes.key("format").value("yyyy.MM.dd")) .description("프로젝트 등록일"), From 1366808bc4b8ab9b20bbd7bca7d92a542395b74e Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Fri, 16 Feb 2024 22:56:38 +0900 Subject: [PATCH 12/16] =?UTF-8?q?feat=20:=20restdocs=20=EC=84=A4=EC=A0=95?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80=20#27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/docs/asciidoc/api/auth.adoc | 18 +++++++ src/docs/asciidoc/api/user.adoc | 50 +++++++++++++++++++ .../user/controller/UserControllerTest.java | 26 ++++++++-- 3 files changed, 89 insertions(+), 5 deletions(-) diff --git a/src/docs/asciidoc/api/auth.adoc b/src/docs/asciidoc/api/auth.adoc index 14c10b8..952156a 100644 --- a/src/docs/asciidoc/api/auth.adoc +++ b/src/docs/asciidoc/api/auth.adoc @@ -7,19 +7,30 @@ === 성공 ==== HTTP Requests include::{snippets}/login-kakao-success/http-request.adoc[] + +- Query parameters + include::{snippets}/login-kakao-success/query-parameters.adoc[] ==== HTTP Response +- Response body include::{snippets}/login-kakao-success/http-response.adoc[] include::{snippets}/login-kakao-success/response-fields.adoc[] + === 실패(1070) ==== HTTP Requests include::{snippets}/login-kakao-failure/http-request.adoc[] + +- Query parameters + include::{snippets}/login-kakao-failure/query-parameters.adoc[] + + ==== HTTP Response +- Response body include::{snippets}/login-kakao-failure/http-response.adoc[] include::{snippets}/login-kakao-failure/response-fields.adoc[] @@ -30,20 +41,24 @@ include::{snippets}/login-kakao-failure/response-fields.adoc[] === 성공 ==== HTTP Requests include::{snippets}/login-google-success/http-request.adoc[] +- Query parameters include::{snippets}/login-google-success/query-parameters.adoc[] ==== HTTP Response include::{snippets}/login-google-success/http-response.adoc[] +- Response body include::{snippets}/login-google-success/response-fields.adoc[] === 실패(1070) ==== HTTP Requests include::{snippets}/login-google-failure/http-request.adoc[] +- Query parameters include::{snippets}/login-google-failure/query-parameters.adoc[] ==== HTTP Response include::{snippets}/login-google-failure/http-response.adoc[] +- Response body include::{snippets}/login-google-failure/response-fields.adoc[] ''' @@ -53,10 +68,12 @@ include::{snippets}/login-google-failure/response-fields.adoc[] === 성공 ==== HTTP Requests include::{snippets}/reissue-token/http-request.adoc[] +- Request body include::{snippets}/reissue-token/request-fields.adoc[] ==== HTTP Response include::{snippets}/reissue-token/http-response.adoc[] +- Response body include::{snippets}/reissue-token/response-fields.adoc[] ''' @@ -69,6 +86,7 @@ include::{snippets}/logout-social/http-request.adoc[] ==== HTTP Response include::{snippets}/logout-social/http-response.adoc[] +- Response body include::{snippets}/logout-social/response-fields.adoc[] ''' \ No newline at end of file diff --git a/src/docs/asciidoc/api/user.adoc b/src/docs/asciidoc/api/user.adoc index daf99a4..9a8929f 100644 --- a/src/docs/asciidoc/api/user.adoc +++ b/src/docs/asciidoc/api/user.adoc @@ -6,10 +6,12 @@ === 성공 ==== HTTP Requests include::{snippets}/signUpKakao-success/http-request.adoc[] +- Request body include::{snippets}/signUpKakao-success/request-fields.adoc[] ==== HTTP Response include::{snippets}/signUpKakao-success/http-response.adoc[] +- Response body include::{snippets}/signUpKakao-success/response-fields.adoc[] ''' @@ -19,9 +21,57 @@ include::{snippets}/signUpKakao-success/response-fields.adoc[] === 성공 ==== HTTP Requests include::{snippets}/checkUserNickname-success/http-request.adoc[] +- Query parameters include::{snippets}/checkUserNickname-success/query-parameters.adoc[] ==== HTTP Response include::{snippets}/checkUserNickname-success/http-response.adoc[] +- Response body include::{snippets}/checkUserNickname-success/response-fields.adoc[] +''' + +[[get-userInfo]] +== 내 정보 조회하기 +=== 성공 +==== HTTP Requests +include::{snippets}/getUserInfo-success/http-request.adoc[] + + +==== HTTP Response +include::{snippets}/getUserInfo-success/http-response.adoc[] +- Response body +include::{snippets}/getUserInfo-success/response-fields.adoc[] + + +''' + +[[get-userInfo]] +== 내 정보 수정하기 +=== 성공 +==== HTTP Requests +include::{snippets}/updateUserInfo-success/http-request.adoc[] + +- Request body +include::{snippets}/updateUserInfo-success/request-fields.adoc[] + +==== HTTP Response +include::{snippets}/getUserInfo-success/http-response.adoc[] +- Response body +include::{snippets}/getUserInfo-success/response-fields.adoc[] + +''' + +[[get-registeredProjects]] +== 내가 등록한 프로젝트들 조회 +=== 성공 +==== HTTP Requests +include::{snippets}/getRegisteredProjects-success/http-request.adoc[] + +- Query parameters +include::{snippets}/getRegisteredProjects-success/query-parameters.adoc[] + +==== HTTP Response +include::{snippets}/getRegisteredProjects-success/http-response.adoc[] +- Response body +include::{snippets}/getRegisteredProjects-success/response-fields.adoc[] \ No newline at end of file diff --git a/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java b/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java index b6445ec..665c965 100644 --- a/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java +++ b/src/test/java/com/sendback/domain/user/controller/UserControllerTest.java @@ -77,13 +77,13 @@ void signUpKakao_success() throws Exception { fieldWithPath("nickname").type(JsonFieldType.STRING) .description("닉네임"), fieldWithPath("birthday").type(JsonFieldType.STRING) - .description("닉네임"), + .description("생일"), fieldWithPath("gender").type(JsonFieldType.STRING) - .description("닉네임"), + .description("성별"), fieldWithPath("career").type(JsonFieldType.STRING) - .description("닉네임"), + .description("직업"), fieldWithPath("interests").type(JsonFieldType.ARRAY) - .description("닉네임"), + .description("관심사"), fieldWithPath("signToken").type(JsonFieldType.STRING) .description("sign 토큰") ), @@ -256,6 +256,16 @@ void updateUserInfo_success() throws Exception { .andDo(document("updateUserInfo-success", customRequestPreprocessor(), preprocessResponse(prettyPrint()), + requestFields( + fieldWithPath("nickname").type(JsonFieldType.STRING) + .description("닉네임"), + fieldWithPath("career").type(JsonFieldType.STRING) + .description("직업"), + fieldWithPath("birthday").type(JsonFieldType.STRING) + .description("생일"), + fieldWithPath("field").type(JsonFieldType.ARRAY) + .description("관심사") + ), responseFields( fieldWithPath("code").type(JsonFieldType.NUMBER) .description("코드"), @@ -302,7 +312,7 @@ void getRegisteredProjects_success() throws Exception { // when ResultActions resultActions = mockMvc.perform(get("/api/users/me/project") - .with(csrf()) + .with(csrf().asHeader()) .header(HttpHeaders.AUTHORIZATION, ACCESS_TOKEN_PREFIX + "AccessToken") .param("page", "1") .param("size", "5") @@ -329,6 +339,12 @@ void getRegisteredProjects_success() throws Exception { .andDo(document("getRegisteredProjects-success", customRequestPreprocessor(), preprocessResponse(prettyPrint()), + queryParameters( + parameterWithName("page").description("페이지"), + parameterWithName("size").description("사이즈"), + parameterWithName("sort").description("정렬 기준") + + ), responseFields( fieldWithPath("code").type(JsonFieldType.NUMBER) .description("상태 코드"), From 918b3e063b7f0bcd5a7757793f445c8e3cce774f Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Fri, 16 Feb 2024 23:08:05 +0900 Subject: [PATCH 13/16] =?UTF-8?q?refactor=20:=20=EB=B6=88=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20=EC=A3=BC=EC=84=9D=20=EC=A0=9C=EA=B1=B0=20?= =?UTF-8?q?#27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index b0147d7..b780bdb 100644 --- a/build.gradle +++ b/build.gradle @@ -76,9 +76,9 @@ dependencies { annotationProcessor "jakarta.persistence:jakarta.persistence-api" } -//tasks.named('test') { -// useJUnitPlatform() -//} +tasks.named('test') { + useJUnitPlatform() +} // gradlew 빌드시 에러 발생방지, 빌드시 -plain.jar 생기는 설정 끄기 for Github Actions jar { From 03bf118b505d94d4d6e415068ab456a1f4ddaa33 Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Fri, 16 Feb 2024 23:20:09 +0900 Subject: [PATCH 14/16] =?UTF-8?q?refactor=20:=20user.adoc=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=20=EB=AA=85=20=EC=88=98=EC=A0=95=20#27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/docs/asciidoc/api/user.adoc | 2 +- .../sendback/domain/project/entity/Field.java | 33 ------------------- 2 files changed, 1 insertion(+), 34 deletions(-) delete mode 100644 src/main/java/com/sendback/domain/project/entity/Field.java diff --git a/src/docs/asciidoc/api/user.adoc b/src/docs/asciidoc/api/user.adoc index 9a8929f..e1c9941 100644 --- a/src/docs/asciidoc/api/user.adoc +++ b/src/docs/asciidoc/api/user.adoc @@ -46,7 +46,7 @@ include::{snippets}/getUserInfo-success/response-fields.adoc[] ''' -[[get-userInfo]] +[[get-updateInfo]] == 내 정보 수정하기 === 성공 ==== HTTP Requests diff --git a/src/main/java/com/sendback/domain/project/entity/Field.java b/src/main/java/com/sendback/domain/project/entity/Field.java deleted file mode 100644 index aff27b8..0000000 --- a/src/main/java/com/sendback/domain/project/entity/Field.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.sendback.domain.project.entity; - -import com.sendback.global.exception.type.NotFoundException; -import lombok.AllArgsConstructor; - -import static com.sendback.domain.project.exception.ProjectExceptionType.NOT_FOUND_FIELD; - -@AllArgsConstructor -public enum Field { - ART("예술/대중문화"), - ENVIRONMENT("환경"), - HEALTH("건강"), - HOBBY("취미/실용"), - FINTECH("금융/핀테크"), - EDUCATION("교육"), - GAME("게임"), - AI("AI/머신러닝"); - - private final String value; - - public static Field toEnum(String field) { - for (Field value : Field.values()) { - if (value.value.equalsIgnoreCase(field)) { - return value; - } - } - throw new NotFoundException(NOT_FOUND_FIELD); - } - - public String toString() { - return value; - } -} \ No newline at end of file From a66c96a51984077e5a09aca6650b53d43288fe1e Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Fri, 16 Feb 2024 23:26:46 +0900 Subject: [PATCH 15/16] =?UTF-8?q?fix=20:restdocs=20data=20null=20=EC=9D=B4?= =?UTF-8?q?=EC=8A=88=20=ED=95=B4=EA=B2=B0=20#27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sendback/domain/auth/controller/AuthControllerTest.java | 2 +- .../domain/project/controller/ProjectControllerTest.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/sendback/domain/auth/controller/AuthControllerTest.java b/src/test/java/com/sendback/domain/auth/controller/AuthControllerTest.java index 2a9b592..c998542 100644 --- a/src/test/java/com/sendback/domain/auth/controller/AuthControllerTest.java +++ b/src/test/java/com/sendback/domain/auth/controller/AuthControllerTest.java @@ -286,7 +286,7 @@ void logoutSocial_success() throws Exception { responseFields( fieldWithPath("code").type(JsonFieldType.NUMBER) .description("코드"), - fieldWithPath("data").type(JsonFieldType.OBJECT) + fieldWithPath("data").type(JsonFieldType.NULL) .description("응답 데이터"), fieldWithPath("message").type(JsonFieldType.STRING) .description("메시지") diff --git a/src/test/java/com/sendback/domain/project/controller/ProjectControllerTest.java b/src/test/java/com/sendback/domain/project/controller/ProjectControllerTest.java index 02f8e64..2601140 100644 --- a/src/test/java/com/sendback/domain/project/controller/ProjectControllerTest.java +++ b/src/test/java/com/sendback/domain/project/controller/ProjectControllerTest.java @@ -365,7 +365,7 @@ public void updateProject_fail_request() throws Exception { .description("코드"), fieldWithPath("message").type(JsonFieldType.STRING) .description("에러 메시지"), - fieldWithPath("data").type(JsonFieldType.OBJECT) + fieldWithPath("data").type(JsonFieldType.NULL) .description("데이터") ))) .andExpect(jsonPath("$.code").value("302")) @@ -406,7 +406,7 @@ public void deleteProject_success() throws Exception { responseFields( fieldWithPath("code").type(JsonFieldType.NUMBER) .description("코드"), - fieldWithPath("data").type(JsonFieldType.OBJECT) + fieldWithPath("data").type(JsonFieldType.NULL) .description("데이터"), fieldWithPath("message").type(JsonFieldType.STRING) .description("메시지") From 6f627b4e970df2483592c545668729766bfc8a8c Mon Sep 17 00:00:00 2001 From: "DESKTOP-71386SR\\hal8h" Date: Fri, 16 Feb 2024 23:27:15 +0900 Subject: [PATCH 16/16] =?UTF-8?q?refactor=20:=20progress=20test=20@Disable?= =?UTF-8?q?d=20=ED=95=B4=EC=A0=9C=20#27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/sendback/domain/project/entity/ProgressTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/com/sendback/domain/project/entity/ProgressTest.java b/src/test/java/com/sendback/domain/project/entity/ProgressTest.java index ef7c87e..bb1bf42 100644 --- a/src/test/java/com/sendback/domain/project/entity/ProgressTest.java +++ b/src/test/java/com/sendback/domain/project/entity/ProgressTest.java @@ -14,7 +14,6 @@ public class ProgressTest { @Nested - @Disabled @DisplayName("진행 여부 enum으로 변경 시") class convertEnumProgress {