Skip to content

Commit

Permalink
✨ Feature: 일기 수정 및 삭제 테스트 케이스 작성 및 유효성 검사 추가 (#53)
Browse files Browse the repository at this point in the history
* ✅ Test: DiaryCommandServiceTest 작성

* ✨ Feature: DiaryCommandService 유효성 검사 추가

* ♻️ Refactor: 패키지 경로 수정

* ✅ Test: DiaryControllerTest 작성

* ✅ Test: 존재하지 않는 일기 수정 테스트 케이스 추가
  • Loading branch information
ahnsugyeong authored Apr 23, 2024
1 parent aa01001 commit 568f2ba
Show file tree
Hide file tree
Showing 25 changed files with 349 additions and 65 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
import zzangdol.auth.presentation.dto.request.SignInRequest;
import zzangdol.auth.presentation.dto.request.SignUpRequest;
import zzangdol.auth.presentation.dto.response.EmailVerificationTokenResponse;
import zzangdol.exception.custom.UserCredentialsException;
import zzangdol.jwt.JwtResponse;
import zzangdol.jwt.JwtService;
import zzangdol.moodoodlecommon.exception.custom.UserCredentialsException;
import zzangdol.response.status.ErrorStatus;
import zzangdol.ses.service.AwsSesService;
import zzangdol.user.domain.User;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
import org.springframework.transaction.annotation.Transactional;
import zzangdol.auth.presentation.dto.request.SignInRequest;
import zzangdol.auth.presentation.dto.request.SignUpRequest;
import zzangdol.exception.custom.UserCredentialsException;
import zzangdol.jwt.JwtResponse;
import zzangdol.jwt.JwtService;
import zzangdol.moodoodlecommon.exception.custom.UserCredentialsException;
import zzangdol.response.status.ErrorStatus;
import zzangdol.user.dao.UserRepository;
import zzangdol.user.domain.AuthProvider;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import zzangdol.auth.presentation.dto.response.EmailVerificationTokenResponse;
import zzangdol.moodoodlecommon.exception.custom.InvalidTokenException;
import zzangdol.exception.custom.InvalidTokenException;
import zzangdol.redis.dao.EmailVerificationTokenRepository;
import zzangdol.redis.domain.EmailVerificationToken;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
import java.util.concurrent.ThreadLocalRandom;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import zzangdol.moodoodlecommon.exception.custom.VerificationCodeException;
import zzangdol.response.status.ErrorStatus;
import zzangdol.exception.custom.VerificationCodeException;
import zzangdol.redis.dao.VerificationCodeRepository;
import zzangdol.redis.domain.VerificationCode;
import zzangdol.response.status.ErrorStatus;

@RequiredArgsConstructor
@Service
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package zzangdol.diary.implement;

import groovy.util.logging.Slf4j;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
Expand All @@ -10,14 +11,16 @@
import zzangdol.diary.domain.Diary;
import zzangdol.diary.domain.DiaryEmotion;
import zzangdol.diary.domain.Painting;
import zzangdol.emotion.domain.Emotion;
import zzangdol.diary.presentation.dto.request.DiaryCreateRequest;
import zzangdol.diary.presentation.dto.request.DiaryUpdateRequest;
import zzangdol.moodoodlecommon.exception.custom.DiaryDateOutOfBoundsException;
import zzangdol.moodoodlecommon.exception.custom.DiaryDuplicateDateException;
import zzangdol.moodoodlecommon.exception.custom.DiaryNotFoundException;
import zzangdol.emotion.domain.Emotion;
import zzangdol.exception.custom.DiaryAccessDeniedException;
import zzangdol.exception.custom.DiaryDateOutOfBoundsException;
import zzangdol.exception.custom.DiaryDuplicateDateException;
import zzangdol.exception.custom.DiaryNotFoundException;
import zzangdol.user.domain.User;

@Slf4j
@RequiredArgsConstructor
@Transactional
@Service
Expand All @@ -27,26 +30,26 @@ public class DiaryCommandServiceImpl implements DiaryCommandService {

@Override
public Diary createDiary(User user, DiaryCreateRequest request, String color,
List<Emotion> emotions) {
List<Emotion> emotions) {
validateDiaryDate(request.getDate());
checkDiaryDuplication(user, request.getDate());
Painting painting = buildPainting(request, color);
Diary diary = buildDiary(user, request, emotions, painting);
return diaryRepository.save(diary);
}

private void checkDiaryDuplication(User user, LocalDateTime date) {
if (diaryRepository.existsByDateAndUserId(date, user.getId())) {
throw DiaryDuplicateDateException.EXCEPTION;
}
}

private void validateDiaryDate(LocalDateTime date) {
if (date.toLocalDate().isAfter(LocalDate.now())) {
throw DiaryDateOutOfBoundsException.EXCEPTION;
}
}

private void checkDiaryDuplication(User user, LocalDateTime date) {
if (diaryRepository.existsByDateAndUserId(date, user.getId())) {
throw DiaryDuplicateDateException.EXCEPTION;
}
}

private Diary buildDiary(User user, DiaryCreateRequest request, List<Emotion> emotions, Painting painting) {
Diary diary = Diary.builder()
.date(request.getDate())
Expand Down Expand Up @@ -78,14 +81,28 @@ private Painting buildPainting(DiaryCreateRequest request, String color) {
public Diary updateDiary(User user, Long diaryId, DiaryUpdateRequest request) {
Diary diary = diaryRepository.findById(diaryId)
.orElseThrow(() -> DiaryNotFoundException.EXCEPTION);
checkDiaryOwnership(user, diary);
if (request.getDate() != null) {
validateDiaryDate(request.getDate());
checkDiaryDuplication(user, request.getDate());
}
diary.updateDate(request.getDate());
diary.updateContent(request.getContent());
return diary;
}

@Override
public void deleteDiary(User user, Long diaryId) {
Diary diary = diaryRepository.findById(diaryId)
.orElseThrow(() -> DiaryNotFoundException.EXCEPTION);
checkDiaryOwnership(user, diary);
diaryRepository.deleteById(diaryId);
}

private void checkDiaryOwnership(User user, Diary diary) {
if (!diary.getUser().getId().equals(user.getId())) {
throw DiaryAccessDeniedException.EXCEPTION;
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
import zzangdol.diary.dao.DiaryRepository;
import zzangdol.diary.dao.querydsl.DiaryQueryRepository;
import zzangdol.diary.domain.Diary;
import zzangdol.moodoodlecommon.exception.custom.DiaryAccessDeniedException;
import zzangdol.moodoodlecommon.exception.custom.DiaryNotFoundException;
import zzangdol.exception.custom.DiaryAccessDeniedException;
import zzangdol.exception.custom.DiaryNotFoundException;
import zzangdol.user.domain.User;

@RequiredArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;
import zzangdol.moodoodlecommon.exception.custom.InvalidTokenException;
import zzangdol.user.domain.User;
import zzangdol.exception.GeneralException;
import zzangdol.exception.custom.InvalidTokenException;
import zzangdol.jwt.JwtProvider;
import zzangdol.user.implement.UserQueryService;
import zzangdol.moodoodlecommon.exception.GeneralException;
import zzangdol.response.status.ErrorStatus;
import zzangdol.user.domain.User;
import zzangdol.user.implement.UserQueryService;

@RequiredArgsConstructor
@Component
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import org.springframework.web.context.request.ServletWebRequest;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
import zzangdol.moodoodlecommon.exception.GeneralException;
import zzangdol.exception.GeneralException;
import zzangdol.response.ResponseDto;
import zzangdol.response.status.ErrorStatus;

Expand Down
8 changes: 4 additions & 4 deletions moodoodle-api/src/main/java/zzangdol/jwt/JwtProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import zzangdol.moodoodlecommon.exception.custom.ExpiredTokenException;
import zzangdol.moodoodlecommon.exception.custom.InvalidTokenException;
import zzangdol.user.domain.User;
import zzangdol.moodoodlecommon.exception.GeneralException;
import zzangdol.exception.GeneralException;
import zzangdol.exception.custom.ExpiredTokenException;
import zzangdol.exception.custom.InvalidTokenException;
import zzangdol.response.status.ErrorStatus;
import zzangdol.user.domain.User;

@Component
public class JwtProvider {
Expand Down
10 changes: 5 additions & 5 deletions moodoodle-api/src/main/java/zzangdol/jwt/JwtService.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
import io.jsonwebtoken.Claims;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import zzangdol.user.dao.UserRepository;
import zzangdol.user.domain.User;
import zzangdol.moodoodlecommon.exception.GeneralException;
import zzangdol.moodoodlecommon.exception.custom.UserNotFoundException;
import zzangdol.response.status.ErrorStatus;
import zzangdol.exception.GeneralException;
import zzangdol.exception.custom.UserNotFoundException;
import zzangdol.redis.dao.RefreshTokenRepository;
import zzangdol.redis.domain.RefreshToken;
import zzangdol.response.status.ErrorStatus;
import zzangdol.user.dao.UserRepository;
import zzangdol.user.domain.User;

@RequiredArgsConstructor
@Service
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import zzangdol.moodoodlecommon.exception.custom.UserNotFoundException;
import zzangdol.exception.custom.UserNotFoundException;
import zzangdol.user.dao.UserRepository;
import zzangdol.user.domain.User;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package zzangdol.moodoodleapi;
package zzangdol;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
Expand Down
Loading

0 comments on commit 568f2ba

Please sign in to comment.