Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public ResponseDto<String> create(CreatePostServiceDto serviceDto, Long challeng
Challenge challenge = challengeRepository.findById(challengeId)
.orElse(null);
if (challenge == null) {
ResponseDto.fail("챌린지가 존재하지 않습니다.");
return ResponseDto.fail("챌린지가 존재하지 않습니다.");
}

log.info("Create Post");
Expand Down
222 changes: 136 additions & 86 deletions src/test/java/com/zerototen/savegame/service/HeartsServiceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import java.util.Optional;
import javax.servlet.http.HttpServletRequest;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
Expand All @@ -37,95 +38,144 @@ class HeartsServiceTest {
@InjectMocks
private HeartService heartsService;

@Test
@DisplayName("하트 생성_성공")
void saveHearts() {
//given
HttpServletRequest request = mock(HttpServletRequest.class);
Member member = getMember();
ResponseDto<?> validateCheckResponse = ResponseDto.success(member);

Post post = getPost();
willReturn(Optional.of(post)).given(postRepository).findById(any());
willReturn(validateCheckResponse)
.given(tokenProvider).validateCheck(any(HttpServletRequest.class));

//when
ResponseDto<?> responseDto = heartsService.create(request, post.getId());

//then
assertTrue(responseDto.isSuccess());
assertEquals("Heart Create Success", responseDto.getData());

}

@Test
@DisplayName("하트 생성 중복")
void twoTimesSaveHearts() {
//given
HttpServletRequest request = mock(HttpServletRequest.class);
Member member = getMember();
ResponseDto<?> validateCheckResponse = ResponseDto.success(member);

Post post = getPost();
willReturn(Optional.of(post)).given(postRepository).findById(any());
willReturn(validateCheckResponse)
.given(tokenProvider).validateCheck(any(HttpServletRequest.class));
willReturn(true)
.given(heartRepository).existsByMemberAndPost(member, post);

//when
CustomException exception = assertThrows(CustomException.class,
() -> heartsService.create(request, post.getId()));

//then
assertEquals(ErrorCode.ALREADY_REGISTERED_HEART, exception.getErrorCode());
}

@Test
@DisplayName("하트 삭제")
void unHearts() {
//given
HttpServletRequest request = mock(HttpServletRequest.class);
Member member = getMember();
ResponseDto<?> validateCheckResponse = ResponseDto.success(member);

Post post = getPost();
willReturn(Optional.of(post)).given(postRepository).findById(any());
willReturn(validateCheckResponse)
.given(tokenProvider).validateCheck(any(HttpServletRequest.class));
willReturn(true)
.given(heartRepository).existsByMemberAndPost(member, post);

//when
ResponseDto<?> responseDto = heartsService.delete(request, post.getId());

//then
assertTrue(responseDto.isSuccess());
assertEquals("Heart Delete Success", responseDto.getData());
@Nested
@DisplayName("성공")
class Success {
@Test
@DisplayName("하트 생성")
void saveHearts() {
//given
HttpServletRequest request = mock(HttpServletRequest.class);
Member member = getMember();
ResponseDto<?> validateCheckResponse = ResponseDto.success(member);

Post post = getPost();
willReturn(Optional.of(post)).given(postRepository).findById(any());
willReturn(validateCheckResponse)
.given(tokenProvider).validateCheck(any(HttpServletRequest.class));

//when
ResponseDto<?> responseDto = heartsService.create(request, post.getId());

//then
assertTrue(responseDto.isSuccess());
assertEquals("Heart Create Success", responseDto.getData());

}

@Test
@DisplayName("하트 삭제")
void unHearts() {
//given
HttpServletRequest request = mock(HttpServletRequest.class);
Member member = getMember();
ResponseDto<?> validateCheckResponse = ResponseDto.success(member);

Post post = getPost();
willReturn(Optional.of(post)).given(postRepository).findById(any());
willReturn(validateCheckResponse)
.given(tokenProvider).validateCheck(any(HttpServletRequest.class));
willReturn(true)
.given(heartRepository).existsByMemberAndPost(member, post);

//when
ResponseDto<?> responseDto = heartsService.delete(request, post.getId());

//then
assertTrue(responseDto.isSuccess());
assertEquals("Heart Delete Success", responseDto.getData());
}
}

@Test
@DisplayName("하트 삭제 중복")
void twoTimesUnHearts() {
//given
HttpServletRequest request = mock(HttpServletRequest.class);
Member member = getMember();
ResponseDto<?> validateCheckResponse = ResponseDto.success(member);

Post post = getPost();
willReturn(Optional.of(post)).given(postRepository).findById(any());
willReturn(validateCheckResponse)
.given(tokenProvider).validateCheck(any(HttpServletRequest.class));
willReturn(false)
.given(heartRepository).existsByMemberAndPost(member, post);

//when
CustomException exception = assertThrows(CustomException.class,
() -> heartsService.delete(request, post.getId()));

//then
assertEquals(ErrorCode.NOT_FOUND_HEART, exception.getErrorCode());
@Nested
@DisplayName("실패")
class Fail {
@Test
@DisplayName("하트 생성_포스트가 없음")
void heartNotFoundPost() {
HttpServletRequest request = mock(HttpServletRequest.class);
Member member = getMember();
ResponseDto<?> validateCheckResponse = ResponseDto.success(member);

Post post = getPost();
willReturn(Optional.empty()).given(postRepository).findById(1L);
willReturn(validateCheckResponse)
.given(tokenProvider).validateCheck(any(HttpServletRequest.class));

//when
CustomException exception = assertThrows(CustomException.class,
()->heartsService.create(request, post.getId()));

//then
assertEquals(ErrorCode.NOT_FOUND_POST, exception.getErrorCode());
}

@Test
@DisplayName("하트삭제_포스트가 없음")
void unHeartNotFoundPost() {
HttpServletRequest request = mock(HttpServletRequest.class);
Member member = getMember();
ResponseDto<?> validateCheckResponse = ResponseDto.success(member);

Post post = getPost();
willReturn(Optional.empty()).given(postRepository).findById(1L);
willReturn(validateCheckResponse)
.given(tokenProvider).validateCheck(any(HttpServletRequest.class));

//when
CustomException exception = assertThrows(CustomException.class,
()->heartsService.delete(request, post.getId()));

//then
assertEquals(ErrorCode.NOT_FOUND_POST, exception.getErrorCode());
}

@Test
@DisplayName("하트 삭제 중복")
void twoTimesUnHearts() {
//given
HttpServletRequest request = mock(HttpServletRequest.class);
Member member = getMember();
ResponseDto<?> validateCheckResponse = ResponseDto.success(member);

Post post = getPost();
willReturn(Optional.of(post)).given(postRepository).findById(any());
willReturn(validateCheckResponse)
.given(tokenProvider).validateCheck(any(HttpServletRequest.class));
willReturn(false)
.given(heartRepository).existsByMemberAndPost(member, post);

//when
CustomException exception = assertThrows(CustomException.class,
() -> heartsService.delete(request, post.getId()));

//then
assertEquals(ErrorCode.NOT_FOUND_HEART, exception.getErrorCode());
}

@Test
@DisplayName("하트 생성 중복")
void twoTimesSaveHearts() {
//given
HttpServletRequest request = mock(HttpServletRequest.class);
Member member = getMember();
ResponseDto<?> validateCheckResponse = ResponseDto.success(member);

Post post = getPost();
willReturn(Optional.of(post)).given(postRepository).findById(any());
willReturn(validateCheckResponse)
.given(tokenProvider).validateCheck(any(HttpServletRequest.class));
willReturn(true)
.given(heartRepository).existsByMemberAndPost(member, post);

//when
CustomException exception = assertThrows(CustomException.class,
() -> heartsService.create(request, post.getId()));

//then
assertEquals(ErrorCode.ALREADY_REGISTERED_HEART, exception.getErrorCode());
}
}

private Member getMember() {
Expand Down
Loading