diff --git a/src/main/java/dev/book/accountbook/controller/BudgetController.java b/src/main/java/dev/book/accountbook/controller/BudgetController.java index 18ec4d04..bf22ac3c 100644 --- a/src/main/java/dev/book/accountbook/controller/BudgetController.java +++ b/src/main/java/dev/book/accountbook/controller/BudgetController.java @@ -22,8 +22,7 @@ public class BudgetController implements BudgetApi { @GetMapping public ResponseEntity getBudget(@AuthenticationPrincipal CustomUserDetails userDetails, @RequestParam LocalDate date) { Long userId = userDetails.user().getId(); - int month = date.getMonthValue(); - BudgetResponse response = budgetService.getBudget(userId, month); + BudgetResponse response = budgetService.getBudget(userId, date); return ResponseEntity.ok(response); } diff --git a/src/main/java/dev/book/accountbook/repository/querydsl/budget/BudgetRepositoryCustom.java b/src/main/java/dev/book/accountbook/repository/querydsl/budget/BudgetRepositoryCustom.java index 479930ef..c32dbc00 100644 --- a/src/main/java/dev/book/accountbook/repository/querydsl/budget/BudgetRepositoryCustom.java +++ b/src/main/java/dev/book/accountbook/repository/querydsl/budget/BudgetRepositoryCustom.java @@ -2,7 +2,9 @@ import dev.book.accountbook.dto.response.BudgetResponse; +import java.time.LocalDate; + public interface BudgetRepositoryCustom { - BudgetResponse findBudgetWithTotal(Long userId); + BudgetResponse findBudgetWithTotal(Long userId, LocalDate localDate); BudgetResponse findBudgetByUserIdWithTotal(Long userId); } diff --git a/src/main/java/dev/book/accountbook/repository/querydsl/budget/BudgetRepositoryImpl.java b/src/main/java/dev/book/accountbook/repository/querydsl/budget/BudgetRepositoryImpl.java index 86efdf04..978c011b 100644 --- a/src/main/java/dev/book/accountbook/repository/querydsl/budget/BudgetRepositoryImpl.java +++ b/src/main/java/dev/book/accountbook/repository/querydsl/budget/BudgetRepositoryImpl.java @@ -6,17 +6,23 @@ import dev.book.accountbook.dto.response.BudgetResponse; import dev.book.accountbook.entity.QAccountBook; import dev.book.accountbook.entity.QBudget; +import dev.book.accountbook.type.CategoryType; import lombok.RequiredArgsConstructor; +import java.time.LocalDate; + @RequiredArgsConstructor public class BudgetRepositoryImpl implements BudgetRepositoryCustom { private final JPAQueryFactory queryFactory; @Override - public BudgetResponse findBudgetWithTotal(Long id) { + public BudgetResponse findBudgetWithTotal(Long id, LocalDate localDate) { QBudget budget = QBudget.budget; QAccountBook accountBook = QAccountBook.accountBook; + LocalDate startOfMonth = localDate.withDayOfMonth(1); + LocalDate endOfMonth = localDate.withDayOfMonth(localDate.lengthOfMonth()); + return queryFactory .select(Projections.constructor(BudgetResponse.class, budget.id, @@ -26,8 +32,8 @@ public BudgetResponse findBudgetWithTotal(Long id) { .from(budget) .leftJoin(accountBook) .on(accountBook.user.id.eq(budget.user.id) - .and(Expressions.numberTemplate(Integer.class, "month({0})", accountBook.occurredAt) - .eq(budget.month)) + .and(accountBook.type.eq(CategoryType.SPEND)) + .and(accountBook.occurredAt.between(startOfMonth, endOfMonth)) ) .where(budget.id.eq(id)) .groupBy(budget.id, budget.budgetLimit) diff --git a/src/main/java/dev/book/accountbook/service/AccountBookSpendService.java b/src/main/java/dev/book/accountbook/service/AccountBookSpendService.java index a11df59f..2fcfbece 100644 --- a/src/main/java/dev/book/accountbook/service/AccountBookSpendService.java +++ b/src/main/java/dev/book/accountbook/service/AccountBookSpendService.java @@ -16,7 +16,7 @@ import dev.book.accountbook.type.CategoryType; import dev.book.achievement.achievement_user.dto.event.GetWarningBudgetEvent; import dev.book.challenge.rank.SpendCreatedRankingEvent; -import dev.book.global.config.Firebase.dto.LimitWarningFcmEvent; +import dev.book.global.config.firebase.dto.LimitWarningFcmEvent; import dev.book.global.entity.Category; import dev.book.global.repository.CategoryRepository; import dev.book.user.entity.UserEntity; diff --git a/src/main/java/dev/book/accountbook/service/BudgetService.java b/src/main/java/dev/book/accountbook/service/BudgetService.java index 2ae049a5..85b5e1af 100644 --- a/src/main/java/dev/book/accountbook/service/BudgetService.java +++ b/src/main/java/dev/book/accountbook/service/BudgetService.java @@ -27,11 +27,11 @@ public class BudgetService { private final ApplicationEventPublisher eventPublisher; @Transactional(readOnly = true) - public BudgetResponse getBudget(Long userId, int month) { + public BudgetResponse getBudget(Long userId, LocalDate localDate) { UserEntity user = userRepository.findById(userId).orElseThrow(() -> new UserErrorException(UserErrorCode.USER_NOT_FOUND)); - Budget budget = budgetRepository.findByMonthAndUserId(month, user.getId()).orElseThrow(() -> new AccountBookErrorException(AccountBookErrorCode.NOT_FOUND_BUDGET)); + Budget budget = budgetRepository.findByMonthAndUserId(localDate.getMonthValue(), user.getId()).orElseThrow(() -> new AccountBookErrorException(AccountBookErrorCode.NOT_FOUND_BUDGET)); - return budgetRepository.findBudgetWithTotal(budget.getId()); + return budgetRepository.findBudgetWithTotal(budget.getId(), localDate); } @Transactional @@ -44,7 +44,7 @@ public BudgetResponse createBudget(Long userId, BudgetRequest budgetRequest) { eventPublisher.publishEvent(new CreateBudgetEvent(userEntity)); - return budgetRepository.findBudgetWithTotal(budget.getId()); + return budgetRepository.findBudgetWithTotal(budget.getId(), LocalDate.now()); } @Transactional @@ -53,7 +53,7 @@ public BudgetResponse modify(Long userId, Long id, BudgetRequest budgetRequest) budget.modifyBudget(budgetRequest.budget()); budgetRepository.flush(); - return budgetRepository.findBudgetWithTotal(budget.getId()); + return budgetRepository.findBudgetWithTotal(budget.getId(), LocalDate.now()); } @Transactional diff --git a/src/main/java/dev/book/achievement/service/AchievementService.java b/src/main/java/dev/book/achievement/service/AchievementService.java index c56e6108..111efdbb 100644 --- a/src/main/java/dev/book/achievement/service/AchievementService.java +++ b/src/main/java/dev/book/achievement/service/AchievementService.java @@ -8,11 +8,11 @@ import dev.book.achievement.exception.AchievementErrorCode; import dev.book.achievement.exception.AchievementException; import dev.book.achievement.repository.AchievementRepository; -import dev.book.global.config.Firebase.entity.FcmToken; -import dev.book.global.config.Firebase.exception.FcmTokenErrorCode; -import dev.book.global.config.Firebase.exception.FcmTokenErrorException; -import dev.book.global.config.Firebase.repository.FcmTokenRepository; -import dev.book.global.config.Firebase.service.FCMService; +import dev.book.global.config.firebase.entity.FcmToken; +import dev.book.global.config.firebase.exception.FcmTokenErrorCode; +import dev.book.global.config.firebase.exception.FcmTokenErrorException; +import dev.book.global.config.firebase.repository.FcmTokenRepository; +import dev.book.global.config.firebase.service.FCMService; import dev.book.global.sse.service.SseService; import dev.book.user.entity.UserEntity; import dev.book.user.exception.UserErrorCode; diff --git a/src/main/java/dev/book/global/config/Firebase/FirebaseConfig.java b/src/main/java/dev/book/global/config/firebase/FirebaseConfig.java similarity index 95% rename from src/main/java/dev/book/global/config/Firebase/FirebaseConfig.java rename to src/main/java/dev/book/global/config/firebase/FirebaseConfig.java index c0f4d250..78521f01 100644 --- a/src/main/java/dev/book/global/config/Firebase/FirebaseConfig.java +++ b/src/main/java/dev/book/global/config/firebase/FirebaseConfig.java @@ -1,4 +1,4 @@ -package dev.book.global.config.Firebase; +package dev.book.global.config.firebase; import com.google.auth.oauth2.GoogleCredentials; import com.google.firebase.FirebaseApp; diff --git a/src/main/java/dev/book/global/config/Firebase/controller/FcmController.java b/src/main/java/dev/book/global/config/firebase/controller/FcmController.java similarity index 88% rename from src/main/java/dev/book/global/config/Firebase/controller/FcmController.java rename to src/main/java/dev/book/global/config/firebase/controller/FcmController.java index 9118aad8..a7d6f778 100644 --- a/src/main/java/dev/book/global/config/Firebase/controller/FcmController.java +++ b/src/main/java/dev/book/global/config/firebase/controller/FcmController.java @@ -1,8 +1,8 @@ -package dev.book.global.config.Firebase.controller; +package dev.book.global.config.firebase.controller; import dev.book.accountbook.service.AccountBookSpendService; -import dev.book.global.config.Firebase.controller.swagger.FcmControllerApi; -import dev.book.global.config.Firebase.service.FCMService; +import dev.book.global.config.firebase.controller.swagger.FcmControllerApi; +import dev.book.global.config.firebase.service.FCMService; import dev.book.global.config.security.dto.CustomUserDetails; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; diff --git a/src/main/java/dev/book/global/config/Firebase/controller/swagger/FcmControllerApi.java b/src/main/java/dev/book/global/config/firebase/controller/swagger/FcmControllerApi.java similarity index 98% rename from src/main/java/dev/book/global/config/Firebase/controller/swagger/FcmControllerApi.java rename to src/main/java/dev/book/global/config/firebase/controller/swagger/FcmControllerApi.java index 4b454c35..9e875937 100644 --- a/src/main/java/dev/book/global/config/Firebase/controller/swagger/FcmControllerApi.java +++ b/src/main/java/dev/book/global/config/firebase/controller/swagger/FcmControllerApi.java @@ -1,4 +1,4 @@ -package dev.book.global.config.Firebase.controller.swagger; +package dev.book.global.config.firebase.controller.swagger; import dev.book.global.config.security.dto.CustomUserDetails; import io.swagger.v3.oas.annotations.Operation; diff --git a/src/main/java/dev/book/global/config/Firebase/dto/LimitWarningFcmEvent.java b/src/main/java/dev/book/global/config/firebase/dto/LimitWarningFcmEvent.java similarity index 70% rename from src/main/java/dev/book/global/config/Firebase/dto/LimitWarningFcmEvent.java rename to src/main/java/dev/book/global/config/firebase/dto/LimitWarningFcmEvent.java index 7359eff9..0849af77 100644 --- a/src/main/java/dev/book/global/config/Firebase/dto/LimitWarningFcmEvent.java +++ b/src/main/java/dev/book/global/config/firebase/dto/LimitWarningFcmEvent.java @@ -1,4 +1,4 @@ -package dev.book.global.config.Firebase.dto; +package dev.book.global.config.firebase.dto; public record LimitWarningFcmEvent (Long userId, String nickname, int budget, long total, long usageRate){ } diff --git a/src/main/java/dev/book/global/config/Firebase/entity/FcmToken.java b/src/main/java/dev/book/global/config/firebase/entity/FcmToken.java similarity index 92% rename from src/main/java/dev/book/global/config/Firebase/entity/FcmToken.java rename to src/main/java/dev/book/global/config/firebase/entity/FcmToken.java index aa2e4b34..524bfa19 100644 --- a/src/main/java/dev/book/global/config/Firebase/entity/FcmToken.java +++ b/src/main/java/dev/book/global/config/firebase/entity/FcmToken.java @@ -1,4 +1,4 @@ -package dev.book.global.config.Firebase.entity; +package dev.book.global.config.firebase.entity; import dev.book.user.entity.UserEntity; import jakarta.persistence.*; diff --git a/src/main/java/dev/book/global/config/Firebase/exception/FcmTokenErrorCode.java b/src/main/java/dev/book/global/config/firebase/exception/FcmTokenErrorCode.java similarity index 88% rename from src/main/java/dev/book/global/config/Firebase/exception/FcmTokenErrorCode.java rename to src/main/java/dev/book/global/config/firebase/exception/FcmTokenErrorCode.java index f0eaeef2..0c5cd155 100644 --- a/src/main/java/dev/book/global/config/Firebase/exception/FcmTokenErrorCode.java +++ b/src/main/java/dev/book/global/config/firebase/exception/FcmTokenErrorCode.java @@ -1,4 +1,4 @@ -package dev.book.global.config.Firebase.exception; +package dev.book.global.config.firebase.exception; import dev.book.global.exception.ErrorCode; import lombok.Getter; diff --git a/src/main/java/dev/book/global/config/Firebase/exception/FcmTokenErrorException.java b/src/main/java/dev/book/global/config/firebase/exception/FcmTokenErrorException.java similarity index 93% rename from src/main/java/dev/book/global/config/Firebase/exception/FcmTokenErrorException.java rename to src/main/java/dev/book/global/config/firebase/exception/FcmTokenErrorException.java index 9a5cbec0..e2dc304c 100644 --- a/src/main/java/dev/book/global/config/Firebase/exception/FcmTokenErrorException.java +++ b/src/main/java/dev/book/global/config/firebase/exception/FcmTokenErrorException.java @@ -1,4 +1,4 @@ -package dev.book.global.config.Firebase.exception; +package dev.book.global.config.firebase.exception; import dev.book.global.exception.CustomErrorException; import lombok.Getter; diff --git a/src/main/java/dev/book/global/config/Firebase/repository/FcmTokenRepository.java b/src/main/java/dev/book/global/config/firebase/repository/FcmTokenRepository.java similarity index 72% rename from src/main/java/dev/book/global/config/Firebase/repository/FcmTokenRepository.java rename to src/main/java/dev/book/global/config/firebase/repository/FcmTokenRepository.java index bdc004f6..bef806d2 100644 --- a/src/main/java/dev/book/global/config/Firebase/repository/FcmTokenRepository.java +++ b/src/main/java/dev/book/global/config/firebase/repository/FcmTokenRepository.java @@ -1,6 +1,6 @@ -package dev.book.global.config.Firebase.repository; +package dev.book.global.config.firebase.repository; -import dev.book.global.config.Firebase.entity.FcmToken; +import dev.book.global.config.firebase.entity.FcmToken; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/src/main/java/dev/book/global/config/Firebase/service/FCMService.java b/src/main/java/dev/book/global/config/firebase/service/FCMService.java similarity index 94% rename from src/main/java/dev/book/global/config/Firebase/service/FCMService.java rename to src/main/java/dev/book/global/config/firebase/service/FCMService.java index 7cfff245..e4c3e73c 100644 --- a/src/main/java/dev/book/global/config/Firebase/service/FCMService.java +++ b/src/main/java/dev/book/global/config/firebase/service/FCMService.java @@ -1,4 +1,4 @@ -package dev.book.global.config.Firebase.service; +package dev.book.global.config.firebase.service; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.firebase.messaging.FirebaseMessaging; @@ -7,11 +7,11 @@ import com.google.firebase.messaging.Notification; import dev.book.accountbook.dto.event.CreateTransEvent; import dev.book.achievement.entity.Achievement; -import dev.book.global.config.Firebase.dto.LimitWarningFcmEvent; -import dev.book.global.config.Firebase.entity.FcmToken; -import dev.book.global.config.Firebase.exception.FcmTokenErrorCode; -import dev.book.global.config.Firebase.exception.FcmTokenErrorException; -import dev.book.global.config.Firebase.repository.FcmTokenRepository; +import dev.book.global.config.firebase.dto.LimitWarningFcmEvent; +import dev.book.global.config.firebase.entity.FcmToken; +import dev.book.global.config.firebase.exception.FcmTokenErrorCode; +import dev.book.global.config.firebase.exception.FcmTokenErrorException; +import dev.book.global.config.firebase.repository.FcmTokenRepository; import dev.book.user.entity.UserEntity; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/dev/book/global/log/ControllerLogAspect.java b/src/main/java/dev/book/global/log/ControllerLogAspect.java index 60f8b6d7..e4d1f3df 100644 --- a/src/main/java/dev/book/global/log/ControllerLogAspect.java +++ b/src/main/java/dev/book/global/log/ControllerLogAspect.java @@ -1,7 +1,6 @@ package dev.book.global.log; import com.fasterxml.jackson.databind.ObjectMapper; -import dev.book.global.config.security.dto.CustomUserDetails; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; @@ -24,18 +23,9 @@ public Object logController(ProceedingJoinPoint joinPoint) throws Throwable { String methodName = joinPoint.getSignature().toShortString(); - Long userId = null; - - for (Object arg : joinPoint.getArgs()) { - if (arg instanceof CustomUserDetails userDetails) { - userId = userDetails.user().getId(); - } - } - log.info("{}", objectMapper.writeValueAsString(Map.of( "layer", "controller", - "method", methodName, - "userId", userId + "method", methodName ))); return result; diff --git a/src/main/java/dev/book/user/controller/UserController.java b/src/main/java/dev/book/user/controller/UserController.java index 90301aa7..9a87f15b 100644 --- a/src/main/java/dev/book/user/controller/UserController.java +++ b/src/main/java/dev/book/user/controller/UserController.java @@ -12,12 +12,15 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; +import java.io.IOException; import java.util.List; +@Slf4j @RestController @RequiredArgsConstructor @RequestMapping("/api/v1/users") @@ -26,66 +29,70 @@ public class UserController implements UserApi { private final UserService userService; @GetMapping("/profile") - public ResponseEntity getUserProfile(@AuthenticationPrincipal CustomUserDetails userDetails){ + public ResponseEntity getUserProfile(@AuthenticationPrincipal CustomUserDetails userDetails) { return ResponseEntity.ok() .body(userService.getUserProfile(userDetails)); } @PutMapping("/profile") public ResponseEntity updateUserProfile(@RequestBody UserProfileUpdateRequest profileUpdateRequest, - @AuthenticationPrincipal CustomUserDetails userDetails){ + @AuthenticationPrincipal CustomUserDetails userDetails) { return ResponseEntity.ok() .body(userService.updateUserProfile(profileUpdateRequest, userDetails)); } @GetMapping("/categories") - public ResponseEntity getUserCategories(@AuthenticationPrincipal CustomUserDetails userDetails){ + public ResponseEntity getUserCategories(@AuthenticationPrincipal CustomUserDetails userDetails) { return ResponseEntity.ok() .body(userService.getUserCategories(userDetails)); } @PutMapping("/categories") public ResponseEntity updateUserCategories(@RequestBody UserCategoriesRequest userCategoriesRequest, - @AuthenticationPrincipal CustomUserDetails userDetails){ + @AuthenticationPrincipal CustomUserDetails userDetails) { userService.updateUserCategories(userCategoriesRequest, userDetails); return ResponseEntity.ok().build(); } @DeleteMapping public ResponseEntity deleteUser(HttpServletRequest request, HttpServletResponse response, - @AuthenticationPrincipal CustomUserDetails userDetails){ + @AuthenticationPrincipal CustomUserDetails userDetails) { userService.deleteUser(request, response, userDetails); return ResponseEntity.ok().build(); } @GetMapping("/check/login") //로그인 확인 - public ResponseEntity checkIsUserLogin(@AuthenticationPrincipal CustomUserDetails userDetails){ + public ResponseEntity checkIsUserLogin(@AuthenticationPrincipal CustomUserDetails userDetails) { userService.checkIsUserLogin(userDetails); return ResponseEntity.ok().build(); } @PostMapping("/validate/nickname") - public ResponseEntity checkIsValidateNickname(@RequestParam(name = "nickname", required = true) String nickname){ + public ResponseEntity checkIsValidateNickname(@RequestParam(name = "nickname", required = true) String nickname) { userService.checkIsValidateNickname(nickname); return ResponseEntity.ok().build(); } @DeleteMapping("/delete/nickname") - public ResponseEntity deleteUserNickname(@AuthenticationPrincipal CustomUserDetails userDetails){ + public ResponseEntity deleteUserNickname(@AuthenticationPrincipal CustomUserDetails userDetails) { userService.deleteUserNickname(userDetails); return ResponseEntity.ok().build(); } @GetMapping("/achievement") - public ResponseEntity> getUserAchievement(@AuthenticationPrincipal CustomUserDetails userDetails){ + public ResponseEntity> getUserAchievement(@AuthenticationPrincipal CustomUserDetails userDetails) { return ResponseEntity.ok() .body(userService.getUserAchievement(userDetails)); } @GetMapping("/challenge") - public ResponseEntity getUserChallengeInfo(@AuthenticationPrincipal CustomUserDetails userDetails){ + public ResponseEntity getUserChallengeInfo(@AuthenticationPrincipal CustomUserDetails userDetails) { return ResponseEntity.ok() .body(userService.getUserChallengeInfo(userDetails)); } + @GetMapping("/test") + public void loginTestUser(HttpServletResponse response) throws IOException { + userService.login(response); + } } diff --git a/src/main/java/dev/book/user/service/UserService.java b/src/main/java/dev/book/user/service/UserService.java index cd5b9646..abab5125 100644 --- a/src/main/java/dev/book/user/service/UserService.java +++ b/src/main/java/dev/book/user/service/UserService.java @@ -1,9 +1,10 @@ package dev.book.user.service; -import dev.book.achievement.achievement_user.service.IndividualAchievementStatusService; import dev.book.achievement.achievement_user.entity.AchievementUser; import dev.book.achievement.achievement_user.repository.AchievementUserRepository; +import dev.book.achievement.achievement_user.service.IndividualAchievementStatusService; import dev.book.global.config.security.dto.CustomUserDetails; +import dev.book.global.config.security.jwt.JwtAuthenticationToken; import dev.book.global.config.security.jwt.JwtUtil; import dev.book.global.config.security.service.refresh.RefreshTokenService; import dev.book.global.entity.Category; @@ -24,9 +25,14 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -35,6 +41,7 @@ public class UserService { private final UserRepository userRepository; + private final UserDetailsService userDetailsService; private final CategoryRepository categoryRepository; private final AchievementUserRepository achievementUserRepository; @@ -121,7 +128,7 @@ public void checkIsValidateNickname(String nickname) { @Transactional public void deleteUserNickname(CustomUserDetails userDetails) { UserEntity user = userRepository.findByEmail(userDetails.getUsername()) - .orElseThrow(() -> new UserErrorException(UserErrorCode.USER_NOT_FOUND)); + .orElseThrow(() -> new UserErrorException(UserErrorCode.USER_NOT_FOUND)); user.deleteNickname(); } @@ -166,4 +173,18 @@ public UserChallengeInfoResponse getUserChallengeInfo(CustomUserDetails userDeta return new UserChallengeInfoResponse(user.getSavings(), user.getCompletedChallenges(), user.getParticipatingChallenges(), user.getFinishedChallenge()); } + + public void login(HttpServletResponse response) throws IOException { + UserEntity user = userRepository.findByEmail("test@sample.com").orElseThrow(() -> new UserErrorException(UserErrorCode.USER_NOT_FOUND)); + + jwtUtil.generateToken(response, getAuthentication(user)); + } + + private Authentication getAuthentication(UserEntity user) { + UserDetails userDetails = userDetailsService.loadUserByUsername(user.getEmail()); + Authentication authentication = new JwtAuthenticationToken(userDetails, userDetails.getAuthorities()); + SecurityContextHolder.getContext().setAuthentication(authentication); + + return authentication; + } } diff --git a/src/main/resources/application-jwt.yaml b/src/main/resources/application-jwt.yaml index ac092774..bef12162 100644 --- a/src/main/resources/application-jwt.yaml +++ b/src/main/resources/application-jwt.yaml @@ -18,6 +18,7 @@ spring: - "/signup" - "/login" - "/actuator/prometheus" + - "/api/v1/users/test" aes: diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index 3fc8a7ec..c4553e02 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -80,7 +80,7 @@ - + diff --git a/src/test/java/dev/book/accountbook/service/AccountBookServiceIntegrationTest.java b/src/test/java/dev/book/accountbook/service/AccountBookServiceIntegrationTest.java index 1e02df8d..1b159ee6 100644 --- a/src/test/java/dev/book/accountbook/service/AccountBookServiceIntegrationTest.java +++ b/src/test/java/dev/book/accountbook/service/AccountBookServiceIntegrationTest.java @@ -4,10 +4,8 @@ import dev.book.accountbook.dto.request.AccountBookListRequest; import dev.book.accountbook.dto.request.AccountBookSpendRequest; import dev.book.accountbook.dto.request.Repeat; -import dev.book.accountbook.dto.response.AccountBookIncomeListResponse; -import dev.book.accountbook.dto.response.AccountBookIncomeResponse; -import dev.book.accountbook.dto.response.AccountBookSpendListResponse; -import dev.book.accountbook.dto.response.AccountBookSpendResponse; +import dev.book.accountbook.dto.response.AccountBookListResponse; +import dev.book.accountbook.dto.response.AccountBookResponse; import dev.book.accountbook.entity.AccountBook; import dev.book.accountbook.exception.accountbook.AccountBookErrorException; import dev.book.accountbook.repository.AccountBookRepository; @@ -52,7 +50,10 @@ public class AccountBookServiceIntegrationTest { private WebApplicationContext context; @Autowired - private AccountBookService accountBookService; + private AccountBookSpendService accountBookSpendService; + + @Autowired + private AccountBookIncomeService accountBookIncomeService; @Autowired private UserRepository userRepository; @@ -126,7 +127,7 @@ void getSpendOne() { "점심 식비", 8000, "김밥천국", null, LocalDate.of(2025, 4, 21), null, "food"); // when - AccountBookSpendResponse response = accountBookService.getSpendOne(savedBooks.get(0).getId(), user.getId()); + AccountBookResponse response = accountBookSpendService.getSpendOne(savedBooks.get(0).getId(), user.getId()); // then assertThat(response.title()).isEqualTo(request.title()); @@ -148,7 +149,7 @@ void getSpendOneFail() { // when // then - assertThatThrownBy(() -> accountBookService.getSpendOne(1L, user.getId())) + assertThatThrownBy(() -> accountBookSpendService.getSpendOne(1L, user.getId())) .isInstanceOf(AccountBookErrorException.class) .hasMessage("존재하지 않는 소비내역입니다."); } @@ -161,13 +162,13 @@ void getSpendList() { UserEntity user = userDetails.user(); // when - AccountBookSpendListResponse responses = accountBookService.getSpendList(user.getId(), 1); + AccountBookListResponse responses = accountBookSpendService.getSpendList(user.getId(), 1); // then - List responseList = responses.accountBookSpendResponseList(); + List responseList = responses.accountBookResponseList(); assertThat(responseList).hasSize(8); assertThat(responseList) - .extracting(AccountBookSpendResponse::title) + .extracting(AccountBookResponse::title) .containsExactly("미용실", "옷 쇼핑", "헬스장 등록", "마트 장보기", "술자리", "카페", "점심 식비", "버스비"); ; } @@ -184,7 +185,7 @@ void createSpend() { "핫도그", 3000, "야식", endTime, occurredAt, repeat, "food"); // when - AccountBookSpendResponse response = accountBookService.createSpend(request, user); + AccountBookResponse response = accountBookSpendService.createSpend(request, user); // then assertThat(response.title()).isEqualTo(request.title()); @@ -209,7 +210,7 @@ void modifySpend() { "샐러드", 7000, "건강식", LocalDateTime.of(2025, 6, 1, 12, 0), occurredAt, repeat, "food"); // when - AccountBookSpendResponse response = accountBookService.modifySpend(modifiedRequest, savedBooks.get(0).getId(), user.getId()); + AccountBookResponse response = accountBookSpendService.modifySpend(modifiedRequest, savedBooks.get(0).getId(), user.getId()); // then assertThat(response.title()).isEqualTo(modifiedRequest.title()); @@ -234,7 +235,7 @@ void modifySpendFail() { // when // then - assertThatThrownBy(() -> accountBookService.modifySpend(modifiedRequest, 1L, user.getId())) + assertThatThrownBy(() -> accountBookSpendService.modifySpend(modifiedRequest, 1L, user.getId())) .isInstanceOf(AccountBookErrorException.class) .hasMessage("존재하지 않는 소비내역입니다."); } @@ -248,7 +249,7 @@ void deleteSpend() { Repeat repeat = new Repeat(Frequency.MONTHLY, 3, 15); // when - boolean status = accountBookService.deleteSpend(savedBooks.get(0).getId(), user.getId()); + boolean status = accountBookSpendService.deleteSpend(savedBooks.get(0).getId(), user.getId()); // then assertThat(status).isTrue(); @@ -263,7 +264,7 @@ void deleteSpendFail() { // when // then - assertThatThrownBy(() -> accountBookService.deleteSpend(1L, user.getId())) + assertThatThrownBy(() -> accountBookSpendService.deleteSpend(1L, user.getId())) .isInstanceOf(AccountBookErrorException.class) .hasMessage("존재하지 않는 소비내역입니다."); } @@ -279,7 +280,7 @@ void getIncomeOne() { "급여", 3000000, "4월 급여", null, LocalDate.of(2025, 4, 25), repeat, "salary"); // when - AccountBookIncomeResponse response = accountBookService.getIncomeOne(savedBooks.get(9).getId(), user.getId()); + AccountBookResponse response = accountBookIncomeService.getIncomeOne(savedBooks.get(9).getId(), user.getId()); // then assertThat(response.title()).isEqualTo(request.title()); @@ -302,7 +303,7 @@ void getIncomeOneFail() { UserEntity user = userDetails.user(); // when // then - assertThatThrownBy(() -> accountBookService.getIncomeOne(1L, user.getId())) + assertThatThrownBy(() -> accountBookIncomeService.getIncomeOne(1L, user.getId())) .isInstanceOf(AccountBookErrorException.class) .hasMessage("존재하지 않는 수입내역입니다."); } @@ -316,13 +317,13 @@ void getIncomeList() { AccountBookListRequest listRequest = new AccountBookListRequest(LocalDate.of(2025, 4, 1), LocalDate.of(2025, 4, 30)); // when - AccountBookIncomeListResponse responses = accountBookService.getIncomeList(user.getId(), 1); + AccountBookListResponse responses = accountBookIncomeService.getIncomeList(user.getId(), 1); // then - List responseList = responses.accountBookIncomeResponseList(); + List responseList = responses.accountBookResponseList(); assertThat(responseList).hasSize(3); assertThat(responseList) - .extracting(AccountBookIncomeResponse::title) + .extracting(AccountBookResponse::title) .containsExactly("이체", "급여", "저축"); } @@ -337,7 +338,7 @@ void createIncome() { "월급", 3000000, "회사 월급", endTime, occurredAt, repeat, "salary"); // when - AccountBookIncomeResponse response = accountBookService.createIncome(request, user); + AccountBookResponse response = accountBookIncomeService.createIncome(request, user); // then assertThat(response.title()).isEqualTo(request.title()); @@ -361,7 +362,7 @@ void modifyIncome() { "보너스", 2000000, "성과급", endTime, occurredAt, repeat, "salary"); // when - AccountBookIncomeResponse response = accountBookService.modifyIncome(savedBooks.get(8).getId(), modifiedRequest, user.getId()); + AccountBookResponse response = accountBookIncomeService.modifyIncome(savedBooks.get(8).getId(), modifiedRequest, user.getId()); // then assertThat(response.title()).isEqualTo(modifiedRequest.title()); @@ -385,7 +386,7 @@ void modifyIncomeFail() { "보너스", 2000000, "성과급", endTime, occurredAt, repeat, "salary"); // when // then - assertThatThrownBy(() -> accountBookService.modifyIncome(1L, modifiedRequest, user.getId())) + assertThatThrownBy(() -> accountBookIncomeService.modifyIncome(1L, modifiedRequest, user.getId())) .isInstanceOf(AccountBookErrorException.class) .hasMessage("존재하지 않는 수입내역입니다."); } @@ -398,7 +399,7 @@ void deleteIncome() { UserEntity user = userDetails.user(); // when - boolean status = accountBookService.deleteIncome(savedBooks.get(8).getId(), user.getId()); + boolean status = accountBookIncomeService.deleteIncome(savedBooks.get(8).getId(), user.getId()); // then assertThat(status).isTrue(); @@ -413,7 +414,7 @@ void deleteIncomeFail() { // when // then - assertThatThrownBy(() -> accountBookService.deleteIncome(0L, user.getId())) + assertThatThrownBy(() -> accountBookIncomeService.deleteIncome(0L, user.getId())) .isInstanceOf(AccountBookErrorException.class) .hasMessage("존재하지 않는 수입내역입니다."); } @@ -426,10 +427,10 @@ void getCategorySpendList() { UserEntity user = userDetails.user(); // when - AccountBookSpendListResponse foodResponses = accountBookService.getCategorySpendList("food", user.getId(), 1); + AccountBookListResponse foodResponses = accountBookSpendService.getCategorySpendList("food", user.getId(), 1); // then - List responseList = foodResponses.accountBookSpendResponseList(); + List responseList = foodResponses.accountBookResponseList(); assertThat(responseList).hasSize(1); assertThat(responseList.get(0).title()).isEqualTo("점심 식비"); assertThat(responseList.get(0).category()).isEqualTo("식비"); diff --git a/src/test/java/dev/book/accountbook/service/AccountBookServiceUnitTest.java b/src/test/java/dev/book/accountbook/service/AccountBookServiceUnitTest.java index 608382bd..fdac9be1 100644 --- a/src/test/java/dev/book/accountbook/service/AccountBookServiceUnitTest.java +++ b/src/test/java/dev/book/accountbook/service/AccountBookServiceUnitTest.java @@ -3,10 +3,8 @@ import dev.book.accountbook.dto.request.AccountBookIncomeRequest; import dev.book.accountbook.dto.request.AccountBookSpendRequest; import dev.book.accountbook.dto.request.Repeat; -import dev.book.accountbook.dto.response.AccountBookIncomeListResponse; -import dev.book.accountbook.dto.response.AccountBookIncomeResponse; -import dev.book.accountbook.dto.response.AccountBookSpendListResponse; -import dev.book.accountbook.dto.response.AccountBookSpendResponse; +import dev.book.accountbook.dto.response.AccountBookListResponse; +import dev.book.accountbook.dto.response.AccountBookResponse; import dev.book.accountbook.entity.AccountBook; import dev.book.accountbook.exception.accountbook.AccountBookErrorException; import dev.book.accountbook.repository.AccountBookRepository; @@ -60,7 +58,8 @@ class AccountBookServiceUnitTest { @Mock IndividualAchievementStatusService individualAchievementStatusService; @InjectMocks - private AccountBookService accountBookService; + private AccountBookSpendService accountBookSpendService; + private AccountBookIncomeService accountBookIncomeService; private final Long userId = 1L; private final Long accountBookId = 100L; @@ -82,7 +81,7 @@ void getSpendOne() { given(userRepository.existsById(userId)).willReturn(true); // when - AccountBookSpendResponse result = accountBookService.getSpendOne(accountBookId, userId); + AccountBookResponse result = accountBookSpendService.getSpendOne(accountBookId, userId); // then assertThat(result).isNotNull(); @@ -98,7 +97,7 @@ void failGetSpendOne() { // when // then - assertThatThrownBy(() -> accountBookService.getSpendOne(accountBookId, userId)) + assertThatThrownBy(() -> accountBookSpendService.getSpendOne(accountBookId, userId)) .isInstanceOf(AccountBookErrorException.class) .hasMessage("존재하지 않는 소비내역입니다."); } @@ -115,13 +114,13 @@ void getSpendList() { Pageable pageable = PageRequest.of(0, 10); Page mockList = new PageImpl<>(List.of(accountBook, accountBook)); - given(accountBookRepository.findAllByType(anyLong(), any(), pageable)).willReturn(mockList); + given(accountBookRepository.findByAccountBookWithPage(anyLong(), any(), pageable)).willReturn(mockList); // when - AccountBookSpendListResponse result = accountBookService.getSpendList(userId, 1); + AccountBookListResponse result = accountBookSpendService.getSpendList(userId, 1); // then - assertThat(result.accountBookSpendResponseList().size()).isEqualTo(2); + assertThat(result.accountBookResponseList().size()).isEqualTo(2); } @Test @@ -138,7 +137,7 @@ void createSpend() { willDoNothing().given(publisher).publishEvent(any(SpendCreatedRankingEvent.class)); // when - AccountBookSpendResponse result = accountBookService.createSpend(request, user); + AccountBookResponse result = accountBookSpendService.createSpend(request, user); // then assertThat(result).isNotNull(); @@ -162,7 +161,7 @@ void createRegularSpend() { given(categoryRepository.findByCategory("food")).willReturn(Optional.of(new Category("food", "식비"))); // when - AccountBookSpendResponse result = accountBookService.createSpend(request, user); + AccountBookResponse result = accountBookSpendService.createSpend(request, user); // then assertThat(result).isNotNull(); @@ -191,7 +190,7 @@ void modifySpend() { given(categoryRepository.findByCategory("cafe_snack")).willReturn(Optional.of(new Category("cafe_snack", "카페 / 간식"))); // when - AccountBookSpendResponse result = accountBookService.modifySpend(request, id, userId); + AccountBookResponse result = accountBookSpendService.modifySpend(request, id, userId); // then assertThat(result).isNotNull(); @@ -211,7 +210,7 @@ void deleteSpend() { given(accountBookRepository.findById(accountBookId)).willReturn(Optional.of(accountBook)); // when - boolean result = accountBookService.deleteSpend(accountBookId, userId); + boolean result = accountBookSpendService.deleteSpend(accountBookId, userId); // then assertTrue(result); @@ -225,7 +224,7 @@ void failDeleteSpend() { // when // then - assertThatThrownBy(() -> accountBookService.deleteSpend(accountBookId, userId)) + assertThatThrownBy(() -> accountBookSpendService.deleteSpend(accountBookId, userId)) .isInstanceOf(AccountBookErrorException.class) .hasMessage("존재하지 않는 소비내역입니다."); } @@ -242,7 +241,7 @@ void getIncomeOne() { given(accountBookRepository.findById(accountBookId)).willReturn(Optional.of(accountBook)); // when - AccountBookIncomeResponse result = accountBookService.getIncomeOne(accountBookId, userId); + AccountBookResponse result = accountBookIncomeService.getIncomeOne(accountBookId, userId); // then assertThat(result).isNotNull(); @@ -256,7 +255,7 @@ void failGetIncomeOne() { // when // then - assertThatThrownBy(() -> accountBookService.getIncomeOne(accountBookId, userId)) + assertThatThrownBy(() -> accountBookIncomeService.getIncomeOne(accountBookId, userId)) .isInstanceOf(AccountBookErrorException.class) .hasMessage("존재하지 않는 수입내역입니다."); } @@ -272,13 +271,13 @@ void getIncomeList() { AccountBook accountBook = request.toEntity(userEntity, category); Page mockList = new PageImpl<>(List.of(accountBook, accountBook)); Pageable pageable = PageRequest.of(0, 10); - given(accountBookRepository.findAllByType(anyLong(), any(), pageable)).willReturn(mockList); + given(accountBookRepository.findByAccountBookWithPage(anyLong(), any(), pageable)).willReturn(mockList); // when - AccountBookIncomeListResponse result = accountBookService.getIncomeList(userId, 1); + AccountBookListResponse result = accountBookIncomeService.getIncomeList(userId, 1); // then - assertThat(result.accountBookIncomeResponseList().size()).isEqualTo(2); + assertThat(result.accountBookResponseList().size()).isEqualTo(2); } @Test @@ -293,7 +292,7 @@ void createIncome() { given(categoryRepository.findByCategory("salary")).willReturn(Optional.of(new Category("salary", "급여"))); // when - AccountBookIncomeResponse result = accountBookService.createIncome(request, user); + AccountBookResponse result = accountBookIncomeService.createIncome(request, user); // then assertThat(result).isNotNull(); @@ -316,7 +315,7 @@ void createRegularIncome() { given(categoryRepository.findByCategory("salary")).willReturn(Optional.of(new Category("salary", "급여"))); // when - AccountBookIncomeResponse result = accountBookService.createIncome(request, user); + AccountBookResponse result = accountBookIncomeService.createIncome(request, user); // then assertThat(result).isNotNull(); @@ -345,7 +344,7 @@ void modifyIncome() { given(categoryRepository.findByCategory("salary")).willReturn(Optional.of(new Category("salary", "급여"))); // when - AccountBookIncomeResponse result = accountBookService.modifyIncome(id, request, userId); + AccountBookResponse result = accountBookIncomeService.modifyIncome(id, request, userId); // then assertThat(result).isNotNull(); @@ -364,7 +363,7 @@ void deleteIncome() { given(accountBookRepository.findById(accountBookId)).willReturn(Optional.of(accountBook)); // when - boolean result = accountBookService.deleteSpend(accountBookId, userId); + boolean result = accountBookSpendService.deleteSpend(accountBookId, userId); // then assertTrue(result); @@ -378,7 +377,7 @@ void failDeleteIncome() { // when // then - assertThatThrownBy(() -> accountBookService.deleteIncome(accountBookId, userId)) + assertThatThrownBy(() -> accountBookIncomeService.deleteIncome(accountBookId, userId)) .isInstanceOf(AccountBookErrorException.class) .hasMessage("존재하지 않는 수입내역입니다."); } diff --git a/src/test/java/dev/book/accountbook/service/BudgetServiceIntegrationTest.java b/src/test/java/dev/book/accountbook/service/BudgetServiceIntegrationTest.java index 50d34953..5a2dddcf 100644 --- a/src/test/java/dev/book/accountbook/service/BudgetServiceIntegrationTest.java +++ b/src/test/java/dev/book/accountbook/service/BudgetServiceIntegrationTest.java @@ -166,7 +166,7 @@ void getBudget() { UserEntity user = userDetails.user(); // when - BudgetResponse response = budgetService.getBudget(user.getId(), LocalDate.now().getMonthValue()); + BudgetResponse response = budgetService.getBudget(user.getId(), LocalDate.now()); // then assertThat(response.budget()).isEqualTo(100000); @@ -181,7 +181,7 @@ void notFoundUserByGetBudget() { // when // then - assertThatThrownBy(() -> budgetService.getBudget(unKnownUser, LocalDate.now().getMonthValue())) + assertThatThrownBy(() -> budgetService.getBudget(unKnownUser, LocalDate.now())) .isInstanceOf(UserErrorException.class) .hasMessage("유저를 찾을 수 없습니다."); } @@ -196,7 +196,7 @@ void notFoundBudgetByGetBudget() { // when // then - assertThatThrownBy(() -> budgetService.getBudget(user.getId(), LocalDate.now().getMonthValue())) + assertThatThrownBy(() -> budgetService.getBudget(user.getId(), LocalDate.now())) .isInstanceOf(AccountBookErrorException.class) .hasMessage("존재하지 않는 예산입니다."); } diff --git a/src/test/java/dev/book/accountbook/service/BudgetServiceUnitTest.java b/src/test/java/dev/book/accountbook/service/BudgetServiceUnitTest.java index 9eea40fb..6946a642 100644 --- a/src/test/java/dev/book/accountbook/service/BudgetServiceUnitTest.java +++ b/src/test/java/dev/book/accountbook/service/BudgetServiceUnitTest.java @@ -54,7 +54,7 @@ void createBudget() { given(userRepository.findById(any())).willReturn(Optional.of(user)); given(budgetRepository.save(any(Budget.class))).willReturn(budgetEntity); given(budgetRepository.existsByUserId(user.getId())).willReturn(false); - given(budgetRepository.findBudgetWithTotal(budgetEntity.getId())).willReturn(budgetResponse); + given(budgetRepository.findBudgetWithTotal(budgetEntity.getId(), LocalDate.now())).willReturn(budgetResponse); // when BudgetResponse response = budgetService.createBudget(user.getId(), budgetRequest); @@ -93,10 +93,10 @@ void getBudget() { given(userRepository.findById(user.getId())).willReturn(Optional.of(user)); given(budgetRepository.findByMonthAndUserId(month, user.getId())).willReturn(Optional.of(budget)); - given(budgetRepository.findBudgetWithTotal(budget.getId())).willReturn(budgetResponse); + given(budgetRepository.findBudgetWithTotal(budget.getId(), LocalDate.now())).willReturn(budgetResponse); // when - BudgetResponse response = budgetService.getBudget(user.getId(), LocalDate.now().getMonthValue()); + BudgetResponse response = budgetService.getBudget(user.getId(), LocalDate.now()); // then assertThat(response.budget()).isEqualTo(budget.getBudgetLimit()); @@ -113,7 +113,7 @@ void notFountUserExceptionByGetBudget() { // when // then - assertThatThrownBy(() -> budgetService.getBudget(userId, LocalDate.now().getMonthValue())) + assertThatThrownBy(() -> budgetService.getBudget(userId, LocalDate.now())) .isInstanceOf(UserErrorException.class) .hasMessage("유저를 찾을 수 없습니다."); } @@ -129,7 +129,7 @@ void notFountBudgetExceptionByGetBudget() { // when // then - assertThatThrownBy(() -> budgetService.getBudget(userId, LocalDate.now().getMonthValue())) + assertThatThrownBy(() -> budgetService.getBudget(userId, LocalDate.now())) .isInstanceOf(AccountBookErrorException.class) .hasMessage("존재하지 않는 예산입니다."); } @@ -146,7 +146,7 @@ void modifyBudget() { BudgetResponse modifyResponse = new BudgetResponse(budgetId, 100000, 1000); given(budgetRepository.findByIdAndUserId(budgetId, user.getId())).willReturn(Optional.of(budget)); - given(budgetRepository.findBudgetWithTotal(budget.getId())).willReturn(modifyResponse); + given(budgetRepository.findBudgetWithTotal(budget.getId(), LocalDate.now())).willReturn(modifyResponse); // when BudgetResponse response = budgetService.modify(user.getId(), budgetId, modifyRequest); diff --git a/src/test/java/dev/book/accountbook/service/StatServiceIntegrationTest.java b/src/test/java/dev/book/accountbook/service/StatServiceIntegrationTest.java index 33dcf32a..1388be47 100644 --- a/src/test/java/dev/book/accountbook/service/StatServiceIntegrationTest.java +++ b/src/test/java/dev/book/accountbook/service/StatServiceIntegrationTest.java @@ -1,7 +1,7 @@ package dev.book.accountbook.service; import dev.book.accountbook.dto.response.AccountBookConsumeResponse; -import dev.book.accountbook.dto.response.AccountBookSpendListResponse; +import dev.book.accountbook.dto.response.AccountBookListResponse; import dev.book.accountbook.dto.response.AccountBookStatResponse; import dev.book.accountbook.entity.AccountBook; import dev.book.accountbook.repository.AccountBookRepository; @@ -125,14 +125,14 @@ void categoryList() { UserEntity user = userDetails.user(); // when - AccountBookSpendListResponse result1 = statService.categoryList(user.getId(), Frequency.MONTHLY, "cafe_snack", 1); - AccountBookSpendListResponse result2 = statService.categoryList(user.getId(), Frequency.MONTHLY, "food", 1); - AccountBookSpendListResponse result3 = statService.categoryList(user.getId(), Frequency.MONTHLY, "transportation", 1); + AccountBookListResponse result1 = statService.categoryList(user.getId(), Frequency.MONTHLY, "cafe_snack", 1); + AccountBookListResponse result2 = statService.categoryList(user.getId(), Frequency.MONTHLY, "food", 1); + AccountBookListResponse result3 = statService.categoryList(user.getId(), Frequency.MONTHLY, "transportation", 1); // then - assertThat(result1.accountBookSpendResponseList()).hasSize(1); - assertThat(result2.accountBookSpendResponseList()).hasSize(1); - assertThat(result3.accountBookSpendResponseList()).hasSize(1); + assertThat(result1.accountBookResponseList()).hasSize(1); + assertThat(result2.accountBookResponseList()).hasSize(1); + assertThat(result3.accountBookResponseList()).hasSize(1); } @Test diff --git a/src/test/java/dev/book/accountbook/service/StatServiceUnitTest.java b/src/test/java/dev/book/accountbook/service/StatServiceUnitTest.java index 68c5a992..f91bef03 100644 --- a/src/test/java/dev/book/accountbook/service/StatServiceUnitTest.java +++ b/src/test/java/dev/book/accountbook/service/StatServiceUnitTest.java @@ -1,7 +1,7 @@ package dev.book.accountbook.service; import dev.book.accountbook.dto.response.AccountBookConsumeResponse; -import dev.book.accountbook.dto.response.AccountBookSpendListResponse; +import dev.book.accountbook.dto.response.AccountBookListResponse; import dev.book.accountbook.dto.response.AccountBookStatResponse; import dev.book.accountbook.entity.AccountBook; import dev.book.accountbook.repository.AccountBookRepository; @@ -86,10 +86,10 @@ void categoryList() { given(accountBookRepository.findByCategory(anyLong(), any(), any(), any(LocalDate.class), any(LocalDate.class), pageable)).willReturn(mockBooks); // when - AccountBookSpendListResponse result = statService.categoryList(user.getId(), frequency, "hobby", 1); + AccountBookListResponse result = statService.categoryList(user.getId(), frequency, "hobby", 1); // then - assertThat(2).isEqualTo(result.accountBookSpendResponseList().size()); + assertThat(2).isEqualTo(result.accountBookResponseList().size()); } @Test diff --git a/src/test/java/dev/book/achievement/service/AchievementServiceTest.java b/src/test/java/dev/book/achievement/service/AchievementServiceTest.java index 60770fd3..f05cc875 100644 --- a/src/test/java/dev/book/achievement/service/AchievementServiceTest.java +++ b/src/test/java/dev/book/achievement/service/AchievementServiceTest.java @@ -7,11 +7,11 @@ import dev.book.achievement.exception.AchievementErrorCode; import dev.book.achievement.exception.AchievementException; import dev.book.achievement.repository.AchievementRepository; -import dev.book.global.config.Firebase.entity.FcmToken; -import dev.book.global.config.Firebase.exception.FcmTokenErrorCode; -import dev.book.global.config.Firebase.exception.FcmTokenErrorException; -import dev.book.global.config.Firebase.repository.FcmTokenRepository; -import dev.book.global.config.Firebase.service.FCMService; +import dev.book.global.config.firebase.entity.FcmToken; +import dev.book.global.config.firebase.exception.FcmTokenErrorCode; +import dev.book.global.config.firebase.exception.FcmTokenErrorException; +import dev.book.global.config.firebase.repository.FcmTokenRepository; +import dev.book.global.config.firebase.service.FCMService; import dev.book.global.sse.service.SseService; import dev.book.user.entity.UserEntity; import dev.book.user.exception.UserErrorCode; diff --git a/src/test/java/dev/book/challenge/ChallengeConcurrencyTest.java b/src/test/java/dev/book/challenge/ChallengeConcurrencyTest.java index efff33b8..cbf5c028 100644 --- a/src/test/java/dev/book/challenge/ChallengeConcurrencyTest.java +++ b/src/test/java/dev/book/challenge/ChallengeConcurrencyTest.java @@ -77,7 +77,7 @@ void ChallengeConcurrency() throws InterruptedException { users.add(user); } - userRepository.saveAll(users); + userRepository.saveAll(users); // 캡슐화 UserEntity creator = UserEntity.builder().email("test@naver.com").name("생성자").nickname("naver").build(); UserEntity savedCreator = userRepository.save(creator);