Skip to content

Commit 2b46b12

Browse files
committed
feat[post]:페이징추가
1 parent 3477aa5 commit 2b46b12

File tree

3 files changed

+39
-0
lines changed

3 files changed

+39
-0
lines changed

backend/src/main/java/com/ai/lawyer/domain/post/controller/PostController.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,9 @@ public ResponseEntity<ApiResponse<PostPageDTO>> getPostsPaged(
177177
) {
178178
Pageable pageable = PageRequest.of(page, size, Sort.by("createdAt").descending());
179179
Page<PostDto> posts = postService.getPostsPaged(pageable);
180+
if (posts == null) {
181+
posts = new org.springframework.data.domain.PageImpl<>(java.util.Collections.emptyList(), pageable, 0);
182+
}
180183
PostPageDTO response = new PostPageDTO(posts);
181184
return ResponseEntity.ok(new ApiResponse<>(200, "페이징 게시글 조회 성공", response));
182185
}

backend/src/test/java/com/ai/lawyer/domain/post/controller/PostControllerTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,4 +145,26 @@ void t6() throws Exception {
145145
.cookie(new Cookie("accessToken", "valid-access-token")))
146146
.andExpect(status().isOk());
147147
}
148+
149+
@Test
150+
@DisplayName("게시글 페이징 API")
151+
void t7() throws Exception {
152+
java.util.List<com.ai.lawyer.domain.post.dto.PostDto> postList = java.util.List.of(
153+
com.ai.lawyer.domain.post.dto.PostDto.builder().postId(1L).postName("테스트 제목").build()
154+
);
155+
org.springframework.data.domain.Pageable pageable = org.springframework.data.domain.PageRequest.of(0, 10);
156+
org.springframework.data.domain.PageImpl<com.ai.lawyer.domain.post.dto.PostDto> page = new org.springframework.data.domain.PageImpl<>(postList, pageable, 1);
157+
Mockito.when(postService.getPostsPaged(Mockito.any(org.springframework.data.domain.Pageable.class))).thenReturn(page);
158+
159+
mockMvc.perform(get("/api/posts/paged")
160+
.param("page", "0")
161+
.param("size", "10")
162+
.cookie(new Cookie("accessToken", "valid-access-token")))
163+
.andExpect(status().isOk())
164+
.andExpect(org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath("$.result.content").isArray())
165+
.andExpect(org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath("$.result.page").value(0))
166+
.andExpect(org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath("$.result.size").value(10))
167+
.andExpect(org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath("$.result.totalPages").value(1))
168+
.andExpect(org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath("$.result.totalElements").value(1));
169+
}
148170
}

backend/src/test/java/com/ai/lawyer/domain/post/service/PostServiceTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,4 +127,18 @@ void t11() {
127127
postService.patchUpdatePost(1L, updateDto);
128128
Mockito.verify(postService).patchUpdatePost(1L, updateDto);
129129
}
130+
131+
@Test
132+
@DisplayName("게시글 페이징 조회")
133+
void t12() {
134+
java.util.List<PostDto> postList = java.util.List.of(new PostDto());
135+
org.springframework.data.domain.Pageable pageable = org.springframework.data.domain.PageRequest.of(0, 10);
136+
org.springframework.data.domain.PageImpl<PostDto> page = new org.springframework.data.domain.PageImpl<>(postList, pageable, 1);
137+
Mockito.when(postService.getPostsPaged(pageable)).thenReturn(page);
138+
139+
var result = postService.getPostsPaged(pageable);
140+
assertThat(result.getContent()).hasSize(1);
141+
assertThat(result.getTotalElements()).isEqualTo(1);
142+
assertThat(result.getTotalPages()).isEqualTo(1);
143+
}
130144
}

0 commit comments

Comments
 (0)