diff --git a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/controller/auth/AuthController.java b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/controller/auth/AuthController.java index a34f434..db1bff1 100644 --- a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/controller/auth/AuthController.java +++ b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/controller/auth/AuthController.java @@ -27,7 +27,7 @@ public class AuthController { @PostMapping("/api/auth/oauth2") public ApiResponse oauth2( @RequestBody @Valid AuthReq.OAuth2LoginRequest request) { - Pair pair = authService.oAuth2LoginOrSignup(request.provider(), + Pair pair = authService.oAuth2LoginOrSignup(request.provider(), request.code(), request.state()); var response = AuthRes.LoginResponse.from(pair.getFirst(), pair.getSecond()); return ApiResponse.success(response); @@ -37,7 +37,7 @@ public ApiResponse oauth2( @PostMapping("/api/auth/signup") public ApiResponse signup( @RequestBody @Valid AuthReq.EmailSignupRequest request) { - Pair pair = authService.signup(request.toCommand()); + Pair pair = authService.signup(request.toCommand()); var response = AuthRes.LoginResponse.from(pair.getFirst(), pair.getSecond()); return ApiResponse.success(response); } @@ -46,7 +46,7 @@ public ApiResponse signup( @PostMapping("/api/auth/login") public ApiResponse login( @RequestBody @Valid AuthReq.EmailLoginRequest request) { - Pair pair = authService.login(request.email(), request.password()); + Pair pair = authService.login(request.email(), request.password()); var response = AuthRes.LoginResponse.from(pair.getFirst(), pair.getSecond()); return ApiResponse.success(response); } diff --git a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/controller/auth/AuthRes.java b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/controller/auth/AuthRes.java index 7b53e2e..739f534 100644 --- a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/controller/auth/AuthRes.java +++ b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/controller/auth/AuthRes.java @@ -12,8 +12,8 @@ public record LoginResponse( String refreshToken, UserRes.UserInfo userInfo ) { - public static LoginResponse from(JwtToken jwtToken, UserModel userModel) { - var userInfo = UserRes.UserInfo.from(userModel); + public static LoginResponse from(JwtToken jwtToken, UserModel.Main userMain) { + var userInfo = UserRes.UserInfo.from(userMain); return LoginResponse.builder() .accessToken(jwtToken.getAccessToken()) .refreshToken(jwtToken.getRefreshToken()) diff --git a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/controller/user/UserController.java b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/controller/user/UserController.java index 68c458f..c2fe9b9 100644 --- a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/controller/user/UserController.java +++ b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/controller/user/UserController.java @@ -14,7 +14,6 @@ import org.springframework.web.bind.annotation.*; import java.time.LocalDate; -import java.util.List; @Tag(name = "user", description = "유저 API") @RequiredArgsConstructor @@ -44,16 +43,13 @@ public ApiResponse updateUser( @Operation(summary = "스트릭 조회", description = "스트릭을 조회한다.") @GetMapping("/api/user/strick") - public ApiResponse> getStrick( + public ApiResponse getStrick( @AuthenticationPrincipal JwtUser jwtUser, @RequestParam(required = false) LocalDate startDate, // false면 오늘 @RequestParam(required = false) LocalDate endDate // false면 365일전 ) { - return ApiResponse.success(List.of( - new UserRes.Strick(List.of( - new UserRes.DayCount(LocalDate.now(), 1) - )) - )); + var userModelStrick = userService.getUserStrick(jwtUser.getId(), startDate, endDate); + return ApiResponse.success(UserRes.Strick.from(userModelStrick)); } @Operation(summary = "유저 랭킹 페이징", description = "전체 유저 랭킹을 조회 페이징") diff --git a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/controller/user/UserRes.java b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/controller/user/UserRes.java index 687461e..2f971d7 100644 --- a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/controller/user/UserRes.java +++ b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/controller/user/UserRes.java @@ -16,13 +16,13 @@ public record UserInfo( String email, TierInfo tierInfo ) { - public static UserInfo from(UserModel userModel) { - var tierInfo = TierInfo.from(userModel.exp()); + public static UserInfo from(UserModel.Main userMain) { + var tierInfo = TierInfo.from(userMain.exp()); return UserInfo.builder() - .id(userModel.id()) - .nickname(userModel.nickname()) - .profileImageUrl(userModel.profileImageUrl()) - .email(userModel.email()) + .id(userMain.id()) + .nickname(userMain.nickname()) + .profileImageUrl(userMain.profileImageUrl()) + .email(userMain.email()) .tierInfo(tierInfo) .build(); } @@ -35,12 +35,12 @@ public record User( String profileImageUrl, TierInfo tierInfo ) { - public static User from(UserModel userModel) { - var tierInfo = TierInfo.from(userModel.exp()); + public static User from(UserModel.Main userMain) { + var tierInfo = TierInfo.from(userMain.exp()); return User.builder() - .id(userModel.id()) - .nickname(userModel.nickname()) - .profileImageUrl(userModel.profileImageUrl()) + .id(userMain.id()) + .nickname(userMain.nickname()) + .profileImageUrl(userMain.profileImageUrl()) .tierInfo(tierInfo) .build(); } @@ -65,8 +65,14 @@ public static TierInfo from(Integer exp) { @Builder public record Strick( - List dayCounts + /** 여기서 Model의 DayCount를 사용해도 되는지 */ + List dayCounts ) { + public static Strick from(UserModel.Strick strick){ + return Strick.builder() + .dayCounts(strick.dayCounts()) + .build(); + } } /** diff --git a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/auth/AuthService.java b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/auth/AuthService.java index c3b1a4b..44a1fce 100644 --- a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/auth/AuthService.java +++ b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/auth/AuthService.java @@ -28,8 +28,8 @@ public class AuthService { * OAuth2 로그인 또는 회원가입
[state]는 nullable한 입력 값이다.
1. OAuth2Client를 이용해 해당 provider로부터 * 유저정보를 가져옴 2. authToken으로 유저를 찾거나 없으면 회원가입 3. 토큰 발급, 유저정보 반환 */ - public Pair oAuth2LoginOrSignup(OAuth2Provider provider, - @NonNull String code, @Nullable String state) { + public Pair oAuth2LoginOrSignup(OAuth2Provider provider, + @NonNull String code, @Nullable String state) { OAuth2Client oAuth2Client = oAuth2Clients.stream() .filter(client -> client.canHandle(provider)) .findFirst() @@ -45,8 +45,8 @@ public Pair oAuth2LoginOrSignup(OAuth2Provider provider, // 토큰 발급, 유저정보 반환 JwtToken jwtToken = createToken(user); - UserModel userModel = UserModel.from(user); - return Pair.of(jwtToken, userModel); + UserModel.Main userMain = UserModel.Main.from(user); + return Pair.of(jwtToken, userMain); } @@ -62,7 +62,7 @@ private JwtToken createToken(User user) { } @Transactional - public Pair signup(UserCommand.Create command) { + public Pair signup(UserCommand.Create command) { if (userReader.existsByEmail(command.getEmail())) { throw new IllegalArgumentException("이미 존재하는 이메일입니다."); } @@ -70,8 +70,8 @@ public Pair signup(UserCommand.Create command) { User user = User.create(command); userStore.store(user); JwtToken jwtToken = createToken(user); - UserModel userModel = UserModel.from(user); - return Pair.of(jwtToken, userModel); + UserModel.Main userMain = UserModel.Main.from(user); + return Pair.of(jwtToken, userMain); } @Transactional @@ -85,7 +85,7 @@ public void createManager(UserCommand.Create command) { } @Transactional(readOnly = true) - public Pair login(String email, String password) { + public Pair login(String email, String password) { User user = userReader.findByEmail(email) .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 이메일입니다.")); @@ -94,8 +94,8 @@ public Pair login(String email, String password) { } JwtToken jwtToken = createToken(user); - UserModel userModel = UserModel.from(user); - return Pair.of(jwtToken, userModel); + UserModel.Main userMain = UserModel.Main.from(user); + return Pair.of(jwtToken, userMain); } public String reissueToken(String rawToken) { diff --git a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/challengegroup/ChallengeGroupModel.java b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/challengegroup/ChallengeGroupModel.java index 6c55644..f50dd58 100644 --- a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/challengegroup/ChallengeGroupModel.java +++ b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/challengegroup/ChallengeGroupModel.java @@ -1,7 +1,6 @@ package org.haedal.zzansuni.domain.challengegroup; import lombok.Builder; -import lombok.Getter; import org.haedal.zzansuni.domain.challengegroup.challenge.ChallengeModel; import org.haedal.zzansuni.domain.challengegroup.image.ChallengeGroupImage; import org.haedal.zzansuni.domain.user.UserModel; @@ -116,7 +115,7 @@ public static Detail from(ChallengeGroup challengeGroup, List getRankingPage(Pageable pag Integer rank = challengeGroupUserExps.getNumber() * challengeGroupUserExps.getSize() + 1 + i; ChallengeGroupUserExp challengeGroupUserExp = challengeGroupUserExps.getContent().get(i); var rankingModel = ChallengeGroupModel.Ranking.builder() - .user(UserModel.from(challengeGroupUserExp.getUser())) + .user(UserModel.Main.from(challengeGroupUserExp.getUser())) .accumulatedPoint(challengeGroupUserExp.getTotalExp()) .rank(rank) .build(); diff --git a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/challengegroup/review/ChallengeReviewModel.java b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/challengegroup/review/ChallengeReviewModel.java index 0c2f8c3..b67f138 100644 --- a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/challengegroup/review/ChallengeReviewModel.java +++ b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/challengegroup/review/ChallengeReviewModel.java @@ -12,13 +12,13 @@ public class ChallengeReviewModel { public record ChallengeReviewWithUserInfo( Long challengeId, String challengeTitle, - UserModel user, + UserModel.Main user, String content, Integer rating ) { public static ChallengeReviewWithUserInfo from(ChallengeReview challengeReview) { - var userModel = UserModel.from(challengeReview.getUserChallenge().getUser()); + var userModel = UserModel.Main.from(challengeReview.getUserChallenge().getUser()); return ChallengeReviewWithUserInfo.builder() .challengeId(challengeReview.getUserChallenge().getChallenge().getId()) .challengeTitle( @@ -36,13 +36,13 @@ public record ChallengeReviewWithChallenge( Long challengeId, String challengeTitle, Integer challengeDifficulty, - UserModel user, + UserModel.Main user, String content, Integer rating ) { public static ChallengeReviewWithChallenge from(ChallengeReview challengeReview) { - var userModel = UserModel.from(challengeReview.getUserChallenge().getUser()); + var userModel = UserModel.Main.from(challengeReview.getUserChallenge().getUser()); return ChallengeReviewWithChallenge.builder() .challengeId(challengeReview.getUserChallenge().getChallenge().getId()) .challengeTitle( diff --git a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/challengegroup/userchallenge/DayCountType.java b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/challengegroup/userchallenge/DayCountType.java new file mode 100644 index 0000000..cf29c53 --- /dev/null +++ b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/challengegroup/userchallenge/DayCountType.java @@ -0,0 +1,8 @@ +package org.haedal.zzansuni.domain.challengegroup.userchallenge; + +import java.time.LocalDate; + +public interface DayCountType { + LocalDate getDate(); + Integer getCount(); +} diff --git a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/challengegroup/userchallenge/UserChallengeReader.java b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/challengegroup/userchallenge/UserChallengeReader.java index 1cde291..b359523 100644 --- a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/challengegroup/userchallenge/UserChallengeReader.java +++ b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/challengegroup/userchallenge/UserChallengeReader.java @@ -1,6 +1,9 @@ package org.haedal.zzansuni.domain.challengegroup.userchallenge; +import java.time.LocalDate; +import java.util.List; import java.util.Optional; + import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -21,4 +24,6 @@ public interface UserChallengeReader { Page getCurrentChallengePageByUserId(Long userId, Pageable pageable); Page getCompletedChallengePageByUserId(Long userId, Pageable pageable); + + List countAllByUserIdAndDate(Long userId, LocalDate startDate, LocalDate endDate); } diff --git a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/user/UserModel.java b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/user/UserModel.java index e5f11a1..3aa0b8b 100644 --- a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/user/UserModel.java +++ b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/user/UserModel.java @@ -1,23 +1,75 @@ package org.haedal.zzansuni.domain.user; import lombok.Builder; -import lombok.Getter; - -@Builder -public record UserModel( - Long id, - String email, - String nickname, - String profileImageUrl, - Integer exp -) { - public static UserModel from(User user) { - return UserModel.builder() - .id(user.getId()) - .email(user.getEmail()) - .nickname(user.getNickname()) - .profileImageUrl(user.getProfileImageUrl()) - .exp(user.getExp()) - .build(); + +import java.time.LocalDate; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + + +public class UserModel{ + @Builder + public record Main( + Long id, + String email, + String nickname, + String profileImageUrl, + Integer exp + ) { + public static Main from(User user) { + return Main.builder() + .id(user.getId()) + .email(user.getEmail()) + .nickname(user.getNickname()) + .profileImageUrl(user.getProfileImageUrl()) + .exp(user.getExp()) + .build(); + } } -} + + @Builder + public record Strick( + List dayCounts + ) { + /** 여기서 count 0인걸 포함하는 기능을 쓰는게 맞는지 */ + public static Strick from(Map strickCounts, LocalDate startDate, LocalDate endDate) { + List resultList = startDate.datesUntil(endDate.plusDays(1)) + // 날짜가 존재하면 map(date)로 count를 가져오고, 없으면 0을 저장한다. + .map(date -> new DayCount(date, strickCounts.getOrDefault(date, 0))) + .collect(Collectors.toList()); + return new Strick(resultList); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + if (dayCounts == null) { + sb.append("null"); + } else { + for (int i = 0; i < dayCounts.size(); i++) { + sb.append(dayCounts.get(i).toString()); + if (i < dayCounts.size() - 1) + sb.append("\n"); + } + } + return sb.toString(); + } + + } + @Builder + public record DayCount( + LocalDate date, + Integer count + ) { + + @Override + public String toString() { + return "DayCount{" + + "date=" + date + + ", count=" + count + '}'; + } + } + + +} \ No newline at end of file diff --git a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/user/UserService.java b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/user/UserService.java index 9843d66..314281a 100644 --- a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/user/UserService.java +++ b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/domain/user/UserService.java @@ -1,21 +1,28 @@ package org.haedal.zzansuni.domain.user; import lombok.RequiredArgsConstructor; +import org.haedal.zzansuni.domain.challengegroup.userchallenge.UserChallengeReader; +import org.haedal.zzansuni.domain.challengegroup.userchallenge.DayCountType; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDate; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + @RequiredArgsConstructor @Service public class UserService { private final UserReader userReader; - private final UserStore userStore; + private final UserChallengeReader userChallengeReader; @Transactional(readOnly = true) - public UserModel getUserModel(Long id) { + public UserModel.Main getUserModel(Long id) { User user = userReader.getById(id); - return UserModel.from(user); + return UserModel.Main.from(user); } /** @@ -29,8 +36,16 @@ public void updateUser(Long id, UserCommand.Update userUpdate) { @Transactional(readOnly = true) - public Page getUserPagingByRanking(Pageable pageable) { + public Page getUserPagingByRanking(Pageable pageable) { Page users = userReader.getUserPagingByRanking(pageable); - return users.map(UserModel::from); + return users.map(UserModel.Main::from); + } + + @Transactional(readOnly = true) + public UserModel.Strick getUserStrick(Long id, LocalDate startDate, LocalDate endDate){ + List userStricks = userChallengeReader.countAllByUserIdAndDate(id, startDate, endDate); + Map map = userStricks.stream() + .collect(Collectors.toMap(DayCountType::getDate, DayCountType::getCount)); + return UserModel.Strick.from(map, startDate, endDate); } } diff --git a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/infrastructure/challengegroup/ChallengeGroupReaderImpl.java b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/infrastructure/challengegroup/ChallengeGroupReaderImpl.java index 6e9f0e7..c9584a5 100644 --- a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/infrastructure/challengegroup/ChallengeGroupReaderImpl.java +++ b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/infrastructure/challengegroup/ChallengeGroupReaderImpl.java @@ -142,7 +142,7 @@ public ChallengeGroupModel.Ranking getRanking(Long challengeGroupId, Long userId return ChallengeGroupModel.Ranking.builder() .rank(rank==null ? 0 : rank) .accumulatedPoint(challengeGroupUserExp != null ? challengeGroupUserExp.getTotalExp() : 0) - .user(UserModel.from(user)) + .user(UserModel.Main.from(user)) .build(); } diff --git a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/infrastructure/challengegroup/userchallenge/UserChallengeReaderImpl.java b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/infrastructure/challengegroup/userchallenge/UserChallengeReaderImpl.java index e99713d..1242ea7 100644 --- a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/infrastructure/challengegroup/userchallenge/UserChallengeReaderImpl.java +++ b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/infrastructure/challengegroup/userchallenge/UserChallengeReaderImpl.java @@ -2,12 +2,15 @@ import com.querydsl.core.types.dsl.BooleanExpression; import com.querydsl.jpa.impl.JPAQueryFactory; + +import java.time.LocalDate; import java.util.List; import java.util.NoSuchElementException; import java.util.Optional; import lombok.RequiredArgsConstructor; import org.haedal.zzansuni.domain.challengegroup.challenge.ChallengeStatus; +import org.haedal.zzansuni.domain.challengegroup.userchallenge.DayCountType; import org.haedal.zzansuni.domain.challengegroup.userchallenge.QUserChallenge; import org.haedal.zzansuni.domain.challengegroup.userchallenge.UserChallenge; import org.haedal.zzansuni.domain.challengegroup.userchallenge.UserChallengeReader; @@ -129,4 +132,9 @@ private BooleanExpression eqProceeding() { private BooleanExpression neProceeding() { return QUserChallenge.userChallenge.status.ne(ChallengeStatus.PROCEEDING); } + + @Override + public List countAllByUserIdAndDate(Long userId, LocalDate startDate, LocalDate endDate){ + return userChallengeRepository.countAllByUserIdAndDate(userId, startDate, endDate); + } } diff --git a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/infrastructure/challengegroup/userchallenge/UserChallengeRepository.java b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/infrastructure/challengegroup/userchallenge/UserChallengeRepository.java index 527eb46..13af697 100644 --- a/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/infrastructure/challengegroup/userchallenge/UserChallengeRepository.java +++ b/zzansuni-api-server/app/src/main/java/org/haedal/zzansuni/infrastructure/challengegroup/userchallenge/UserChallengeRepository.java @@ -1,13 +1,17 @@ package org.haedal.zzansuni.infrastructure.challengegroup.userchallenge; +import java.time.LocalDate; + +import java.util.List; import java.util.Optional; + +import org.haedal.zzansuni.domain.challengegroup.userchallenge.DayCountType; import org.haedal.zzansuni.domain.challengegroup.userchallenge.UserChallenge; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; public interface UserChallengeRepository extends JpaRepository { - Optional findByUserIdAndChallengeId(Long userId, Long challengeId); /** @@ -28,4 +32,27 @@ Optional findByChallengeIdWithFetchLazy( @Param("challengeId") Long challengeId, @Param("userId") Long userId ); + /** + * mysql + * 유저의 스트릭을 조회하는 쿼리 + * userId로 챌린지 찾고, userChallenge의 생성시점과 startDate를 비교하고 + * challengeVerification을 left join하여 가져옴 + * verification의 생성시점과 endDate를 비교하고 필터링된 레코드를 날짜기준 그룹화 -> 정렬 + * + * 이 쿼리가 userChallenge에 있는게 맞는지, challengeVerification에 있는게 맞는지 + */ + @Query("SELECT DATE(cv.createdAt) as date, count(*) as count FROM UserChallenge uc " + + "JOIN uc.challengeVerifications cv " + + "WHERE uc.user.id = :userId " + + "AND uc.id = cv.userChallenge.id " + + "AND DATE(uc.createdAt) >= :startDate " + + "AND DATE(cv.createdAt) <= :endDate " + + "AND cv.status = 'APPROVED' " + + "GROUP BY DATE(cv.createdAt) " + + "ORDER BY DATE(cv.createdAt)") + List countAllByUserIdAndDate( + @Param("userId") Long userId, + @Param("startDate")LocalDate startDate, + @Param("endDate")LocalDate endDate + ); } diff --git a/zzansuni-api-server/app/src/main/resources/application.yml b/zzansuni-api-server/app/src/main/resources/application.yml index bcf692a..86d87a8 100644 --- a/zzansuni-api-server/app/src/main/resources/application.yml +++ b/zzansuni-api-server/app/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: # default test profile datasource: - url: "jdbc:h2:mem:zzansuni;" + url: "jdbc:h2:mem:zzansuni;MODE=MySQL" username: "sa" password: "" driver-class-name: org.h2.Driver diff --git a/zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/auth/AuthServiceTest.java b/zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/auth/AuthServiceTest.java index f037baf..88d4074 100644 --- a/zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/auth/AuthServiceTest.java +++ b/zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/auth/AuthServiceTest.java @@ -39,7 +39,7 @@ void oAuth2LoginOrSignup() { String code = "fake-random-code"; // when - Pair pair = authService.oAuth2LoginOrSignup(OAuth2Provider.KAKAO, code, null); + Pair pair = authService.oAuth2LoginOrSignup(OAuth2Provider.KAKAO, code, null); // then User user = userRepository.findAll().get(0); diff --git a/zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/user/UserServiceTest.java b/zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/user/UserServiceTest.java index 16e2d27..30df993 100644 --- a/zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/user/UserServiceTest.java +++ b/zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/user/UserServiceTest.java @@ -1,13 +1,13 @@ package org.haedal.zzansuni.domain.user; import org.haedal.zzansuni.global.security.Role; -import org.haedal.zzansuni.infrastructure.user.UserRepository; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; @@ -22,6 +22,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.when; +@SpringBootTest @ExtendWith(MockitoExtension.class) public class UserServiceTest { @InjectMocks @@ -29,8 +30,6 @@ public class UserServiceTest { @Mock private UserReader userReader; -// @Mock -// private UserRepository userRepository; @DisplayName("사용자 정보를 조회한다.") @Test @@ -39,12 +38,12 @@ public void getUserModel(){ when(userReader.getById(1L)).thenReturn(createUser(1L,"테스트유저1")); //when - UserModel userModel = userService.getUserModel(1L); + UserModel.Main userMain = userService.getUserModel(1L); //then - assertNotNull(userModel); - assertThat(userModel.id()).isEqualTo(1L); - assertThat(userModel.nickname()).isEqualTo("테스트유저1"); + assertNotNull(userMain); + assertThat(userMain.id()).isEqualTo(1L); + assertThat(userMain.nickname()).isEqualTo("테스트유저1"); } @@ -84,7 +83,7 @@ public void getUserPagingByRanking(){ when(userReader.getUserPagingByRanking(pageable)).thenReturn(new PageImpl<>(userList, pageable, userList.size())); //when - Page userPage = userService.getUserPagingByRanking(pageable); + Page userPage = userService.getUserPagingByRanking(pageable); //then @@ -106,7 +105,7 @@ public void getUserPagingByRankingWithInvalidPage(){ } - // 레포지토리 테스트에 있어야 함ㅎ. + @DisplayName("전체 사용자 랭킹이 내림차순으로 나타난다.") @Test public void getUserPagingByRankingOrder(){ @@ -114,6 +113,13 @@ public void getUserPagingByRankingOrder(){ } + @DisplayName("유저의 스트릭을 조회한다.") + @Test + public void getUserStrick(){ + + } + + User createUser(Long id, String nickname){ return User.builder()