Skip to content

Commit

Permalink
♻️ refactor: wrap with PaginationResponseDto
Browse files Browse the repository at this point in the history
  • Loading branch information
siyeonSon committed Jun 11, 2024
1 parent f9f9294 commit c3d2242
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 36 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
package com.depromeet.common.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;

@Getter
@Builder
@AllArgsConstructor
public class PageMetaResponseDto implements MetaInterface {
private int page;
private int size;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
package com.depromeet.domains.announcement.controller;

import com.depromeet.common.dto.PaginationResponseDto;
import com.depromeet.common.dto.ResponseDto;
import com.depromeet.domains.announcement.dto.response.AnnouncementResponseDto;
import com.depromeet.domains.announcement.dto.response.AnnouncementsResponseDto;
import com.depromeet.domains.announcement.service.AnnouncementService;
import com.depromeet.security.annotation.ReqUser;
import com.depromeet.user.User;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
Expand All @@ -25,7 +23,7 @@ public class AnnouncementController {

@Operation(summary = "공지사항 전체 조회")
@GetMapping
public ResponseEntity<AnnouncementsResponseDto> getAnnouncements() {
public ResponseEntity<PaginationResponseDto<?, ?>> getAnnouncements() {
var response = announcementService.getAnnouncements();
return ResponseDto.ok(response);
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.depromeet.domains.announcement.service;

import com.depromeet.common.dto.MetaInterface;
import com.depromeet.common.dto.PageMetaResponseDto;
import com.depromeet.common.dto.PaginationResponseDto;
import com.depromeet.common.error.dto.CommonErrorCode;
import com.depromeet.common.error.exception.internal.NotFoundException;
import com.depromeet.domains.announcement.dto.response.AnnouncementResponseDto;
import com.depromeet.domains.announcement.dto.response.AnnouncementsResponseDto;
import com.depromeet.domains.announcement.repository.AnnouncementRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
Expand All @@ -16,12 +18,19 @@ public class AnnouncementService {
private final AnnouncementRepository announcementRepository;

@Transactional(readOnly = true)
public AnnouncementsResponseDto getAnnouncements() {
public PaginationResponseDto<AnnouncementResponseDto, MetaInterface> getAnnouncements() {
var announcements = announcementRepository.findAll()
.stream()
.map(AnnouncementResponseDto::new)
.toList();
return new AnnouncementsResponseDto(announcements);
var meta = PageMetaResponseDto.builder()
.page(1)
.size(announcements.size())
.totalPage(1)
.firstPage(true)
.lastPage(true)
.build();
return new PaginationResponseDto<>(announcements, meta);
}

@Transactional(readOnly = true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import com.depromeet.announcement.Announcement;
import com.depromeet.common.dto.MetaInterface;
import com.depromeet.common.dto.PageMetaResponseDto;
import com.depromeet.common.dto.PaginationResponseDto;
import com.depromeet.common.error.GlobalExceptionHandler;
import com.depromeet.common.error.dto.CommonErrorCode;
import com.depromeet.common.error.exception.internal.NotFoundException;
import com.depromeet.domains.announcement.controller.AnnouncementController;
import com.depromeet.domains.announcement.dto.response.AnnouncementResponseDto;
import com.depromeet.domains.announcement.dto.response.AnnouncementsResponseDto;
import com.depromeet.domains.announcement.service.AnnouncementService;
import java.util.List;
import org.junit.jupiter.api.DisplayName;
Expand Down Expand Up @@ -46,24 +48,43 @@ class Success {
@DisplayName("공지사항 0개 조회")
@Test
void getAnnouncementsTestSuccess1() throws Exception {
var announcementsResponseDto = new AnnouncementsResponseDto(List.of());
when(announcementService.getAnnouncements()).thenReturn(announcementsResponseDto);
var meta = PageMetaResponseDto.builder()
.page(0)
.size(0)
.totalPage(0)
.firstPage(true)
.lastPage(true)
.build();
PaginationResponseDto<AnnouncementResponseDto, MetaInterface> paginationResponseDto = new PaginationResponseDto<>(List.of(), meta);
when(announcementService.getAnnouncements()).thenReturn(paginationResponseDto);

var response = mvc.perform(
get("/announcements")
);
var response = mvc.perform(get("/announcements"));
response.andExpect(status().isOk())
.andExpect(jsonPath("$.data").isArray())
.andExpect(jsonPath("$.data.length()").value(0));
.andExpect(jsonPath("$.data.length()").value(0))
.andExpect(jsonPath("$.meta.page").value(0))
.andExpect(jsonPath("$.meta.size").value(0))
.andExpect(jsonPath("$.meta.totalPage").value(0))
.andExpect(jsonPath("$.meta.firstPage").value(true))
.andExpect(jsonPath("$.meta.lastPage").value(true));
}

@DisplayName("공지사항 2개 조회")
@Test
void getAnnouncementsTestSuccess2() throws Exception {
var announcementResponseDto1 = new AnnouncementResponseDto(new Announcement("Title 1", "Content 1"));
var announcementResponseDto2 = new AnnouncementResponseDto(new Announcement("Title 2", "Content 2"));
var announcementsResponseDto = new AnnouncementsResponseDto(List.of(announcementResponseDto1, announcementResponseDto2));
when(announcementService.getAnnouncements()).thenReturn(announcementsResponseDto);
var announcementResponseDto = List.of(
new AnnouncementResponseDto(new Announcement("Title 1", "Content 1")),
new AnnouncementResponseDto(new Announcement("Title 2", "Content 2"))
);
var meta = PageMetaResponseDto.builder()
.page(0)
.size(0)
.totalPage(0)
.firstPage(true)
.lastPage(true)
.build();
PaginationResponseDto<AnnouncementResponseDto, MetaInterface> paginationResponseDto = new PaginationResponseDto<>(announcementResponseDto, meta);
when(announcementService.getAnnouncements()).thenReturn(paginationResponseDto);

var response = mvc.perform(get("/announcements"));
response.andExpect(status().isOk())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import com.depromeet.announcement.Announcement;
import com.depromeet.common.error.exception.internal.NotFoundException;
import com.depromeet.domains.announcement.dto.response.AnnouncementResponseDto;
import com.depromeet.domains.announcement.dto.response.AnnouncementsResponseDto;
import com.depromeet.domains.announcement.repository.AnnouncementRepository;
import com.depromeet.domains.announcement.service.AnnouncementService;
import java.util.List;
Expand Down Expand Up @@ -43,9 +42,7 @@ void getAnnouncementsTestSuccess1() {

var result = announcementService.getAnnouncements();

assertThat(result).isEqualTo(
new AnnouncementsResponseDto(List.of())
);
assertThat(result.getData()).isEmpty();
}

@DisplayName("공지사항 2개 조회")
Expand All @@ -59,12 +56,10 @@ void getAnnouncementsTestSuccess2() {

var result = announcementService.getAnnouncements();

assertThat(result).isEqualTo(
new AnnouncementsResponseDto(
List.of(
new AnnouncementResponseDto(announcements.get(0)),
new AnnouncementResponseDto(announcements.get(1))
)
assertThat(result.getData()).isEqualTo(
List.of(
new AnnouncementResponseDto(announcements.get(0)),
new AnnouncementResponseDto(announcements.get(1))
)
);
}
Expand Down

0 comments on commit c3d2242

Please sign in to comment.