Skip to content

Commit

Permalink
feat: TalkRoom 삭제 API 테스트 코드 작성 (#36)
Browse files Browse the repository at this point in the history
  • Loading branch information
AHNYUNKI committed Mar 25, 2024
1 parent 744b4c4 commit fafd6b4
Show file tree
Hide file tree
Showing 2 changed files with 121 additions and 16 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.jisungin.api.talkroom;

import static org.springframework.http.MediaType.APPLICATION_JSON;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
Expand Down Expand Up @@ -188,4 +189,18 @@ void findOneTalkRoom() throws Exception {
.andExpect(jsonPath("$.message").value("OK"));
}

@Test
@DisplayName("토크방을 삭제한다.")
void deleteTalkRoom() throws Exception {
// when // then
mockMvc.perform(delete("/v1/talk-rooms/1")
.contentType(APPLICATION_JSON)
)
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$.code").value("200"))
.andExpect(jsonPath("$.status").value("OK"))
.andExpect(jsonPath("$.message").value("OK"));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -453,11 +453,7 @@ void findOneTalkRoom() {

createTalkRoomRole(talkRoom);

Comment comment = Comment.builder()
.talkRoom(talkRoom)
.user(user)
.content("의견 남기기")
.build();
Comment comment = createComment(talkRoom, user);

commentRepository.save(comment);
// when
Expand All @@ -470,17 +466,6 @@ void findOneTalkRoom() {
assertThat("[email protected]").isEqualTo(findOneTalkRoomResponse.getComments().get(0).getUserName());
}

private void createTalkRoomRole(TalkRoom talkRoom) {
List<String> request = new ArrayList<>();
request.add("읽는 중");
request.add("읽음");

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

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

@Test
@DisplayName("토크방을 단건 조회 했을 때 의견이 담기지 않았아도 조회는 정상적으로 되어야 한다.")
void findOneTalkRoomWithCommentNull() {
Expand Down Expand Up @@ -539,6 +524,111 @@ void findOneTalkRoomWithFindAllComment() {
assertThat("의견 19").isEqualTo(findOneTalkRoomResponse.getComments().get(19).getContent());
}

@Test
@DisplayName("토크방을 생성한 유저가 토크방을 삭제한다.")
void deleteTalkRoom() {
// given
User user = createUser();
userRepository.save(user);

Book book = createBook();
bookRepository.save(book);

TalkRoom talkRoom = createTalkRoom(book, user);
talkRoomRepository.save(talkRoom);

createTalkRoomRole(talkRoom);

Comment comment = createComment(talkRoom, user);

commentRepository.save(comment);

// when
talkRoomService.deleteTalkRoom(talkRoom.getId(), user.getId());

// then
assertThat(0).isEqualTo(talkRoomRepository.findAll().size());
assertThat(0).isEqualTo(commentRepository.findAll().size());
}

@Test
@DisplayName("토크방을 생성하지 않은 유저(UserB)가 다른 유저(UserA)가 생성한 토크방을 삭제할 수 없다.")
void deleteTalkRoomWithUserB() {
// given
User userA = createUser();
userRepository.save(userA);

User userB = User.builder()
.name("[email protected]")
.profileImage("image")
.oauthId(
OauthId.builder()
.oauthId("oauthId2")
.oauthType(OauthType.KAKAO)
.build()
)
.build();
userRepository.save(userB);

Book book = createBook();
bookRepository.save(book);

TalkRoom talkRoom = createTalkRoom(book, userA);
talkRoomRepository.save(talkRoom);

createTalkRoomRole(talkRoom);

Comment comment = createComment(talkRoom, userA);

commentRepository.save(comment);

// when // then
assertThatThrownBy(() -> talkRoomService.deleteTalkRoom(talkRoom.getId(), userB.getId()))
.isInstanceOf(BusinessException.class)
.hasMessage("권한이 없는 사용자입니다.");
}

@Test
@DisplayName("토크방을 삭제할 때 의견이 없어도 정상적으로 삭제가 된다.")
void deleteTalkRoomWithComment() {
// given
User user = createUser();
userRepository.save(user);

Book book = createBook();
bookRepository.save(book);

TalkRoom talkRoom = createTalkRoom(book, user);
talkRoomRepository.save(talkRoom);

createTalkRoomRole(talkRoom);

// when
talkRoomService.deleteTalkRoom(talkRoom.getId(), user.getId());

// then
assertThat(0).isEqualTo(talkRoomRepository.findAll().size());
}

private static Comment createComment(TalkRoom talkRoom, User user) {
return Comment.builder()
.talkRoom(talkRoom)
.user(user)
.content("의견 남기기")
.build();
}

private void createTalkRoomRole(TalkRoom talkRoom) {
List<String> request = new ArrayList<>();
request.add("읽는 중");
request.add("읽음");

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

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

private static TalkRoom createTalkRoom(Book book, User user) {
return TalkRoom.builder()
.book(book)
Expand Down

0 comments on commit fafd6b4

Please sign in to comment.