diff --git a/src/main/java/com/m3pro/groundflip/repository/RankingHistoryRepository.java b/src/main/java/com/m3pro/groundflip/repository/RankingHistoryRepository.java index d7728f92..45c34f39 100644 --- a/src/main/java/com/m3pro/groundflip/repository/RankingHistoryRepository.java +++ b/src/main/java/com/m3pro/groundflip/repository/RankingHistoryRepository.java @@ -26,4 +26,6 @@ Optional findByUserIdAndYearAndWeek( @Param("userId") Long userId, @Param("requestYear") int year, @Param("requestWeek") int week); + + void deleteByUserIdAndYearAndWeek(Long userId, int year, int week); } \ No newline at end of file diff --git a/src/main/java/com/m3pro/groundflip/service/UserService.java b/src/main/java/com/m3pro/groundflip/service/UserService.java index 4a653c1b..541a347d 100644 --- a/src/main/java/com/m3pro/groundflip/service/UserService.java +++ b/src/main/java/com/m3pro/groundflip/service/UserService.java @@ -22,10 +22,12 @@ import com.m3pro.groundflip.jwt.JwtProvider; import com.m3pro.groundflip.repository.AppleRefreshTokenRepository; import com.m3pro.groundflip.repository.FcmTokenRepository; +import com.m3pro.groundflip.repository.RankingHistoryRepository; import com.m3pro.groundflip.repository.UserCommunityRepository; import com.m3pro.groundflip.repository.UserRankingRedisRepository; import com.m3pro.groundflip.repository.UserRepository; import com.m3pro.groundflip.service.oauth.AppleApiClient; +import com.m3pro.groundflip.util.DateUtils; import com.m3pro.groundflip.util.S3Uploader; import jakarta.transaction.Transactional; @@ -36,6 +38,7 @@ @RequiredArgsConstructor @Slf4j public class UserService { + private final RankingHistoryRepository rankingHistoryRepository; private final UserRankingRedisRepository userRankingRedisRepository; private final UserRepository userRepository; private final AppleRefreshTokenRepository appleRefreshTokenRepository; @@ -134,6 +137,10 @@ public void deleteUser(Long userId, UserDeleteRequest userDeleteRequest) { jwtProvider.expireToken(userDeleteRequest.getAccessToken()); jwtProvider.expireToken(userDeleteRequest.getRefreshToken()); + int year = LocalDate.now().getYear(); + int week = DateUtils.getWeekOfDate(LocalDate.now()); + + rankingHistoryRepository.deleteByUserIdAndYearAndWeek(userId, year, week); userRankingRedisRepository.deleteUserInRanking(userId); } diff --git a/src/test/java/com/m3pro/groundflip/service/UserServiceTest.java b/src/test/java/com/m3pro/groundflip/service/UserServiceTest.java index bf2518a7..09e05126 100644 --- a/src/test/java/com/m3pro/groundflip/service/UserServiceTest.java +++ b/src/test/java/com/m3pro/groundflip/service/UserServiceTest.java @@ -37,6 +37,7 @@ import com.m3pro.groundflip.jwt.JwtProvider; import com.m3pro.groundflip.repository.AppleRefreshTokenRepository; import com.m3pro.groundflip.repository.FcmTokenRepository; +import com.m3pro.groundflip.repository.RankingHistoryRepository; import com.m3pro.groundflip.repository.UserCommunityRepository; import com.m3pro.groundflip.repository.UserRankingRedisRepository; import com.m3pro.groundflip.repository.UserRepository; @@ -69,6 +70,9 @@ class UserServiceTest { @Mock private JwtProvider jwtProvider; + @Mock + private RankingHistoryRepository rankingHistoryRepository; + @InjectMocks private UserService userService; @@ -205,6 +209,7 @@ void deleteUserTest() { .build(); when(userRepository.findById(deleteUser.getId())).thenReturn(Optional.of(deleteUser)); + doNothing().when(rankingHistoryRepository).deleteByUserIdAndYearAndWeek(1L, 2024, 37); userService.deleteUser(1L, new UserDeleteRequest("acessToken", "refreshToken")); @@ -236,6 +241,7 @@ void deleteUserTestInApple() { when(userRepository.findById(deleteUser.getId())).thenReturn(Optional.of(deleteUser)); when(appleRefreshTokenRepository.findByUserId(any())).thenReturn( Optional.of(AppleRefreshToken.builder().refreshToken("test").build())); + doNothing().when(rankingHistoryRepository).deleteByUserIdAndYearAndWeek(1L, 2024, 37); userService.deleteUser(1L, new UserDeleteRequest("acessToken", "refreshToken"));