diff --git a/src/main/java/com/renzzle/backend/domain/puzzle/training/service/TrainingService.java b/src/main/java/com/renzzle/backend/domain/puzzle/training/service/TrainingService.java index 9f0e1a8e..a6030094 100644 --- a/src/main/java/com/renzzle/backend/domain/puzzle/training/service/TrainingService.java +++ b/src/main/java/com/renzzle/backend/domain/puzzle/training/service/TrainingService.java @@ -167,7 +167,11 @@ public SolveTrainingPuzzleResponse solveTrainingPuzzle(UserEntity user, Long puz case "HIGH" -> TRAINING_HIGH_REWARD.getPrice(); default -> 0; }; - if(getReward) user.getReward(reward); + if(getReward){ + UserEntity persistentUser = userRepository.findById(user.getId()) + .orElseThrow(() -> new CustomException(ErrorCode.CANNOT_FIND_USER)); + persistentUser.getReward(reward); + } return SolveTrainingPuzzleResponse.builder() .reward(reward) diff --git a/src/test/java/com/renzzle/backend/domain/puzzle/training/service/TrainingServiceTest.java b/src/test/java/com/renzzle/backend/domain/puzzle/training/service/TrainingServiceTest.java index 9c8dba2f..94972284 100644 --- a/src/test/java/com/renzzle/backend/domain/puzzle/training/service/TrainingServiceTest.java +++ b/src/test/java/com/renzzle/backend/domain/puzzle/training/service/TrainingServiceTest.java @@ -306,6 +306,10 @@ public void testSolveLessonPuzzle() { when(trainingPuzzleRepository.findById(puzzleId)) .thenReturn(Optional.of(trainingPuzzle)); + // 사용자 조회 성공 (영속 상태의 엔티티 반환) + when(userRepository.findById(userId)) + .thenReturn(Optional.of(user)); + // 저장 결과 더미 설정 when(solvedTrainingPuzzleRepository.save(any(SolvedTrainingPuzzle.class))) .thenAnswer(invocation -> invocation.getArgument(0));