From 1e1555ff8ccb9e3fbad07e53e9653f50ca24834c Mon Sep 17 00:00:00 2001 From: haerong22 Date: Tue, 26 Jul 2022 01:22:49 +0900 Subject: [PATCH] #14 simple blog : add response class --- .../simpleblog/controller/PostController.java | 3 ++- .../simpleblog/response/PostResponse.java | 23 +++++++++++++++++++ .../simpleblog/service/PostService.java | 11 +++++++-- .../controller/PostControllerTest.java | 6 +++-- .../simpleblog/service/PostServiceTest.java | 7 +++--- 5 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 simpleblog/src/main/java/com/example/simpleblog/response/PostResponse.java diff --git a/simpleblog/src/main/java/com/example/simpleblog/controller/PostController.java b/simpleblog/src/main/java/com/example/simpleblog/controller/PostController.java index b9b8303b..31175208 100644 --- a/simpleblog/src/main/java/com/example/simpleblog/controller/PostController.java +++ b/simpleblog/src/main/java/com/example/simpleblog/controller/PostController.java @@ -2,6 +2,7 @@ package com.example.simpleblog.controller; import com.example.simpleblog.domain.Post; import com.example.simpleblog.request.PostCreate; +import com.example.simpleblog.response.PostResponse; import com.example.simpleblog.service.PostService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -22,7 +23,7 @@ public class PostController { } @GetMapping("/posts/{postId}") - public Post getPost(@PathVariable(name = "postId") Long id) { + public PostResponse getPost(@PathVariable(name = "postId") Long id) { return postService.getPost(id); } } diff --git a/simpleblog/src/main/java/com/example/simpleblog/response/PostResponse.java b/simpleblog/src/main/java/com/example/simpleblog/response/PostResponse.java new file mode 100644 index 00000000..80d0d893 --- /dev/null +++ b/simpleblog/src/main/java/com/example/simpleblog/response/PostResponse.java @@ -0,0 +1,23 @@ +package com.example.simpleblog.response; + +import lombok.Builder; +import lombok.Getter; + +/** + * 서비스 정책에 맞는 클래스 + */ +@Getter +public class PostResponse { + + private final Long id; + private final String title; + private final String content; + + @Builder + + public PostResponse(Long id, String title, String content) { + this.id = id; + this.title = title.substring(0 ,Math.min(title.length(), 10)); + this.content = content; + } +} diff --git a/simpleblog/src/main/java/com/example/simpleblog/service/PostService.java b/simpleblog/src/main/java/com/example/simpleblog/service/PostService.java index 425c1305..f7888d62 100644 --- a/simpleblog/src/main/java/com/example/simpleblog/service/PostService.java +++ b/simpleblog/src/main/java/com/example/simpleblog/service/PostService.java @@ -3,6 +3,7 @@ package com.example.simpleblog.service; import com.example.simpleblog.domain.Post; import com.example.simpleblog.repository.PostRepository; import com.example.simpleblog.request.PostCreate; +import com.example.simpleblog.response.PostResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -24,8 +25,14 @@ public class PostService { postRepository.save(post); } - public Post getPost(Long id) { - return postRepository.findById(id) + public PostResponse getPost(Long id) { + Post postEntity = postRepository.findById(id) .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 글입니다.")); + + return PostResponse.builder() + .id(postEntity.getId()) + .title(postEntity.getTitle()) + .content(postEntity.getContent()) + .build(); } } diff --git a/simpleblog/src/test/java/com/example/simpleblog/controller/PostControllerTest.java b/simpleblog/src/test/java/com/example/simpleblog/controller/PostControllerTest.java index 2718f043..f1d807c1 100644 --- a/simpleblog/src/test/java/com/example/simpleblog/controller/PostControllerTest.java +++ b/simpleblog/src/test/java/com/example/simpleblog/controller/PostControllerTest.java @@ -114,19 +114,21 @@ class PostControllerTest { void get_post_by_id_success() throws Exception { // given Post post = Post.builder() - .title("글 제목입니다.") + .title("123456789012345") .content("글 내용입니다.") .build(); postRepository.save(post); + // json 응답에서 title 값 길이를 최대 10글자 + // expected mockMvc.perform(get("/posts/{postId}", post.getId()) .contentType(APPLICATION_JSON) ) .andExpect(status().isOk()) .andExpect(jsonPath("$.id").value(post.getId())) - .andExpect(jsonPath("$.title").value("글 제목입니다.")) + .andExpect(jsonPath("$.title").value("1234567890")) .andExpect(jsonPath("$.content").value("글 내용입니다.")) .andDo(print()) ; diff --git a/simpleblog/src/test/java/com/example/simpleblog/service/PostServiceTest.java b/simpleblog/src/test/java/com/example/simpleblog/service/PostServiceTest.java index a6096444..e31e1911 100644 --- a/simpleblog/src/test/java/com/example/simpleblog/service/PostServiceTest.java +++ b/simpleblog/src/test/java/com/example/simpleblog/service/PostServiceTest.java @@ -3,6 +3,7 @@ package com.example.simpleblog.service; import com.example.simpleblog.domain.Post; import com.example.simpleblog.repository.PostRepository; import com.example.simpleblog.request.PostCreate; +import com.example.simpleblog.response.PostResponse; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -59,11 +60,11 @@ class PostServiceTest { Long postId = 1L; // when - Post postEntity = postService.getPost(postId); + PostResponse response = postService.getPost(postId); // then assertNotNull(post); - assertEquals("글 제목입니다.", postEntity.getTitle()); - assertEquals("글 내용입니다.", postEntity.getContent()); + assertEquals("글 제목입니다.", response.getTitle()); + assertEquals("글 내용입니다.", response.getContent()); } } \ No newline at end of file