Skip to content

Commit

Permalink
test: API 통합 test 추상 클래스 생성 및 API 변경으로 인해 테스트 수정 (#29)
Browse files Browse the repository at this point in the history
  • Loading branch information
AHNYUNKI committed Mar 24, 2024
1 parent f5d98cf commit de35051
Show file tree
Hide file tree
Showing 10 changed files with 131 additions and 373 deletions.
12 changes: 8 additions & 4 deletions src/main/java/com/jisungin/api/talkroom/TalkRoomController.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.jisungin.api.talkroom;

import com.jisungin.api.ApiResponse;
import com.jisungin.api.oauth.Auth;
import com.jisungin.api.oauth.AuthContext;
import com.jisungin.api.talkroom.request.TalkRoomCreateRequest;
import com.jisungin.api.talkroom.request.TalkRoomEditRequest;
import com.jisungin.api.talkroom.request.TalkRoomSearchRequest;
Expand All @@ -27,8 +29,9 @@ public class TalkRoomController {

// TODO. 회원 도메인이 개발되면 변경 예정
@PostMapping("/talk-rooms")
public ApiResponse<TalkRoomResponse> createTalkRoom(@Valid @RequestBody TalkRoomCreateRequest request) {
return ApiResponse.ok(talkRoomService.createTalkRoom(request.toServiceRequest(), "[email protected]"));
public ApiResponse<TalkRoomResponse> createTalkRoom(@Valid @RequestBody TalkRoomCreateRequest request, @Auth
AuthContext authContext) {
return ApiResponse.ok(talkRoomService.createTalkRoom(request.toServiceRequest(), authContext.getUserId()));
}

@GetMapping("/talk-rooms")
Expand All @@ -37,8 +40,9 @@ public ApiResponse<PageResponse<TalkRoomQueryResponse>> getTalkRooms(@ModelAttri
}

@PatchMapping("/talk-rooms")
public ApiResponse<TalkRoomResponse> editTalkRoom(@Valid @RequestBody TalkRoomEditRequest request) {
return ApiResponse.ok(talkRoomService.editTalkRoom(request.toServiceRequest(), "[email protected]"));
public ApiResponse<TalkRoomResponse> editTalkRoom(@Valid @RequestBody TalkRoomEditRequest request,
@Auth AuthContext authContext) {
return ApiResponse.ok(talkRoomService.editTalkRoom(request.toServiceRequest(), authContext.getUserId()));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -32,38 +32,35 @@ public class TalkRoomService {
private final BookRepository bookRepository;
private final UserRepository userRepository;

// TODO. 토큰 정보를 가져오는 기능을 구현하면 변경할 예정
@Transactional
public TalkRoomResponse createTalkRoom(TalkRoomCreateServiceRequest request, String userEmail) {
// User user = userRepository.findById(userId)
// .orElseThrow(() -> new BusinessException(ErrorCode.USER_NOT_FOUND));

User user = userRepository.findByName(userEmail)
public TalkRoomResponse createTalkRoom(TalkRoomCreateServiceRequest request, Long userId) {
User user = userRepository.findById(userId)
.orElseThrow(() -> new BusinessException(ErrorCode.USER_NOT_FOUND));

Book book = bookRepository.findById(request.getBookIsbn())
.orElseThrow(() -> new BusinessException(ErrorCode.BOOK_NOT_FOUND));

TalkRoom talkRoom = TalkRoom.create(request, book, user);
TalkRoom talkRoom = TalkRoom.create(request.getTitle(), request.getContent(), book, user);
talkRoomRepository.save(talkRoom);

List<ReadingStatus> readingStatus = ReadingStatus.createReadingStatus(request.getReadingStatus());

readingStatus.stream().map(status -> TalkRoomRole.roleCreate(talkRoom, status))
.forEach(talkRoomRoleRepository::save);

return TalkRoomResponse.of(user.getName(), talkRoom, readingStatus, book.getImageUrl(), book.getTitle());
return TalkRoomResponse.of(user.getName(), talkRoom.getTitle(), talkRoom.getContent(), readingStatus,
book.getImageUrl(), book.getTitle());
}

public PageResponse<TalkRoomQueryResponse> getTalkRooms(TalkRoomSearchServiceRequest search) {
return talkRoomRepository.getTalkRooms(search);
}

@Transactional
public TalkRoomResponse editTalkRoom(TalkRoomEditServiceRequest request, String userEmail) {
User user = userRepository.findByName(userEmail)
public TalkRoomResponse editTalkRoom(TalkRoomEditServiceRequest request, Long userId) {
User user = userRepository.findById(userId)
.orElseThrow(() -> new BusinessException(ErrorCode.USER_NOT_FOUND));

TalkRoom talkRoom = talkRoomRepository.findByIdWithUserAndBook(request.getId());

if (!talkRoom.isTalkRoomOwner(user.getId())) {
Expand All @@ -79,8 +76,8 @@ public TalkRoomResponse editTalkRoom(TalkRoomEditServiceRequest request, String
readingStatus.stream().map(status -> TalkRoomRole.roleCreate(talkRoom, status))
.forEach(talkRoomRoleRepository::save);

return TalkRoomResponse.of(user.getName(), talkRoom, readingStatus, talkRoom.getBook().getImageUrl(),
talkRoom.getBook().getTitle());
return TalkRoomResponse.of(user.getName(), talkRoom.getTitle(), talkRoom.getContent(), readingStatus,
talkRoom.getBook().getImageUrl(), talkRoom.getBook().getTitle());
}

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.jisungin.application.talkroom.response;

import com.jisungin.domain.ReadingStatus;
import com.jisungin.domain.talkroom.TalkRoom;
import com.querydsl.core.annotations.QueryProjection;
import java.util.List;
import lombok.Builder;
Expand Down Expand Up @@ -31,12 +30,13 @@ public TalkRoomResponse(String userName, String title, String content, String bo
this.bookImage = bookImage;
}

public static TalkRoomResponse of(String userName, TalkRoom talkRoom, List<ReadingStatus> readingStatuses,
public static TalkRoomResponse of(String userName, String title, String content,
List<ReadingStatus> readingStatuses,
String bookImage, String bookName) {
return TalkRoomResponse.builder()
.userName(userName)
.title(talkRoom.getTitle())
.content(talkRoom.getContent())
.title(title)
.content(content)
.bookName(bookName)
.readingStatuses(readingStatuses)
.bookImage(bookImage)
Expand Down
7 changes: 3 additions & 4 deletions src/main/java/com/jisungin/domain/talkroom/TalkRoom.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.jisungin.domain.talkroom;

import com.jisungin.application.talkroom.request.TalkRoomCreateServiceRequest;
import com.jisungin.application.talkroom.request.TalkRoomEditServiceRequest;
import com.jisungin.domain.BaseEntity;
import com.jisungin.domain.book.Book;
Expand Down Expand Up @@ -52,12 +51,12 @@ private TalkRoom(Book book, User user, String title, String content) {
this.content = content;
}

public static TalkRoom create(TalkRoomCreateServiceRequest request, Book book, User user) {
public static TalkRoom create(String title, String content, Book book, User user) {
return TalkRoom.builder()
.book(book)
.user(user)
.title(request.getTitle())
.content(request.getContent())
.title(title)
.content(content)
.build();
}

Expand Down
34 changes: 34 additions & 0 deletions src/test/java/com/jisungin/ControllerTestSupport.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.jisungin;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.jisungin.api.comment.CommentController;
import com.jisungin.api.oauth.AuthContext;
import com.jisungin.api.talkroom.TalkRoomController;
import com.jisungin.application.comment.CommentService;
import com.jisungin.application.talkroom.TalkRoomService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.web.servlet.MockMvc;

@WebMvcTest(controllers = {
TalkRoomController.class,
CommentController.class
})
public abstract class ControllerTestSupport {

@Autowired
protected MockMvc mockMvc;

@Autowired
protected ObjectMapper objectMapper;

@MockBean
protected TalkRoomService talkRoomService;

@MockBean
protected CommentService commentService;

@MockBean
protected AuthContext authContext;
}
7 changes: 7 additions & 0 deletions src/test/java/com/jisungin/ServiceTestSupport.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.jisungin;

import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public abstract class ServiceTestSupport {
}
21 changes: 2 additions & 19 deletions src/test/java/com/jisungin/api/comment/CommentControllerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,12 @@
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.jisungin.ControllerTestSupport;
import com.jisungin.api.comment.request.CommentCreateRequest;
import com.jisungin.application.comment.CommentService;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.web.servlet.MockMvc;

@SpringBootTest
@AutoConfigureMockMvc
class CommentControllerTest {

@MockBean
CommentService commentService;

@Autowired
MockMvc mockMvc;

@Autowired
ObjectMapper objectMapper;
class CommentControllerTest extends ControllerTestSupport {

@Test
@DisplayName("유저가 토크방에 자신의 의견을 작성한다.")
Expand Down
Loading

0 comments on commit de35051

Please sign in to comment.