From 2d48c12fbc6bf70b6ab02f99cf439cc9faa80e3c Mon Sep 17 00:00:00 2001 From: Rimi Date: Thu, 6 Feb 2025 01:00:01 +0900 Subject: [PATCH 1/2] =?UTF-8?q?:sparkles:=20[Feat]=20Member=20=ED=8B=B0?= =?UTF-8?q?=EC=96=B4=20=EC=A0=95=EB=B3=B4=20->=20=EA=B0=9C=EC=9D=B8?= =?UTF-8?q?=EB=9E=AD=ED=81=AC,=20=EC=9E=90=EC=9C=A0=EB=9E=AD=ED=81=AC?= =?UTF-8?q?=EB=A1=9C=20=EB=82=98=EB=88=84=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/service/AuthFacadeService.java | 21 +++--- .../account/member/domain/Member.java | 59 +++++++++++------ .../dto/response/MyProfileResponse.java | 6 +- .../dto/response/OtherProfileResponse.java | 6 +- .../account/member/service/MemberService.java | 64 +++++++++++++------ .../content/board/domain/Board.java | 10 +-- .../board/dto/response/BoardByIdResponse.java | 8 +-- .../response/BoardByIdResponseForMember.java | 8 +-- .../dto/response/BoardInsertResponse.java | 4 +- .../board/dto/response/BoardListResponse.java | 6 +- .../dto/response/BoardUpdateResponse.java | 4 +- .../dto/response/MyBoardListResponse.java | 4 +- .../board/repository/BoardRepository.java | 2 +- .../external/riot/dto/TierDetails.java | 2 + .../riot/service/RiotInfoService.java | 30 ++++++--- .../matching/domain/MatchingRecord.java | 55 ++++++---------- .../response/MatchingMemberInfoResponse.java | 4 +- .../MatchingRecordRepositoryCustomImpl.java | 20 +++--- .../service/MatchingStrategyProcessor.java | 14 ++-- .../controller/ControllerTestSupport.java | 8 +-- .../auth/AuthFacadeServiceTest.java | 19 ++++-- .../auth/PasswordFacadeServiceTest.java | 12 ++-- .../batch/BatchFacadeServiceTest.java | 12 ++-- .../block/BlockFacadeServiceTest.java | 12 ++-- .../chat/ChatFacadeServiceTest.java | 12 ++-- .../email/EmailFacadeServiceTest.java | 12 ++-- .../friend/FriendFacadeServiceTest.java | 12 ++-- .../FriendRequestFacadeServiceTest.java | 14 ++-- .../manner/MannerFacadeServiceTest.java | 12 ++-- .../matching/MatchingFacadeServiceTest.java | 52 ++++++++++----- .../member/MemberServiceFacadeTest.java | 24 ++++--- .../NotificationFacadeServiceTest.java | 12 ++-- .../report/ReportFacadeServiceTest.java | 12 ++-- .../repository/RepositoryTestSupport.java | 12 ++-- .../service/batch/BatchServiceTest.java | 12 ++-- .../service/chat/ChatCommandServiceTest.java | 12 ++-- .../service/friend/FriendServiceTest.java | 12 ++-- .../service/manner/MannerServiceTest.java | 12 ++-- .../service/matching/MatchingServiceTest.java | 32 +++++----- .../MatchingStrategyProcessorTest.java | 35 +++++++--- .../notification/NotificationServiceTest.java | 12 ++-- .../unit/factory/ChatResponseFactoryTest.java | 8 +-- 42 files changed, 428 insertions(+), 271 deletions(-) diff --git a/src/main/java/com/gamegoo/gamegoo_v2/account/auth/service/AuthFacadeService.java b/src/main/java/com/gamegoo/gamegoo_v2/account/auth/service/AuthFacadeService.java index 5058ea3f..5c49f9e1 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/account/auth/service/AuthFacadeService.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/account/auth/service/AuthFacadeService.java @@ -50,12 +50,10 @@ public String join(JoinRequest request) { String summonerId = riotAccountService.getSummonerId(puuid); // 3. [Riot] tier, rank, winrate 얻기 - TierDetails tierWinrateRank = riotInfoService.getTierWinrateRank(summonerId); + List tierWinrateRank = riotInfoService.getTierWinrateRank(summonerId); // 4. [Member] member DB에 저장 - Member member = memberService.createMember(request.getEmail(), request.getPassword(), request.getGameName(), - request.getTag(), tierWinrateRank.getTier(), tierWinrateRank.getRank(), tierWinrateRank.getWinrate(), - tierWinrateRank.getGameCount(), request.getIsAgree()); + Member member = memberService.createMember(request, tierWinrateRank); // 5. [Riot] 최근 사용한 챔피언 3개 가져오기 List preferChampionfromMatch = riotRecordService.getPreferChampionfromMatch(request.getGameName(), @@ -70,8 +68,8 @@ public String join(JoinRequest request) { /** * 로그인 * - * @param request 이메일,비밀번호 - * @return 사용자 정보 + * @param request 이메일,비밀번호 + * @return 사용자 정보 */ @Transactional public LoginResponse login(LoginRequest request) { @@ -94,8 +92,8 @@ public LoginResponse login(LoginRequest request) { /** * 로그아웃 * - * @param member 사용자 - * @return 메세지 + * @param member 사용자 + * @return 메세지 */ @Transactional public String logout(Member member) { @@ -105,8 +103,9 @@ public String logout(Member member) { /** * 리프레시 토큰으로 토큰 업데이트 - * @param request 리프레시 토큰 - * @return 사용자 정보 + * + * @param request 리프레시 토큰 + * @return 사용자 정보 */ @Transactional public RefreshTokenResponse updateToken(RefreshTokenRequest request) { @@ -126,7 +125,7 @@ public RefreshTokenResponse updateToken(RefreshTokenRequest request) { // refreshToken 저장 authService.addRefreshToken(member, refreshToken); - return RefreshTokenResponse.of(memberId,accessToken,refreshToken); + return RefreshTokenResponse.of(memberId, accessToken, refreshToken); } } diff --git a/src/main/java/com/gamegoo/gamegoo_v2/account/member/domain/Member.java b/src/main/java/com/gamegoo/gamegoo_v2/account/member/domain/Member.java index 5eb9abbd..8da313f0 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/account/member/domain/Member.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/account/member/domain/Member.java @@ -51,7 +51,7 @@ public class Member extends BaseDateTimeEntity { private boolean blind = false; @Enumerated(EnumType.STRING) - @Column(nullable = false, columnDefinition = "VARCHAR(20)") + @Column(nullable = false, columnDefinition = "VARCHAR(50)") private LoginType loginType; @Column(nullable = false, length = 100) @@ -61,17 +61,27 @@ public class Member extends BaseDateTimeEntity { private String tag; @Enumerated(EnumType.STRING) - @Column(nullable = false) - private Tier tier; + @Column(nullable = false, columnDefinition = "VARCHAR(50)") + private Tier soloTier = Tier.UNRANKED; @Column(nullable = false) - private int gameRank; + private int soloRank = 0; @Column(nullable = false) - private double winRate; + private double soloWinRate = 0.0; @Enumerated(EnumType.STRING) @Column(nullable = false) + private Tier freeTier = Tier.UNRANKED; + + @Column(nullable = false) + private int freeRank = 0; + + @Column(nullable = false) + private double freeWinRate = 0.0; + + @Enumerated(EnumType.STRING) + @Column(nullable = false, columnDefinition = "VARCHAR(20)") private Position mainPosition = Position.ANY; @Enumerated(EnumType.STRING) @@ -79,15 +89,18 @@ public class Member extends BaseDateTimeEntity { private Position subPosition = Position.ANY; @Enumerated(EnumType.STRING) - @Column(nullable = false) + @Column(nullable = false, columnDefinition = "VARCHAR(20)") private Position wantPosition = Position.ANY; @Enumerated(EnumType.STRING) - @Column(nullable = false) + @Column(nullable = false, columnDefinition = "VARCHAR(50)") private Mike mike = Mike.UNAVAILABLE; @Column(nullable = false) - private int gameCount; + private int soloGameCount = 0; + + @Column(nullable = false) + private int freeGameCount = 0; @Column(nullable = false) private boolean isAgree; @@ -105,7 +118,8 @@ public class Member extends BaseDateTimeEntity { private List memberGameStyleList = new ArrayList<>(); public static Member create(String email, String password, LoginType loginType, String gameName, String tag, - Tier tier, int gameRank, double winRate, int gameCount, boolean isAgree) { + Tier soloTier, int soloRank, double soloWinRate, Tier freeTier, int freeRank, + double freeWinRate, int soloGameCount, int freeGameCount, boolean isAgree) { int randomProfileImage = ThreadLocalRandom.current().nextInt(1, 9); return Member.builder() @@ -115,27 +129,36 @@ public static Member create(String email, String password, LoginType loginType, .loginType(loginType) .gameName(gameName) .tag(tag) - .tier(tier) - .gameCount(gameCount) - .gameRank(gameRank) - .winRate(winRate) + .soloGameCount(soloGameCount) + .freeGameCount(freeGameCount) + .soloTier(soloTier) + .soloRank(soloRank) + .soloWinRate(soloWinRate) + .freeTier(freeTier) + .freeRank(freeRank) + .freeWinRate(freeWinRate) .isAgree(isAgree) .build(); } @Builder private Member(String email, String password, int profileImage, LoginType loginType, String gameName, - String tag, Tier tier, int gameRank, double winRate, int gameCount, boolean isAgree) { + String tag, Tier soloTier, int soloRank, double soloWinRate, Tier freeTier, int freeRank, + double freeWinRate, int soloGameCount, int freeGameCount, boolean isAgree) { this.email = email; this.password = password; this.profileImage = profileImage; this.loginType = loginType; this.gameName = gameName; this.tag = tag; - this.tier = tier; - this.gameRank = gameRank; - this.winRate = winRate; - this.gameCount = gameCount; + this.soloTier = soloTier; + this.soloRank = soloRank; + this.soloWinRate = soloWinRate; + this.soloGameCount = soloGameCount; + this.freeTier = freeTier; + this.freeRank = freeRank; + this.freeWinRate = freeWinRate; + this.freeGameCount = freeGameCount; this.isAgree = isAgree; } diff --git a/src/main/java/com/gamegoo/gamegoo_v2/account/member/dto/response/MyProfileResponse.java b/src/main/java/com/gamegoo/gamegoo_v2/account/member/dto/response/MyProfileResponse.java index 9543816a..e56f3324 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/account/member/dto/response/MyProfileResponse.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/account/member/dto/response/MyProfileResponse.java @@ -51,8 +51,8 @@ public static MyProfileResponse of(Member member, Double mannerRank) { .email(member.getEmail()) .gameName(member.getGameName()) .tag(member.getTag()) - .tier(member.getTier()) - .gameRank(member.getGameRank()) + .tier(member.getSoloTier()) + .gameRank(member.getSoloRank()) .profileImg(member.getProfileImage()) .mannerLevel(member.getMannerLevel()) .mannerRank(mannerRank) @@ -61,7 +61,7 @@ public static MyProfileResponse of(Member member, Double mannerRank) { .wantP(member.getWantPosition()) .isAgree(member.isAgree()) .isBlind(member.isBlind()) - .winrate(member.getWinRate()) + .winrate(member.getSoloWinRate()) .loginType(String.valueOf(member.getLoginType())) .updatedAt(String.valueOf(member.getUpdatedAt())) .gameStyleResponseList(gameStyleResponseList) diff --git a/src/main/java/com/gamegoo/gamegoo_v2/account/member/dto/response/OtherProfileResponse.java b/src/main/java/com/gamegoo/gamegoo_v2/account/member/dto/response/OtherProfileResponse.java index 7dd78ecb..8b0cb8be 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/account/member/dto/response/OtherProfileResponse.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/account/member/dto/response/OtherProfileResponse.java @@ -55,8 +55,8 @@ public static OtherProfileResponse of(Member targetMember, Double managerRank, .mike(targetMember.getMike()) .gameName(targetMember.getGameName()) .tag(targetMember.getTag()) - .tier(targetMember.getTier()) - .gameRank(targetMember.getGameRank()) + .tier(targetMember.getSoloTier()) + .gameRank(targetMember.getSoloRank()) .profileImg(targetMember.getProfileImage()) .mannerLevel(targetMember.getMannerLevel()) .mannerRank(managerRank) @@ -66,7 +66,7 @@ public static OtherProfileResponse of(Member targetMember, Double managerRank, .subP(targetMember.getSubPosition()) .isAgree(targetMember.isAgree()) .isBlind(targetMember.isBlind()) - .winrate(targetMember.getWinRate()) + .winrate(targetMember.getSoloWinRate()) .loginType(String.valueOf(targetMember.getLoginType())) .updatedAt(String.valueOf(targetMember.getUpdatedAt())) .blocked(isBlocked) diff --git a/src/main/java/com/gamegoo/gamegoo_v2/account/member/service/MemberService.java b/src/main/java/com/gamegoo/gamegoo_v2/account/member/service/MemberService.java index c9a6b00c..fa3198a0 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/account/member/service/MemberService.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/account/member/service/MemberService.java @@ -1,5 +1,6 @@ package com.gamegoo.gamegoo_v2.account.member.service; +import com.gamegoo.gamegoo_v2.account.auth.dto.request.JoinRequest; import com.gamegoo.gamegoo_v2.account.member.domain.LoginType; import com.gamegoo.gamegoo_v2.account.member.domain.Member; import com.gamegoo.gamegoo_v2.account.member.domain.Mike; @@ -8,11 +9,15 @@ import com.gamegoo.gamegoo_v2.account.member.repository.MemberRepository; import com.gamegoo.gamegoo_v2.core.exception.MemberException; import com.gamegoo.gamegoo_v2.core.exception.common.ErrorCode; +import com.gamegoo.gamegoo_v2.external.riot.dto.TierDetails; +import com.gamegoo.gamegoo_v2.matching.domain.GameMode; import com.gamegoo.gamegoo_v2.utils.PasswordUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + @Service @RequiredArgsConstructor @Transactional(readOnly = true) @@ -20,29 +25,52 @@ public class MemberService { private final MemberRepository memberRepository; - /** - * Member 생성 메소드 - * - * @param email 이메일 - * @param password 비밀번호 - * @param gameName 소환사명 - * @param tag 태그 - * @param tier 티어 - * @param rank 랭크 - * @param winrate 승률 - * @param gameCount 총 게임 횟수 - * @param isAgree 개인정보 동의 - * @return Member - */ @Transactional - public Member createMember(String email, String password, String gameName, String tag, Tier tier, int rank, - double winrate, int gameCount, boolean isAgree) { - Member member = Member.create(email, PasswordUtil.encodePassword(password), LoginType.GENERAL, gameName, tag, - tier, rank, winrate, gameCount, isAgree); + public Member createMember(JoinRequest request, List tiers) { + + // 기본 값 설정 + Tier soloTier = Tier.UNRANKED; + int soloRank = 0; + double soloWinRate = 0.0; + int soloGameCount = 0; + + Tier freeTier = Tier.UNRANKED; + int freeRank = 0; + double freeWinRate = 0.0; + int freeGameCount = 0; + + // 티어 정보 설정 + for (TierDetails tierDetail : tiers) { + if (tierDetail.getGameMode() == GameMode.SOLO) { + soloTier = tierDetail.getTier(); + soloRank = tierDetail.getRank(); + soloWinRate = tierDetail.getWinrate(); + soloGameCount = tierDetail.getGameCount(); + } else if (tierDetail.getGameMode() == GameMode.FREE) { + freeTier = tierDetail.getTier(); + freeRank = tierDetail.getRank(); + freeWinRate = tierDetail.getWinrate(); + freeGameCount = tierDetail.getGameCount(); + } + } + + // Member 생성 + Member member = Member.create( + request.getEmail(), + PasswordUtil.encodePassword(request.getPassword()), + LoginType.GENERAL, + request.getGameName(), + request.getTag(), + soloTier, soloRank, soloWinRate, + freeTier, freeRank, freeWinRate, + soloGameCount, freeGameCount, true + ); + memberRepository.save(member); return member; } + /** * 회원 정보 조회 * diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/domain/Board.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/domain/Board.java index 8dc0af4a..552979fe 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/domain/Board.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/domain/Board.java @@ -38,23 +38,23 @@ public class Board extends BaseDateTimeEntity { private Long id; @Enumerated(EnumType.STRING) - @Column(nullable = false) + @Column(nullable = false, columnDefinition = "VARCHAR(20)") private GameMode gameMode; @Enumerated(EnumType.STRING) - @Column(nullable = false) + @Column(nullable = false, columnDefinition = "VARCHAR(20)") private Position mainP; @Enumerated(EnumType.STRING) - @Column(nullable = false) + @Column(nullable = false, columnDefinition = "VARCHAR(20)") private Position subP; @Enumerated(EnumType.STRING) - @Column(nullable = false) + @Column(nullable = false, columnDefinition = "VARCHAR(20)") private Position wantP; @Enumerated(EnumType.STRING) - @Column(nullable = false) + @Column(nullable = false, columnDefinition = "VARCHAR(20)") private Mike mike; @Column(length = 5000) diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardByIdResponse.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardByIdResponse.java index 2f95e738..4f058641 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardByIdResponse.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardByIdResponse.java @@ -58,16 +58,16 @@ public static BoardByIdResponse of(Board board) { .gameName(poster.getGameName()) .tag(poster.getTag()) .mannerLevel(poster.getMannerLevel()) - .tier(poster.getTier()) - .rank(poster.getGameRank()) + .tier(poster.getSoloTier()) + .rank(poster.getSoloRank()) .mike(board.getMike()) .championResponseList(championResponseList) .gameMode(board.getGameMode()) .mainP(board.getMainP()) .subP(board.getSubP()) .wantP(board.getWantP()) - .recentGameCount(poster.getGameCount()) - .winRate(poster.getWinRate()) + .recentGameCount(poster.getSoloGameCount()) + .winRate(poster.getSoloWinRate()) .gameStyles(gameStyleIds) .contents(board.getContent()) .build(); diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardByIdResponseForMember.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardByIdResponseForMember.java index d4fdf6cf..f4379a6b 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardByIdResponseForMember.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardByIdResponseForMember.java @@ -74,16 +74,16 @@ public static BoardByIdResponseForMember of( .gameName(poster.getGameName()) .tag(poster.getTag()) .mannerLevel(poster.getMannerLevel()) - .tier(poster.getTier()) - .rank(poster.getGameRank()) + .tier(poster.getSoloTier()) + .rank(poster.getSoloRank()) .mike(board.getMike()) .championResponseDTOList(championResponseList) .gameMode(board.getGameMode()) .mainP(board.getMainP()) .subPosition(board.getSubP()) .wantPosition(board.getWantP()) - .recentGameCount(poster.getGameCount()) - .winRate(poster.getWinRate()) + .recentGameCount(poster.getSoloGameCount()) + .winRate(poster.getSoloWinRate()) .gameStyles(gameStyleIds) .contents(board.getContent()) .build(); diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardInsertResponse.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardInsertResponse.java index 3c096b82..d7fa8255 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardInsertResponse.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardInsertResponse.java @@ -37,8 +37,8 @@ public static BoardInsertResponse of(Board board, Member member) { .profileImage(board.getBoardProfileImage()) .gameName(member.getGameName()) .tag(member.getTag()) - .tier(member.getTier()) - .rank(member.getGameRank()) + .tier(member.getSoloTier()) + .rank(member.getSoloRank()) .gameMode(board.getGameMode()) .mainP(board.getMainP()) .subP(board.getSubP()) diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardListResponse.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardListResponse.java index 33a93e35..f470903f 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardListResponse.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardListResponse.java @@ -50,14 +50,14 @@ public static BoardListResponse of(Board board) { .gameName(member.getGameName()) .tag(member.getTag()) .mannerLevel(member.getMannerLevel()) - .tier(member.getTier()) - .rank(member.getGameRank()) + .tier(member.getSoloTier()) + .rank(member.getSoloRank()) .gameMode(board.getGameMode()) .mainP(board.getMainP()) .subP(board.getSubP()) .wantP(board.getWantP()) .championResponseList(championResponseList) - .winRate(member.getWinRate()) + .winRate(member.getSoloWinRate()) .createdAt(board.getCreatedAt()) .mike(board.getMike()) .build(); diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardUpdateResponse.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardUpdateResponse.java index 042501fe..1d763be5 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardUpdateResponse.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardUpdateResponse.java @@ -43,8 +43,8 @@ public static BoardUpdateResponse of(Board board) { .profileImage(board.getBoardProfileImage()) .gameName(member.getGameName()) .tag(member.getTag()) - .tier(member.getTier()) - .rank(member.getGameRank()) + .tier(member.getSoloTier()) + .rank(member.getSoloRank()) .gameMode(board.getGameMode()) .mainP(board.getMainP()) .subP(board.getSubP()) diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/MyBoardListResponse.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/MyBoardListResponse.java index 2f0b436d..41677b5e 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/MyBoardListResponse.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/MyBoardListResponse.java @@ -30,8 +30,8 @@ public static MyBoardListResponse of(Board board) { .profileImage(board.getBoardProfileImage()) .gameName(member.getGameName()) .tag(member.getTag()) - .tier(member.getTier()) - .rank(member.getGameRank()) + .tier(member.getSoloTier()) + .rank(member.getSoloRank()) .createdAt(board.getCreatedAt()) .build(); } diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/repository/BoardRepository.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/repository/BoardRepository.java index c6c21419..3791184b 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/repository/BoardRepository.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/repository/BoardRepository.java @@ -18,7 +18,7 @@ public interface BoardRepository extends JpaRepository { @Query("SELECT b From Board b JOIN b.member m WHERE" + "(b.deleted = false) AND " + "(:mode IS NULL OR b.gameMode = :mode) AND " + - "(:tier IS NULL OR m.tier = :tier) AND " + + "(:tier IS NULL OR m.soloTier = :tier) AND " + "(:mainP IS NULL OR :mainP = 'ANY' OR b.mainP = :mainP ) AND " + "(:mike IS NULL OR b.mike = :mike)") Page findByFilters(@Param("mode") GameMode gameMode, diff --git a/src/main/java/com/gamegoo/gamegoo_v2/external/riot/dto/TierDetails.java b/src/main/java/com/gamegoo/gamegoo_v2/external/riot/dto/TierDetails.java index 48cb8207..a821994d 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/external/riot/dto/TierDetails.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/external/riot/dto/TierDetails.java @@ -1,6 +1,7 @@ package com.gamegoo.gamegoo_v2.external.riot.dto; import com.gamegoo.gamegoo_v2.account.member.domain.Tier; +import com.gamegoo.gamegoo_v2.matching.domain.GameMode; import lombok.AllArgsConstructor; import lombok.Getter; @@ -8,6 +9,7 @@ @AllArgsConstructor public class TierDetails { + GameMode gameMode; Tier tier; double winrate; int rank; diff --git a/src/main/java/com/gamegoo/gamegoo_v2/external/riot/service/RiotInfoService.java b/src/main/java/com/gamegoo/gamegoo_v2/external/riot/service/RiotInfoService.java index b5797a85..4a788994 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/external/riot/service/RiotInfoService.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/external/riot/service/RiotInfoService.java @@ -5,6 +5,7 @@ import com.gamegoo.gamegoo_v2.account.member.domain.Tier; import com.gamegoo.gamegoo_v2.external.riot.dto.RiotInfoResponse; import com.gamegoo.gamegoo_v2.external.riot.dto.TierDetails; +import com.gamegoo.gamegoo_v2.matching.domain.GameMode; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; @@ -12,6 +13,8 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.RestTemplate; +import java.util.ArrayList; +import java.util.List; import java.util.Map; @Service @@ -28,6 +31,7 @@ public class RiotInfoService { private static final String RIOT_LEAGUE_API_URL_TEMPLATE = "https://kr.api.riotgames" + ".com/lol/league/v4/entries/by-summoner/%s?api_key=%s"; private static final String RIOT_SOLO_QUEUE_TYPE = "RANKED_SOLO_5x5"; + private static final String RIOT_FREE_QUEUE_TYPE = "RANKED_FLEX_SR"; private static final Map romanToIntMap = Map.of( "I", 1, "II", 2, "III", 3, "IV", 4 ); @@ -35,17 +39,24 @@ public class RiotInfoService { /** * 티어, 랭크, 승률 조회 * - * @param encryptedSummonerId 암호화된 소환사 id - * @return 소환사 정보 + * @param encryptedSummonerId 암호화된 소환사 id + * @return 소환사 정보 */ - public TierDetails getTierWinrateRank(String encryptedSummonerId) { + public List getTierWinrateRank(String encryptedSummonerId) { + // 티어 정보 + List tierDetails = new ArrayList<>(); + + // riot API 호출 String url = String.format(RIOT_LEAGUE_API_URL_TEMPLATE, encryptedSummonerId, riotAPIKey); try { RiotInfoResponse[] responses = restTemplate.getForObject(url, RiotInfoResponse[].class); if (responses != null) { for (RiotInfoResponse response : responses) { if (RIOT_SOLO_QUEUE_TYPE.equals(response.getQueueType())) { - return calculateTierDetails(response); + tierDetails.add(calculateTierDetails(response, GameMode.SOLO)); + } + if (RIOT_FREE_QUEUE_TYPE.equals(response.getQueueType())) { + tierDetails.add(calculateTierDetails(response, GameMode.FREE)); } } } @@ -53,21 +64,22 @@ public TierDetails getTierWinrateRank(String encryptedSummonerId) { log.error("RIOT API INTERNAL ERROR: ", e); throw new RiotException(ErrorCode.RIOT_ERROR); } - return new TierDetails(Tier.UNRANKED, 0, 0, 0); + + return tierDetails; } /** * riot 정보 가공 * - * @param response riot resposne - * @return 소환사 정보 + * @param response riot resposne + * @return 소환사 정보 */ - private static TierDetails calculateTierDetails(RiotInfoResponse response) { + private static TierDetails calculateTierDetails(RiotInfoResponse response, GameMode gameMode) { int totalGames = response.getWins() + response.getLosses(); double winRate = Math.round((double) response.getWins() / totalGames * 1000) / 10.0; Tier tier = Tier.valueOf(response.getTier().toUpperCase()); int rank = romanToIntMap.get(response.getRank()); - return new TierDetails(tier, winRate, rank, totalGames); + return new TierDetails(gameMode, tier, winRate, rank, totalGames); } } diff --git a/src/main/java/com/gamegoo/gamegoo_v2/matching/domain/MatchingRecord.java b/src/main/java/com/gamegoo/gamegoo_v2/matching/domain/MatchingRecord.java index 33bf8d59..9226a60f 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/matching/domain/MatchingRecord.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/matching/domain/MatchingRecord.java @@ -31,54 +31,44 @@ public class MatchingRecord extends BaseDateTimeEntity { private String matchingUuid; @Enumerated(EnumType.STRING) - @Column(nullable = false) + @Column(nullable = false, columnDefinition = "VARCHAR(20)") private GameMode gameMode; @Enumerated(EnumType.STRING) - @Column + @Column(columnDefinition = "VARCHAR(20)") private Position mainPosition; @Enumerated(EnumType.STRING) - @Column + @Column(columnDefinition = "VARCHAR(20)") private Position subPosition; @Enumerated(EnumType.STRING) - @Column + @Column(columnDefinition = "VARCHAR(20)") private Position wantPosition; @Enumerated(EnumType.STRING) - @Column + @Column(columnDefinition = "VARCHAR(20)") private Mike mike; @Enumerated(EnumType.STRING) - @Column - private Tier soloTier; + @Column(nullable = false, columnDefinition = "VARCHAR(50)") + private Tier tier; @Column - private int soloRank; + private int gameRank; @Column(nullable = false) - private double soloWinRate; + private double winrate; @Enumerated(EnumType.STRING) - @Column - private Tier freeTier; - - @Column - private int freeRank; - - @Column - private double freeWinRate; - - @Enumerated(EnumType.STRING) - @Column + @Column(nullable = false, columnDefinition = "VARCHAR(50)") private MatchingType matchingType; @Column private int mannerLevel; @Enumerated(EnumType.STRING) - @Column(nullable = false) + @Column(nullable = false, columnDefinition = "VARCHAR(50)") private MatchingStatus status = MatchingStatus.PENDING; @Column @@ -100,12 +90,9 @@ public static MatchingRecord create(GameMode gameMode, MatchingType matchingType .subPosition(member.getSubPosition()) .wantPosition(member.getWantPosition()) .mike(member.getMike()) - .soloTier(member.getTier()) // TODO: - .soloRank(member.getGameRank()) // TODO: - .soloWinRate(member.getWinRate()) // TODO: - .freeTier(member.getTier()) // TODO: - .freeRank(member.getGameRank()) // TODO: - .freeWinRate(member.getWinRate()) // TODO: + .tier(member.getSoloTier()) // TODO: + .gameRank(member.getSoloRank()) // TODO: + .winrate(member.getSoloWinRate()) // TODO: .matchingType(matchingType) .mannerLevel(member.getMannerLevel()) .member(member) @@ -115,20 +102,16 @@ public static MatchingRecord create(GameMode gameMode, MatchingType matchingType // MatchingRecord Builder @Builder private MatchingRecord(GameMode gameMode, Position mainPosition, Position subPosition, Position wantPosition, - Mike mike, Tier soloTier, int soloRank, double soloWinRate, Tier freeTier, - int freeRank, double freeWinRate, MatchingType matchingType, int mannerLevel, - Member member) { + Mike mike, Tier tier, int gameRank, double winrate, MatchingType matchingType, + int mannerLevel, Member member) { this.gameMode = gameMode; this.mainPosition = mainPosition; this.subPosition = subPosition; this.wantPosition = wantPosition; this.mike = mike; - this.soloTier = soloTier; - this.soloRank = soloRank; - this.soloWinRate = soloWinRate; - this.freeTier = freeTier; - this.freeRank = freeRank; - this.freeWinRate = freeWinRate; + this.tier = tier; + this.gameRank = gameRank; + this.winrate = winrate; this.matchingType = matchingType; this.mannerLevel = mannerLevel; this.member = member; diff --git a/src/main/java/com/gamegoo/gamegoo_v2/matching/dto/response/MatchingMemberInfoResponse.java b/src/main/java/com/gamegoo/gamegoo_v2/matching/dto/response/MatchingMemberInfoResponse.java index 343bed1d..fd7e3932 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/matching/dto/response/MatchingMemberInfoResponse.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/matching/dto/response/MatchingMemberInfoResponse.java @@ -43,8 +43,8 @@ public static MatchingMemberInfoResponse of(Member member, String matchingUuid) .mike(member.getMike()) .gameName(member.getGameName()) .tag(member.getTag()) - .tier(member.getTier()) - .rank(member.getGameRank()) + .tier(member.getSoloTier()) + .rank(member.getSoloRank()) .profileImg(member.getProfileImage()) .mannerLevel(member.getMannerLevel()) .mainP(member.getMainPosition()) diff --git a/src/main/java/com/gamegoo/gamegoo_v2/matching/repository/MatchingRecordRepositoryCustomImpl.java b/src/main/java/com/gamegoo/gamegoo_v2/matching/repository/MatchingRecordRepositoryCustomImpl.java index 1e988305..3f861c8e 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/matching/repository/MatchingRecordRepositoryCustomImpl.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/matching/repository/MatchingRecordRepositoryCustomImpl.java @@ -65,15 +65,15 @@ private BooleanExpression applyGameModeFilter(GameMode gameMode) { * SOLO 모드 - 개인 랭크 제한 검증 (validateSoloRankRange 적용) */ private BooleanExpression validateSoloRankFilter() { - return validateSoloRankRange(matchingRecord.soloTier); + return validateSoloRankRange(matchingRecord.tier); } /** * FREE 모드 - 자유 랭크 제한 검증 */ private BooleanExpression validateFreeRankFilter() { - return matchingRecord.freeTier.in(Tier.IRON, Tier.BRONZE, Tier.SILVER, Tier.GOLD) - .and(matchingRecord.freeTier.notIn(Tier.EMERALD, Tier.DIAMOND, Tier.MASTER, Tier.GRANDMASTER, + return matchingRecord.tier.in(Tier.IRON, Tier.BRONZE, Tier.SILVER, Tier.GOLD) + .and(matchingRecord.tier.notIn(Tier.EMERALD, Tier.DIAMOND, Tier.MASTER, Tier.GRANDMASTER, Tier.CHALLENGER)); } @@ -94,7 +94,7 @@ private BooleanExpression existsValidMatchSubquery() { } /** - * 매칭 가능한 포지션 조건 ] + * 매칭 가능한 포지션 조건 */ private BooleanExpression isValidMatchingPosition(QMatchingRecord myRecord, QMatchingRecord otherRecord) { BooleanExpression condition1 = myRecord.mainPosition.ne(Position.ANY) @@ -127,15 +127,15 @@ private BooleanExpression isValidMatchingPosition(QMatchingRecord myRecord, QMat * 개인 랭크 제한 검증 (SOLO 모드 전용) - QueryDSL에서 적용 가능하도록 수정 */ private BooleanExpression validateSoloRankRange(EnumPath tierPath) { - return tierPath.eq(Tier.IRON).or(tierPath.eq(Tier.BRONZE)).and(matchingRecord.soloTier.in(Tier.IRON, + return tierPath.eq(Tier.IRON).or(tierPath.eq(Tier.BRONZE)).and(matchingRecord.tier.in(Tier.IRON, Tier.BRONZE, Tier.SILVER)) - .or(tierPath.eq(Tier.SILVER).and(matchingRecord.soloTier.in(Tier.IRON, Tier.BRONZE, Tier.SILVER, + .or(tierPath.eq(Tier.SILVER).and(matchingRecord.tier.in(Tier.IRON, Tier.BRONZE, Tier.SILVER, Tier.GOLD))) - .or(tierPath.eq(Tier.GOLD).and(matchingRecord.soloTier.in(Tier.SILVER, Tier.GOLD, Tier.PLATINUM))) - .or(tierPath.eq(Tier.PLATINUM).and(matchingRecord.soloTier.in(Tier.GOLD, Tier.PLATINUM, Tier.EMERALD))) - .or(tierPath.eq(Tier.EMERALD).and(matchingRecord.soloTier.in(Tier.PLATINUM, Tier.EMERALD, + .or(tierPath.eq(Tier.GOLD).and(matchingRecord.tier.in(Tier.SILVER, Tier.GOLD, Tier.PLATINUM))) + .or(tierPath.eq(Tier.PLATINUM).and(matchingRecord.tier.in(Tier.GOLD, Tier.PLATINUM, Tier.EMERALD))) + .or(tierPath.eq(Tier.EMERALD).and(matchingRecord.tier.in(Tier.PLATINUM, Tier.EMERALD, Tier.DIAMOND))) - .or(tierPath.eq(Tier.DIAMOND).and(matchingRecord.soloTier.in(Tier.EMERALD, Tier.DIAMOND))) + .or(tierPath.eq(Tier.DIAMOND).and(matchingRecord.tier.in(Tier.EMERALD, Tier.DIAMOND))) .or(Expressions.FALSE); // 마스터 이상 필터 적용 안 함 } diff --git a/src/main/java/com/gamegoo/gamegoo_v2/matching/service/MatchingStrategyProcessor.java b/src/main/java/com/gamegoo/gamegoo_v2/matching/service/MatchingStrategyProcessor.java index a006916a..9c7303bd 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/matching/service/MatchingStrategyProcessor.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/matching/service/MatchingStrategyProcessor.java @@ -35,8 +35,8 @@ public int calculateFastPriority(MatchingRecord myRecord, MatchingRecord otherRe otherRecord.getMannerLevel(), myRecord.getMannerLevel(), 16, 4); // TODO: 티어 및 랭킹 점수 계산 - priority += MatchingScoreCalculator.getTierRankPriority(myRecord.getSoloTier(), myRecord.getSoloRank(), - otherRecord.getSoloTier(), otherRecord.getSoloRank(), 40, 4); + priority += MatchingScoreCalculator.getTierRankPriority(myRecord.getTier(), myRecord.getGameRank(), + otherRecord.getTier(), otherRecord.getGameRank(), 40, 4); // 포지션 우선순위 priority += MatchingScoreCalculator.getPositionPriority( @@ -66,8 +66,8 @@ public int calculateSoloPriority(MatchingRecord myRecord, MatchingRecord otherRe // 티어 및 랭킹 점수 계산 priority += MatchingScoreCalculator.getTierRankPriority( - myRecord.getSoloTier(), myRecord.getSoloRank(), - otherRecord.getSoloTier(), otherRecord.getSoloRank(), 40, 4); + myRecord.getTier(), myRecord.getGameRank(), + otherRecord.getTier(), otherRecord.getGameRank(), 40, 4); // 포지션 우선순위 priority += MatchingScoreCalculator.getPositionPriority( @@ -97,8 +97,8 @@ public int calculateFreePriority(MatchingRecord myRecord, MatchingRecord otherRe // 티어 및 랭킹 점수 계산 priority += MatchingScoreCalculator.getTierRankPriority( - myRecord.getFreeTier(), myRecord.getFreeRank(), - otherRecord.getFreeTier(), otherRecord.getFreeRank(), 40, 4); + myRecord.getTier(), myRecord.getGameRank(), + otherRecord.getTier(), otherRecord.getGameRank(), 40, 4); // 포지션 우선순위 priority += MatchingScoreCalculator.getPositionPriority( @@ -152,7 +152,7 @@ public boolean validatePreciseMatching(MatchingRecord myRecord, MatchingRecord o } // 티어 차이가 1개 이상 나면 매칭 실패 - return Math.abs(myRecord.getSoloTier().ordinal() - otherRecord.getSoloTier().ordinal()) < 1; + return Math.abs(myRecord.getTier().ordinal() - otherRecord.getTier().ordinal()) < 1; } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/controller/ControllerTestSupport.java b/src/test/java/com/gamegoo/gamegoo_v2/controller/ControllerTestSupport.java index 3e0f9e74..034ab878 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/controller/ControllerTestSupport.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/controller/ControllerTestSupport.java @@ -89,10 +89,10 @@ public void setUp() throws Exception { .loginType(MOCK_LOGIN_TYPE) .gameName(MOCK_GAMENAME) .tag(MOCK_TAG) - .tier(MOCK_TIER) - .gameRank(MOCK_GAME_RANK) - .winRate(MOCK_WIN_RATE) - .gameCount(MOCK_GAME_COUNT) + .soloTier(MOCK_TIER) + .soloRank(MOCK_GAME_RANK) + .soloWinRate(MOCK_WIN_RATE) + .soloGameCount(MOCK_GAME_COUNT) .isAgree(MOCK_IS_AGREE) .build(); given(authMemberArgumentResolver.resolveArgument(any(), any(), any(), any())).willReturn(mockMember); diff --git a/src/test/java/com/gamegoo/gamegoo_v2/integration/auth/AuthFacadeServiceTest.java b/src/test/java/com/gamegoo/gamegoo_v2/integration/auth/AuthFacadeServiceTest.java index 16e99b1a..8b565843 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/integration/auth/AuthFacadeServiceTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/integration/auth/AuthFacadeServiceTest.java @@ -95,7 +95,7 @@ void login() { RefreshToken refreshToken = refreshTokenRepository.findByMember(member).orElseThrow(); Long tokenExpirationTime = jwtProvider.getTokenExpirationTime(refreshToken.getRefreshToken()); // 만료 시간 - checkEpirationTime(tokenExpirationTime); + checkExpirationTime(tokenExpirationTime); } @@ -182,7 +182,7 @@ void updateToken() { assertThat(responseId).isEqualTo(memberId); Long tokenExpirationTime = jwtProvider.getTokenExpirationTime(result.get().getRefreshToken()); - checkEpirationTime(tokenExpirationTime); + checkExpirationTime(tokenExpirationTime); } @@ -216,15 +216,19 @@ private Member createMember(String email, String gameName, String password) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } - private static void checkEpirationTime(Long tokenExpirationTime) { + private static void checkExpirationTime(Long tokenExpirationTime) { long currentTimeMillis = Instant.now().toEpochMilli(); // 현재 시간 // AssertJ를 이용해 만료 시간이 현재 시간 이후인지 확인 @@ -232,4 +236,5 @@ private static void checkEpirationTime(Long tokenExpirationTime) { .as("Check if the token expiration time is after the current time") .isGreaterThan(currentTimeMillis); } + } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/integration/auth/PasswordFacadeServiceTest.java b/src/test/java/com/gamegoo/gamegoo_v2/integration/auth/PasswordFacadeServiceTest.java index 1f6b575b..f508ca43 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/integration/auth/PasswordFacadeServiceTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/integration/auth/PasswordFacadeServiceTest.java @@ -138,10 +138,14 @@ private Member createMember(String email, String gameName, String password) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/integration/batch/BatchFacadeServiceTest.java b/src/test/java/com/gamegoo/gamegoo_v2/integration/batch/BatchFacadeServiceTest.java index 1b4514e8..7ac59dcd 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/integration/batch/BatchFacadeServiceTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/integration/batch/BatchFacadeServiceTest.java @@ -206,10 +206,14 @@ private Member createMember(String email, String gameName) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/integration/block/BlockFacadeServiceTest.java b/src/test/java/com/gamegoo/gamegoo_v2/integration/block/BlockFacadeServiceTest.java index 98b672e9..919545f6 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/integration/block/BlockFacadeServiceTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/integration/block/BlockFacadeServiceTest.java @@ -358,10 +358,14 @@ private Member createMember(String email, String gameName) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/integration/chat/ChatFacadeServiceTest.java b/src/test/java/com/gamegoo/gamegoo_v2/integration/chat/ChatFacadeServiceTest.java index 11ff9d01..568ca776 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/integration/chat/ChatFacadeServiceTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/integration/chat/ChatFacadeServiceTest.java @@ -1088,10 +1088,14 @@ private Member createMember(String email, String gameName) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/integration/email/EmailFacadeServiceTest.java b/src/test/java/com/gamegoo/gamegoo_v2/integration/email/EmailFacadeServiceTest.java index 70ccd75a..4896c0f9 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/integration/email/EmailFacadeServiceTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/integration/email/EmailFacadeServiceTest.java @@ -143,10 +143,14 @@ private Member createMember(String email, String gameName) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/integration/friend/FriendFacadeServiceTest.java b/src/test/java/com/gamegoo/gamegoo_v2/integration/friend/FriendFacadeServiceTest.java index e1969e6d..71998445 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/integration/friend/FriendFacadeServiceTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/integration/friend/FriendFacadeServiceTest.java @@ -338,10 +338,14 @@ private Member createMember(String email, String gameName) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/integration/friend/FriendRequestFacadeServiceTest.java b/src/test/java/com/gamegoo/gamegoo_v2/integration/friend/FriendRequestFacadeServiceTest.java index 005ec173..651f799d 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/integration/friend/FriendRequestFacadeServiceTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/integration/friend/FriendRequestFacadeServiceTest.java @@ -61,7 +61,7 @@ class FriendRequestFacadeServiceTest { @MockitoSpyBean private NotificationRepository notificationRepository; - + private static final String TARGET_EMAIL = "target@naver.com"; private static final String TARGET_GAMENAME = "target"; @@ -382,10 +382,14 @@ private Member createMember(String email, String gameName) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/integration/manner/MannerFacadeServiceTest.java b/src/test/java/com/gamegoo/gamegoo_v2/integration/manner/MannerFacadeServiceTest.java index 249a28af..074f3f9d 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/integration/manner/MannerFacadeServiceTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/integration/manner/MannerFacadeServiceTest.java @@ -1020,10 +1020,14 @@ private Member createMember(String email, String gameName) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/integration/matching/MatchingFacadeServiceTest.java b/src/test/java/com/gamegoo/gamegoo_v2/integration/matching/MatchingFacadeServiceTest.java index 8f1fff16..9991643d 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/integration/matching/MatchingFacadeServiceTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/integration/matching/MatchingFacadeServiceTest.java @@ -246,8 +246,8 @@ void startChatroomByMatchingSucceedsWhenChatroomNotExists() { void getPriorityListAndCheckRecord() { // given // 유저 정보 생성 - Member matchingMember = createMatchingMember("matchinguser@gmail.com", "User1", "Tag1", Tier.GOLD, 2, true, - Position.ADC, Position.MID, Position.SUP, 2); + Member matchingMember = createMatchingMember("matchinguser@gmail.com", "User1", "Tag1", Tier.GOLD, 2, + Mike.AVAILABLE, Position.ADC, Position.MID, Position.SUP, 2); // dto 생성 InitializingMatchingRequest request = InitializingMatchingRequest.builder() @@ -269,7 +269,7 @@ void getPriorityListAndCheckRecord() { String tag = "TAG" + i; Tier tier = Tier.values()[random.nextInt(Tier.values().length)]; int gameRank = random.nextInt(4) + 1; - boolean hasMike = random.nextBoolean(); + Mike mike = Mike.values()[random.nextInt(Mike.values().length)]; Position mainP = Position.values()[random.nextInt(Position.values().length)]; Position subP = Position.values()[random.nextInt(Position.values().length)]; Position wantP = Position.values()[random.nextInt(Position.values().length)]; @@ -278,7 +278,7 @@ void getPriorityListAndCheckRecord() { MatchingType randomMatchingType = MatchingType.values()[random.nextInt(MatchingType.values().length)]; MatchingStatus randomMatchingStatus = MatchingStatus.PENDING; - Member targetMember = createMatchingMember(email, gameName, tag, tier, gameRank, hasMike, mainP, subP, + Member targetMember = createMatchingMember(email, gameName, tag, tier, gameRank, mike, mainP, subP, wantP, mannerLevel); createMatchingRecord(randomGameMode, randomMatchingType, targetMember, randomMatchingStatus); } @@ -349,10 +349,14 @@ private Member createMember(String email, String gameName) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } @@ -382,15 +386,29 @@ private Block blockMember(Member member, Member targetMember) { } private Member createMatchingMember(String email, String gameName, String tag, Tier tier, int gameRank, - boolean hasMike, - Position mainP, Position subP, - Position wantP, int mannerLevel) { - - Member member = Member.create(email, "password123", LoginType.GENERAL, gameName, tag, tier, gameRank, 55.0, - 100, hasMike); - member.updateMannerLevel(mannerLevel); - member.updatePosition(mainP, subP, wantP); - return memberRepository.save(member); + Mike mike, Position mainP, Position subP, Position wantP, + int mannerLevel) { + Member member1 = Member.builder() + .email(email) + .password("testPassword") + .profileImage(1) + .loginType(LoginType.GENERAL) + .gameName(gameName) + .tag(tag) + .soloTier(tier) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(tier) + .freeRank(gameRank) + .freeWinRate(0.0) + .freeGameCount(0) + .isAgree(true) + .build(); + member1.updateMike(mike); + member1.updatePosition(mainP, subP, wantP); + member1.updateMannerLevel(mannerLevel); + return memberRepository.save(member1); } private MatchingRecord createMatchingRecord(GameMode mode, MatchingType type, Member member, diff --git a/src/test/java/com/gamegoo/gamegoo_v2/integration/member/MemberServiceFacadeTest.java b/src/test/java/com/gamegoo/gamegoo_v2/integration/member/MemberServiceFacadeTest.java index c5c1c1fb..54ebe732 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/integration/member/MemberServiceFacadeTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/integration/member/MemberServiceFacadeTest.java @@ -111,9 +111,9 @@ void getProfile() { assertThat(response.getEmail()).isEqualTo(member.getEmail()); assertThat(response.getGameName()).isEqualTo(member.getGameName()); assertThat(response.getTag()).isEqualTo(member.getTag()); - assertThat(response.getTier()).isEqualTo(member.getTier()); - assertThat(response.getGameRank()).isEqualTo(member.getGameRank()); - assertThat(response.getWinrate()).isEqualTo(member.getWinRate()); + assertThat(response.getTier()).isEqualTo(member.getSoloTier()); + assertThat(response.getGameRank()).isEqualTo(member.getSoloRank()); + assertThat(response.getWinrate()).isEqualTo(member.getSoloWinRate()); assertThat(response.getMainP()).isEqualTo(member.getMainPosition()); assertThat(response.getSubP()).isEqualTo(member.getSubPosition()); assertThat(response.getWantP()).isEqualTo(member.getWantPosition()); @@ -146,8 +146,8 @@ void getOtherProfile() { assertThat(response.getMike()).isEqualTo(targetMember.getMike()); assertThat(response.getGameName()).isEqualTo(targetMember.getGameName()); assertThat(response.getTag()).isEqualTo(targetMember.getTag()); - assertThat(response.getTier()).isEqualTo(targetMember.getTier()); - assertThat(response.getGameRank()).isEqualTo(targetMember.getGameRank()); + assertThat(response.getTier()).isEqualTo(targetMember.getSoloTier()); + assertThat(response.getGameRank()).isEqualTo(targetMember.getSoloRank()); assertThat(response.getMannerLevel()).isEqualTo(targetMember.getMannerLevel()); assertThat(response.getMainP()).isEqualTo(targetMember.getMainPosition()); assertThat(response.getSubP()).isEqualTo(targetMember.getSubPosition()); @@ -155,7 +155,7 @@ void getOtherProfile() { assertThat(response.getIsAgree()).isEqualTo(targetMember.isAgree()); assertThat(response.getIsBlind()).isEqualTo(targetMember.isBlind()); assertThat(response.getLoginType()).isEqualTo(String.valueOf(targetMember.getLoginType())); - assertThat(response.getWinrate()).isEqualTo(targetMember.getWinRate()); + assertThat(response.getWinrate()).isEqualTo(targetMember.getSoloWinRate()); assertThat(response.getChampionResponseList()).isNotNull(); List championList = @@ -322,10 +322,14 @@ private Member createMember(String email, String gameName) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/integration/notification/NotificationFacadeServiceTest.java b/src/test/java/com/gamegoo/gamegoo_v2/integration/notification/NotificationFacadeServiceTest.java index 580e4c5a..90c40dba 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/integration/notification/NotificationFacadeServiceTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/integration/notification/NotificationFacadeServiceTest.java @@ -237,10 +237,14 @@ private Member createMember(String email, String gameName) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/integration/report/ReportFacadeServiceTest.java b/src/test/java/com/gamegoo/gamegoo_v2/integration/report/ReportFacadeServiceTest.java index 23b0fb9a..b535be28 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/integration/report/ReportFacadeServiceTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/integration/report/ReportFacadeServiceTest.java @@ -286,10 +286,14 @@ private Member createMember(String email, String gameName) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/repository/RepositoryTestSupport.java b/src/test/java/com/gamegoo/gamegoo_v2/repository/RepositoryTestSupport.java index d138f0c6..13d0d1a2 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/repository/RepositoryTestSupport.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/repository/RepositoryTestSupport.java @@ -35,10 +35,14 @@ protected Member createMember(String email, String gameName) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/service/batch/BatchServiceTest.java b/src/test/java/com/gamegoo/gamegoo_v2/service/batch/BatchServiceTest.java index 6d2459ba..270c9d7f 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/service/batch/BatchServiceTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/service/batch/BatchServiceTest.java @@ -150,10 +150,14 @@ private Member createMember(String email, String gameName) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/service/chat/ChatCommandServiceTest.java b/src/test/java/com/gamegoo/gamegoo_v2/service/chat/ChatCommandServiceTest.java index 6c480a8e..bfc51fac 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/service/chat/ChatCommandServiceTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/service/chat/ChatCommandServiceTest.java @@ -487,10 +487,14 @@ private Member createMember(String email, String gameName) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/service/friend/FriendServiceTest.java b/src/test/java/com/gamegoo/gamegoo_v2/service/friend/FriendServiceTest.java index a21b8424..9bbf503e 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/service/friend/FriendServiceTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/service/friend/FriendServiceTest.java @@ -79,10 +79,14 @@ private Member createMember(String email, String gameName) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/service/manner/MannerServiceTest.java b/src/test/java/com/gamegoo/gamegoo_v2/service/manner/MannerServiceTest.java index 44fe0dcf..314c74f0 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/service/manner/MannerServiceTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/service/manner/MannerServiceTest.java @@ -126,10 +126,14 @@ private Member createMember(String email, String gameName) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingServiceTest.java b/src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingServiceTest.java index 5899c60f..46b09991 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingServiceTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingServiceTest.java @@ -2,6 +2,7 @@ import com.gamegoo.gamegoo_v2.account.member.domain.LoginType; import com.gamegoo.gamegoo_v2.account.member.domain.Member; +import com.gamegoo.gamegoo_v2.account.member.domain.Mike; import com.gamegoo.gamegoo_v2.account.member.domain.Position; import com.gamegoo.gamegoo_v2.account.member.domain.Tier; import com.gamegoo.gamegoo_v2.account.member.repository.MemberRepository; @@ -57,8 +58,8 @@ void tearDown() { @BeforeEach void setUp() { - member = createMember("user1@gmail.com", "User1", "Tag1", Tier.GOLD, 2, true, Position.ADC, Position.MID, - Position.SUP, 2); + member = createMember("user1@gmail.com", "User1", "Tag1", Tier.GOLD, 2, Mike.AVAILABLE, Position.ADC, + Position.MID, Position.SUP, 2); } @Nested @@ -102,13 +103,13 @@ void validateMatchingPriorityListsSucceeds() { String tag = "TAG" + i; Tier tier = Tier.values()[random.nextInt(Tier.values().length)]; int gameRank = random.nextInt(4) + 1; - boolean hasMike = random.nextBoolean(); + Mike mike = Mike.values()[random.nextInt(Mike.values().length)]; Position mainP = Position.values()[random.nextInt(Position.values().length)]; Position subP = Position.values()[random.nextInt(Position.values().length)]; Position wantP = Position.values()[random.nextInt(Position.values().length)]; int mannerLevel = random.nextInt(4) + 1; - Member targetMember = createMember(email, gameName, tag, tier, gameRank, hasMike, mainP, subP, wantP, + Member targetMember = createMember(email, gameName, tag, tier, gameRank, mike, mainP, subP, wantP, mannerLevel); MatchingRecord targetMatchingRecord = createMatchingRecord(GameMode.SOLO, MatchingType.BASIC, targetMember, MatchingStatus.PENDING); @@ -163,7 +164,7 @@ void getMatchingPrioritySucceedsWhenSoloGameMode() { // given MatchingRecord myMatchingRecord = createMatchingRecord(GameMode.SOLO, MatchingType.BASIC, member, MatchingStatus.PENDING); - Member targetMember = createMember("target@gmail.com", "target", "tag", Tier.SILVER, 1, true, + Member targetMember = createMember("target@gmail.com", "target", "tag", Tier.SILVER, 1, Mike.AVAILABLE, Position.SUP, Position.TOP, Position.ADC, 3); MatchingRecord targetMatchingRecord = createMatchingRecord(GameMode.SOLO, MatchingType.BASIC, targetMember, MatchingStatus.PENDING); @@ -184,7 +185,7 @@ void getMatchingPrioritySucceedsWhenFreeGameMode() { // given MatchingRecord myMatchingRecord = createMatchingRecord(GameMode.FREE, MatchingType.BASIC, member, MatchingStatus.PENDING); - Member targetMember = createMember("target@gmail.com", "target", "tag", Tier.SILVER, 1, true, + Member targetMember = createMember("target@gmail.com", "target", "tag", Tier.SILVER, 1, Mike.AVAILABLE, Position.SUP, Position.TOP, Position.ADC, 3); MatchingRecord targetMatchingRecord = createMatchingRecord(GameMode.FREE, MatchingType.BASIC, targetMember, MatchingStatus.PENDING); @@ -206,7 +207,7 @@ void getMatchingPrioritySucceedsWhenAramGameMode() { // given MatchingRecord myMatchingRecord = createMatchingRecord(GameMode.ARAM, MatchingType.BASIC, member, MatchingStatus.PENDING); - Member targetMember = createMember("target@gmail.com", "target", "tag", Tier.SILVER, 1, true, + Member targetMember = createMember("target@gmail.com", "target", "tag", Tier.SILVER, 1, Mike.AVAILABLE, Position.ANY, Position.ANY, Position.ANY, 3); MatchingRecord targetMatchingRecord = createMatchingRecord(GameMode.ARAM, MatchingType.BASIC, targetMember, MatchingStatus.PENDING); @@ -227,7 +228,7 @@ void getMatchingPrioritySucceedsWhenFastGameMode() { // given MatchingRecord myMatchingRecord = createMatchingRecord(GameMode.FAST, MatchingType.BASIC, member, MatchingStatus.PENDING); - Member targetMember = createMember("target@gmail.com", "target", "tag", Tier.SILVER, 1, true, + Member targetMember = createMember("target@gmail.com", "target", "tag", Tier.SILVER, 1, Mike.AVAILABLE, Position.SUP, Position.TOP, Position.ADC, 3); MatchingRecord targetMatchingRecord = createMatchingRecord(GameMode.FAST, MatchingType.BASIC, targetMember, MatchingStatus.PENDING); @@ -248,7 +249,7 @@ void getMatchingPrioritySucceedsWhenPreciseMatchingType() { // given MatchingRecord myMatchingRecord = createMatchingRecord(GameMode.FAST, MatchingType.PRECISE, member, MatchingStatus.PENDING); - Member targetMember = createMember("target@gmail.com", "target", "tag", Tier.SILVER, 1, true, + Member targetMember = createMember("target@gmail.com", "target", "tag", Tier.SILVER, 1, Mike.AVAILABLE, Position.SUP, Position.TOP, Position.ADC, 3); MatchingRecord targetMatchingRecord = createMatchingRecord(GameMode.FAST, MatchingType.PRECISE, targetMember, MatchingStatus.PENDING); @@ -283,7 +284,7 @@ void getPendingMatchingRecordLists() { String tag = "TAG" + i; Tier tier = Tier.values()[random.nextInt(Tier.values().length)]; int gameRank = random.nextInt(4) + 1; - boolean hasMike = random.nextBoolean(); + Mike mike = Mike.values()[random.nextInt(Mike.values().length)]; Position mainP = Position.values()[random.nextInt(Position.values().length)]; Position subP = Position.values()[random.nextInt(Position.values().length)]; Position wantP = Position.values()[random.nextInt(Position.values().length)]; @@ -292,7 +293,7 @@ void getPendingMatchingRecordLists() { MatchingType randomMatchingType = MatchingType.values()[random.nextInt(MatchingType.values().length)]; MatchingStatus randomMatchingStatus = MatchingStatus.PENDING; - Member targetMember = createMember(email, gameName, tag, tier, gameRank, hasMike, mainP, subP, wantP, + Member targetMember = createMember(email, gameName, tag, tier, gameRank, mike, mainP, subP, wantP, mannerLevel); MatchingRecord targetMatchingRecord = createMatchingRecord(randomGameMode, randomMatchingType, targetMember, randomMatchingStatus); @@ -323,13 +324,12 @@ void createMatchingRecord() { assertThat(matchingRecord.getMember()).isEqualTo(member); } - private Member createMember(String email, String gameName, String tag, Tier tier, int gameRank, boolean hasMike, - Position mainP, Position subP, - Position wantP, int mannerLevel) { - + private Member createMember(String email, String gameName, String tag, Tier tier, int gameRank, Mike mike, + Position mainP, Position subP, Position wantP, int mannerLevel) { Member member = Member.create(email, "password123", LoginType.GENERAL, gameName, tag, tier, gameRank, 55.0, - 100, hasMike); + tier, gameRank, 55.0, 100, 100, true); member.updateMannerLevel(mannerLevel); + member.updateMike(mike); member.updatePosition(mainP, subP, wantP); return memberRepository.save(member); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingStrategyProcessorTest.java b/src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingStrategyProcessorTest.java index 81eee3f2..4f2a785c 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingStrategyProcessorTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingStrategyProcessorTest.java @@ -5,11 +5,13 @@ import com.gamegoo.gamegoo_v2.account.member.domain.Tier; import com.gamegoo.gamegoo_v2.account.member.domain.Member; import com.gamegoo.gamegoo_v2.account.member.domain.LoginType; +import com.gamegoo.gamegoo_v2.account.member.repository.MemberRepository; import com.gamegoo.gamegoo_v2.matching.domain.GameMode; import com.gamegoo.gamegoo_v2.matching.domain.MatchingRecord; import com.gamegoo.gamegoo_v2.matching.domain.MatchingType; import com.gamegoo.gamegoo_v2.matching.service.MatchingScoreCalculator; import com.gamegoo.gamegoo_v2.matching.service.MatchingStrategyProcessor; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -26,6 +28,14 @@ class MatchingStrategyProcessorTest { @Autowired MatchingStrategyProcessor matchingStrategyProcessor; + @Autowired + MemberRepository memberRepository; + + @AfterEach + void tearDown() { + memberRepository.deleteAll(); + } + @Test @DisplayName("정밀 매칭 우선순위 계산") void testCalculatePrecisePriority() { @@ -75,8 +85,8 @@ void testCalculateSoloPriorityWithStateChanges() { // then int expectedPriority = 16 - (Math.abs(record1.getMannerLevel() - record2.getMannerLevel()) * 4) + - (40 - Math.abs(record1.getSoloTier().ordinal() * 4 + record1.getSoloRank() - - record2.getSoloTier().ordinal() * 4 - record2.getSoloRank())) + + (40 - Math.abs(record1.getTier().ordinal() * 4 + record1.getGameRank() - + record2.getTier().ordinal() * 4 - record2.getGameRank())) + (record1.getMike().equals(record2.getMike()) ? 5 : 0) + getPositionExpectedPriority(member1, member2); assertThat(result).isEqualTo(expectedPriority); @@ -110,8 +120,8 @@ void testCalculateFreePriority() { // then int expectedPriority = 16 - (Math.abs(record1.getMannerLevel() - record2.getMannerLevel()) * 4) + - (40 - Math.abs(record1.getFreeTier().ordinal() * 4 + record1.getFreeRank() - - record2.getFreeTier().ordinal() * 4 - record2.getFreeRank())) + + (40 - Math.abs(record1.getTier().ordinal() * 4 + record1.getGameRank() - + record2.getTier().ordinal() * 4 - record2.getGameRank())) + (record1.getMike().equals(record2.getMike()) ? 3 : 0) + getPositionExpectedPriority(member1, member2); assertThat(result).isEqualTo(expectedPriority); @@ -144,8 +154,8 @@ void testCalculateFastPriority() { // then int expectedPriority = 16 - (Math.abs(record1.getMannerLevel() - record2.getMannerLevel()) * 4) + - (40 - Math.abs(record1.getFreeTier().ordinal() * 4 + record1.getFreeRank() - - record2.getFreeTier().ordinal() * 4 - record2.getFreeRank())) + + (40 - Math.abs(record1.getTier().ordinal() * 4 + record1.getGameRank() - + record2.getTier().ordinal() * 4 - record2.getGameRank())) + (record1.getMike().equals(record2.getMike()) ? 3 : 0) + getPositionExpectedPriority(member1, member2); assertThat(result).isEqualTo(expectedPriority); @@ -252,8 +262,17 @@ void testValidatePreciseMatching_Fail_Mike() { } private Member createMember(String email, Tier tier, boolean hasMike) { - return Member.create(email, "password123", LoginType.GENERAL, "gameUser", "TAG", - tier, 4, 55.0, 100, hasMike); + Member member = Member.create(email, "password123", LoginType.GENERAL, "gameUser", "TAG", + tier, 4, 55.0, tier, 4, 55.0, 100, 100, true); + + if (hasMike) { + member.updateMike(Mike.AVAILABLE); + } else { + member.updateMike(Mike.UNAVAILABLE); + } + + return memberRepository.save(member); + } private MatchingRecord createMatchingRecord(GameMode mode, MatchingType type, Member member) { diff --git a/src/test/java/com/gamegoo/gamegoo_v2/service/notification/NotificationServiceTest.java b/src/test/java/com/gamegoo/gamegoo_v2/service/notification/NotificationServiceTest.java index 7d705376..940dfe74 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/service/notification/NotificationServiceTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/service/notification/NotificationServiceTest.java @@ -225,10 +225,14 @@ private Member createMember(String email, String gameName) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) + .freeTier(Tier.IRON) + .freeRank(0) + .freeWinRate(0.0) + .freeGameCount(0) .isAgree(true) .build()); } diff --git a/src/test/java/com/gamegoo/gamegoo_v2/unit/factory/ChatResponseFactoryTest.java b/src/test/java/com/gamegoo/gamegoo_v2/unit/factory/ChatResponseFactoryTest.java index 036838cc..c2d54106 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/unit/factory/ChatResponseFactoryTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/unit/factory/ChatResponseFactoryTest.java @@ -223,10 +223,10 @@ private Member createMember(String email, String gameName) { .loginType(LoginType.GENERAL) .gameName(gameName) .tag("TAG") - .tier(Tier.IRON) - .gameRank(0) - .winRate(0.0) - .gameCount(0) + .soloTier(Tier.IRON) + .soloRank(0) + .soloWinRate(0.0) + .soloGameCount(0) .isAgree(true) .build(); } From 2007a4e5e2fe9ac307fb1b772da686adbbf4ddae Mon Sep 17 00:00:00 2001 From: Rimi Date: Thu, 6 Feb 2025 01:15:11 +0900 Subject: [PATCH 2/2] =?UTF-8?q?:bug:=20[Fix]=20Test=20=EC=9C=84=EC=B9=98?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20Member=20=EC=97=94=ED=8B=B0?= =?UTF-8?q?=ED=8B=B0=20=EC=84=A4=EC=A0=95=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gamegoo/gamegoo_v2/account/member/domain/Member.java | 2 +- .../{service/matching => unit}/MatchingScoreCalculatorTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename src/test/java/com/gamegoo/gamegoo_v2/{service/matching => unit}/MatchingScoreCalculatorTest.java (98%) diff --git a/src/main/java/com/gamegoo/gamegoo_v2/account/member/domain/Member.java b/src/main/java/com/gamegoo/gamegoo_v2/account/member/domain/Member.java index 8da313f0..0f8505de 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/account/member/domain/Member.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/account/member/domain/Member.java @@ -71,7 +71,7 @@ public class Member extends BaseDateTimeEntity { private double soloWinRate = 0.0; @Enumerated(EnumType.STRING) - @Column(nullable = false) + @Column(nullable = false, columnDefinition = "VARCHAR(50)") private Tier freeTier = Tier.UNRANKED; @Column(nullable = false) diff --git a/src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingScoreCalculatorTest.java b/src/test/java/com/gamegoo/gamegoo_v2/unit/MatchingScoreCalculatorTest.java similarity index 98% rename from src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingScoreCalculatorTest.java rename to src/test/java/com/gamegoo/gamegoo_v2/unit/MatchingScoreCalculatorTest.java index 14d9acbe..cb52542a 100644 --- a/src/test/java/com/gamegoo/gamegoo_v2/service/matching/MatchingScoreCalculatorTest.java +++ b/src/test/java/com/gamegoo/gamegoo_v2/unit/MatchingScoreCalculatorTest.java @@ -1,4 +1,4 @@ -package com.gamegoo.gamegoo_v2.service.matching; +package com.gamegoo.gamegoo_v2.unit; import com.gamegoo.gamegoo_v2.account.member.domain.Position; import com.gamegoo.gamegoo_v2.account.member.domain.Tier;