diff --git a/src/main/java/com/yello/server/domain/friend/service/FriendService.java b/src/main/java/com/yello/server/domain/friend/service/FriendService.java index 9bcf881a..49e595cb 100644 --- a/src/main/java/com/yello/server/domain/friend/service/FriendService.java +++ b/src/main/java/com/yello/server/domain/friend/service/FriendService.java @@ -1,8 +1,6 @@ package com.yello.server.domain.friend.service; import static com.yello.server.global.common.ErrorCode.EXIST_FRIEND_EXCEPTION; -import static com.yello.server.global.common.ErrorCode.LACK_USER_EXCEPTION; -import static com.yello.server.global.common.util.ConstantUtil.RANDOM_COUNT; import static com.yello.server.global.common.util.ConstantUtil.YELLO_FEMALE; import static com.yello.server.global.common.util.ConstantUtil.YELLO_MALE; @@ -20,6 +18,7 @@ import com.yello.server.domain.user.entity.User; import com.yello.server.domain.user.repository.UserRepository; import com.yello.server.domain.vote.repository.VoteRepository; +import com.yello.server.domain.vote.service.VoteManager; import com.yello.server.global.common.factory.PaginationFactory; import java.lang.Character.UnicodeBlock; import java.util.ArrayList; @@ -43,6 +42,7 @@ public class FriendService { private final FriendRepository friendRepository; private final UserRepository userRepository; private final VoteRepository voteRepository; + private final VoteManager voteManager; public FriendsResponse findAllFriends(Pageable pageable, Long userId) { final Page friendsData = friendRepository.findAllFriendsByUserId(pageable, userId); @@ -77,20 +77,7 @@ public Friend addFriend(Long userId, Long targetId) { public List findShuffledFriend(Long userId) { final User user = userRepository.getById(userId); - final List friends = - new ArrayList<>(friendRepository.findAllByUserId(user.getId())); - List friendList = new ArrayList<>(friends); - - if (friendList.size() < RANDOM_COUNT) { - throw new FriendException(LACK_USER_EXCEPTION); - } - - Collections.shuffle(friendList); - - return friendList.stream() - .map(FriendShuffleResponse::of) - .limit(RANDOM_COUNT) - .toList(); + return voteManager.getShuffledFriends(user); } public RecommendFriendResponse findAllRecommendSchoolFriends(Pageable pageable, Long userId) { diff --git a/src/main/java/com/yello/server/domain/vote/dto/response/VoteAvailableResponse.java b/src/main/java/com/yello/server/domain/vote/dto/response/VoteAvailableResponse.java index 9f7ecaef..440e0f5d 100644 --- a/src/main/java/com/yello/server/domain/vote/dto/response/VoteAvailableResponse.java +++ b/src/main/java/com/yello/server/domain/vote/dto/response/VoteAvailableResponse.java @@ -13,14 +13,16 @@ public record VoteAvailableResponse( Boolean isPossible, Integer point, - String createdAt + String createdAt, + Integer friendStatus ) { - public static VoteAvailableResponse of(User user, Cooldown cooldown) { + public static VoteAvailableResponse of(User user, Cooldown cooldown, Integer friendStatus) { return VoteAvailableResponse.builder() .isPossible(cooldown.isPossible()) .point(user.getPoint()) .createdAt(toDateFormattedString(cooldown.getCreatedAt())) + .friendStatus(friendStatus) .build(); } diff --git a/src/main/java/com/yello/server/domain/vote/service/VoteManager.java b/src/main/java/com/yello/server/domain/vote/service/VoteManager.java index 97566820..39a8a2ef 100644 --- a/src/main/java/com/yello/server/domain/vote/service/VoteManager.java +++ b/src/main/java/com/yello/server/domain/vote/service/VoteManager.java @@ -1,5 +1,6 @@ package com.yello.server.domain.vote.service; +import com.yello.server.domain.friend.dto.response.FriendShuffleResponse; import com.yello.server.domain.keyword.dto.response.KeywordCheckResponse; import com.yello.server.domain.question.dto.response.QuestionForVoteResponse; import com.yello.server.domain.question.entity.Question; @@ -19,4 +20,7 @@ public interface VoteManager { KeywordCheckResponse useKeywordHint(User user, Vote vote); void makeGreetingVote(User user); + + List getShuffledFriends(User user); + } diff --git a/src/main/java/com/yello/server/domain/vote/service/VoteManagerImpl.java b/src/main/java/com/yello/server/domain/vote/service/VoteManagerImpl.java index d524b1a0..ab6c4978 100644 --- a/src/main/java/com/yello/server/domain/vote/service/VoteManagerImpl.java +++ b/src/main/java/com/yello/server/domain/vote/service/VoteManagerImpl.java @@ -3,10 +3,12 @@ import static com.yello.server.global.common.ErrorCode.DUPLICATE_VOTE_EXCEPTION; import static com.yello.server.global.common.ErrorCode.INVALID_VOTE_EXCEPTION; import static com.yello.server.global.common.ErrorCode.LACK_POINT_EXCEPTION; +import static com.yello.server.global.common.ErrorCode.LACK_USER_EXCEPTION; import static com.yello.server.global.common.factory.WeightedRandomFactory.randomPoint; import static com.yello.server.global.common.util.ConstantUtil.KEYWORD_HINT_POINT; import static com.yello.server.global.common.util.ConstantUtil.NAME_HINT_DEFAULT; import static com.yello.server.global.common.util.ConstantUtil.NAME_HINT_POINT; +import static com.yello.server.global.common.util.ConstantUtil.NO_FRIEND_COUNT; import static com.yello.server.global.common.util.ConstantUtil.RANDOM_COUNT; import static com.yello.server.global.common.util.ConstantUtil.VOTE_COUNT; import static com.yello.server.global.common.util.ConstantUtil.YELLO_FEMALE; @@ -14,6 +16,7 @@ import com.yello.server.domain.friend.dto.response.FriendShuffleResponse; import com.yello.server.domain.friend.entity.Friend; +import com.yello.server.domain.friend.exception.FriendException; import com.yello.server.domain.friend.repository.FriendRepository; import com.yello.server.domain.keyword.dto.response.KeywordCheckResponse; import com.yello.server.domain.keyword.entity.Keyword; @@ -107,11 +110,11 @@ public List generateVoteQuestion(User user, List voteAnswers) { - return index > 0 && voteAnswers.get(index - 1).questionId() - .equals(voteAnswers.get(index).questionId()); - } - - private List getShuffledFriends(User user) { + @Override + public List getShuffledFriends(User user) { List uuidList = Arrays.asList(YELLO_FEMALE, YELLO_MALE); final List friends = friendRepository.findAllByUserIdNotIn(user.getId(), uuidList); List friendList = new ArrayList<>(friends); Collections.shuffle(friendList); + if (friends.size()==NO_FRIEND_COUNT) { + throw new FriendException(LACK_USER_EXCEPTION); + } + + if (friends.size() > NO_FRIEND_COUNT && friends.size() < RANDOM_COUNT) { + return friendList.stream() + .map(FriendShuffleResponse::of) + .toList(); + } + return friendList.stream() .map(FriendShuffleResponse::of) .limit(RANDOM_COUNT) .toList(); } + private boolean isDuplicatedVote(int index, List voteAnswers) { + return index > 0 && voteAnswers.get(index - 1).questionId() + .equals(voteAnswers.get(index).questionId()); + } + private List getShuffledKeywords(Question question) { final List keywords = question.getKeywordList(); List keywordList = new ArrayList<>(keywords); diff --git a/src/main/java/com/yello/server/domain/vote/service/VoteService.java b/src/main/java/com/yello/server/domain/vote/service/VoteService.java index 09f79756..8ba3c12c 100644 --- a/src/main/java/com/yello/server/domain/vote/service/VoteService.java +++ b/src/main/java/com/yello/server/domain/vote/service/VoteService.java @@ -9,6 +9,7 @@ import static com.yello.server.global.common.util.ConstantUtil.CHECK_FULL_NAME; import static com.yello.server.global.common.util.ConstantUtil.COOL_DOWN_TIME; import static com.yello.server.global.common.util.ConstantUtil.MINUS_TICKET_COUNT; +import static com.yello.server.global.common.util.ConstantUtil.NO_FRIEND_COUNT; import static com.yello.server.global.common.util.ConstantUtil.RANDOM_COUNT; import com.yello.server.domain.cooldown.entity.Cooldown; @@ -122,7 +123,7 @@ public List findVoteQuestionList(Long userId) { final User user = userRepository.getById(userId); final List friends = friendRepository.findAllByUserId(user.getId()); - if (friends.size() < RANDOM_COUNT) { + if (friends.size()==NO_FRIEND_COUNT) { throw new FriendException(LACK_USER_EXCEPTION); } @@ -144,14 +145,18 @@ public VoteAvailableResponse checkVoteAvailable(Long userId) { final String messageId = UUID.randomUUID().toString(); final List friends = friendRepository.findAllByUserId(user.getId()); - if (friends.size() < RANDOM_COUNT) { + if (friends.size()==NO_FRIEND_COUNT) { throw new FriendException(LACK_USER_EXCEPTION); } final Cooldown cooldown = cooldownRepository.findByUserId(user.getId()) .orElse(Cooldown.of(user, messageId, minusTime(LocalDateTime.now(), COOL_DOWN_TIME))); - return VoteAvailableResponse.of(user, cooldown); + if (friends.size() > NO_FRIEND_COUNT && friends.size() < RANDOM_COUNT) { + return VoteAvailableResponse.of(user, cooldown, 0); + } + + return VoteAvailableResponse.of(user, cooldown, 1); } @Transactional diff --git a/src/main/java/com/yello/server/global/common/ErrorCode.java b/src/main/java/com/yello/server/global/common/ErrorCode.java index de645c5b..f60c887c 100644 --- a/src/main/java/com/yello/server/global/common/ErrorCode.java +++ b/src/main/java/com/yello/server/global/common/ErrorCode.java @@ -22,7 +22,7 @@ public enum ErrorCode { REQUEST_VALIDATION_EXCEPTION(BAD_REQUEST, "잘못된 요청입니다."), YELLOID_REQUIRED_EXCEPTION(BAD_REQUEST, "쿼리 스트링에 yelloId를 포함해야 합니다."), OAUTH_ACCESS_TOKEN_REQUIRED_EXCEPTION(BAD_REQUEST, "소셜 액세스 토큰이 없습니다."), - LACK_USER_EXCEPTION(BAD_REQUEST, "친구가 4명 이하입니다."), + LACK_USER_EXCEPTION(BAD_REQUEST, "친구가 부족합니다."), SIGNIN_FIELD_REQUIRED_EXCEPTION(BAD_REQUEST, "회원가입에 필요한 값이 없습니다."), FIELD_REQUIRED_EXCEPTION(BAD_REQUEST, "필요한 값이 없습니다."), INVALID_VOTE_EXCEPTION(BAD_REQUEST, "이미 공개한 투표입니다"), diff --git a/src/main/java/com/yello/server/global/common/util/ConstantUtil.java b/src/main/java/com/yello/server/global/common/util/ConstantUtil.java index 6c330fbd..f4ca3b48 100644 --- a/src/main/java/com/yello/server/global/common/util/ConstantUtil.java +++ b/src/main/java/com/yello/server/global/common/util/ConstantUtil.java @@ -57,6 +57,7 @@ public class ConstantUtil { public static final int REFUND_ONE_TICKET = 1; public static final int REFUND_TWO_TICKET = 2; public static final int REFUND_FIVE_TICKET = 5; + public static final int NO_FRIEND_COUNT = 0; private ConstantUtil() { diff --git a/src/test/java/com/yello/server/domain/friend/small/FriendServiceTest.java b/src/test/java/com/yello/server/domain/friend/small/FriendServiceTest.java index 3378e964..235e82bd 100644 --- a/src/test/java/com/yello/server/domain/friend/small/FriendServiceTest.java +++ b/src/test/java/com/yello/server/domain/friend/small/FriendServiceTest.java @@ -18,12 +18,16 @@ import com.yello.server.domain.friend.service.FriendService; import com.yello.server.domain.question.FakeQuestionRepository; import com.yello.server.domain.question.repository.QuestionRepository; +import com.yello.server.domain.user.FakeUserManager; import com.yello.server.domain.user.FakeUserRepository; import com.yello.server.domain.user.entity.User; import com.yello.server.domain.user.exception.UserNotFoundException; import com.yello.server.domain.user.repository.UserRepository; +import com.yello.server.domain.user.service.UserManager; +import com.yello.server.domain.vote.FakeVoteManager; import com.yello.server.domain.vote.FakeVoteRepository; import com.yello.server.domain.vote.repository.VoteRepository; +import com.yello.server.domain.vote.service.VoteManager; import com.yello.server.util.TestDataRepositoryUtil; import java.util.List; import java.util.Optional; @@ -42,6 +46,10 @@ class FriendServiceTest { private final FriendRepository friendRepository = new FakeFriendRepository(); private final VoteRepository voteRepository = new FakeVoteRepository(); private final QuestionRepository questionRepository = new FakeQuestionRepository(); + private final UserManager userManager = new FakeUserManager(userRepository); + private final VoteManager voteManager = + new FakeVoteManager(userRepository, questionRepository, voteRepository, friendRepository, + userManager); private final TestDataRepositoryUtil testDataUtil = new TestDataRepositoryUtil( userRepository, voteRepository, @@ -62,6 +70,7 @@ void init() { .userRepository(userRepository) .friendRepository(friendRepository) .voteRepository(voteRepository) + .voteManager(voteManager) .build(); user1 = testDataUtil.generateUser(1L, 1L); @@ -163,13 +172,13 @@ void init() { @Test void 친구_셔플_시_친구_수가_부족한_경우에_FriendException이_발생합니다() { // given - final Long userId = 1L; + final Long userId = 3L; // when // then assertThatThrownBy(() -> friendService.findShuffledFriend(userId)) .isInstanceOf(FriendException.class) - .hasMessageContaining("[FriendException] 친구가 4명 이하입니다."); + .hasMessageContaining("[FriendException] 친구가 부족합니다."); } @Test diff --git a/src/test/java/com/yello/server/domain/vote/FakeVoteManager.java b/src/test/java/com/yello/server/domain/vote/FakeVoteManager.java index deadc264..e57e425c 100644 --- a/src/test/java/com/yello/server/domain/vote/FakeVoteManager.java +++ b/src/test/java/com/yello/server/domain/vote/FakeVoteManager.java @@ -3,15 +3,18 @@ import static com.yello.server.global.common.ErrorCode.DUPLICATE_VOTE_EXCEPTION; import static com.yello.server.global.common.ErrorCode.INVALID_VOTE_EXCEPTION; import static com.yello.server.global.common.ErrorCode.LACK_POINT_EXCEPTION; +import static com.yello.server.global.common.ErrorCode.LACK_USER_EXCEPTION; import static com.yello.server.global.common.factory.WeightedRandomFactory.randomPoint; import static com.yello.server.global.common.util.ConstantUtil.KEYWORD_HINT_POINT; import static com.yello.server.global.common.util.ConstantUtil.NAME_HINT_DEFAULT; import static com.yello.server.global.common.util.ConstantUtil.NAME_HINT_POINT; +import static com.yello.server.global.common.util.ConstantUtil.NO_FRIEND_COUNT; import static com.yello.server.global.common.util.ConstantUtil.RANDOM_COUNT; import static com.yello.server.global.common.util.ConstantUtil.VOTE_COUNT; import com.yello.server.domain.friend.dto.response.FriendShuffleResponse; import com.yello.server.domain.friend.entity.Friend; +import com.yello.server.domain.friend.exception.FriendException; import com.yello.server.domain.friend.repository.FriendRepository; import com.yello.server.domain.keyword.dto.response.KeywordCheckResponse; import com.yello.server.domain.keyword.entity.Keyword; @@ -163,11 +166,22 @@ private boolean isDuplicatedVote(int index, List voteAnswers) { .equals(voteAnswers.get(index).questionId()); } - private List getShuffledFriends(User user) { + @Override + public List getShuffledFriends(User user) { final List friends = friendRepository.findAllByUserId(user.getId()); List friendList = new ArrayList<>(friends); Collections.shuffle(friendList); + if (friends.size()==NO_FRIEND_COUNT) { + throw new FriendException(LACK_USER_EXCEPTION); + } + + if (friends.size() > NO_FRIEND_COUNT && friends.size() < RANDOM_COUNT) { + return friendList.stream() + .map(FriendShuffleResponse::of) + .toList(); + } + return friendList.stream() .map(FriendShuffleResponse::of) .limit(RANDOM_COUNT) diff --git a/src/test/java/com/yello/server/domain/vote/medium/VoteControllerTest.java b/src/test/java/com/yello/server/domain/vote/medium/VoteControllerTest.java index da193725..7d2f2ffb 100644 --- a/src/test/java/com/yello/server/domain/vote/medium/VoteControllerTest.java +++ b/src/test/java/com/yello/server/domain/vote/medium/VoteControllerTest.java @@ -83,8 +83,9 @@ class VoteControllerTest { final String[] excludeRequestHeaders = {"X-CSRF-TOKEN", "Host"}; - final String[] excludeResponseHeaders = {"X-Content-Type-Options", "X-XSS-Protection", "Cache-Control", "Pragma", - "Expires", "X-Frame-Options", "Content-Length"}; + final String[] excludeResponseHeaders = + {"X-Content-Type-Options", "X-XSS-Protection", "Cache-Control", "Pragma", + "Expires", "X-Frame-Options", "Content-Length"}; @Autowired private MockMvc mockMvc; @@ -111,10 +112,12 @@ void init() { @Test void 내_투표_전체_조회에_성공합니다() throws Exception { // given - final Vote vote = testDataUtil.generateVote(1L, user, target, testDataUtil.generateQuestion(1L)); + final Vote vote = + testDataUtil.generateVote(1L, user, target, testDataUtil.generateQuestion(1L)); final VoteResponse voteResponse = VoteResponse.of(vote); final VoteCountVO voteCountVO = VoteCountVO.of(1, 0, 0, 0, 0); - final VoteListResponse voteListResponse = VoteListResponse.of(voteCountVO, Arrays.asList(voteResponse), user); + final VoteListResponse voteListResponse = + VoteListResponse.of(voteCountVO, Arrays.asList(voteResponse), user); given(voteService.findAllVotes(anyLong(), any(Pageable.class))) .willReturn(voteListResponse); @@ -126,8 +129,10 @@ void init() { .param("page", "0")) .andDo(print()) .andDo(document("api/v1/vote/findAllMyVotes", - Preprocessors.preprocessRequest(prettyPrint(), removeHeaders(excludeRequestHeaders)), - Preprocessors.preprocessResponse(prettyPrint(), removeHeaders(excludeResponseHeaders)), + Preprocessors.preprocessRequest(prettyPrint(), + removeHeaders(excludeRequestHeaders)), + Preprocessors.preprocessResponse(prettyPrint(), + removeHeaders(excludeResponseHeaders)), requestParameters(parameterWithName("page").description("페이지네이션 페이지 번호"))) ) .andExpect(MockMvcResultMatchers.status().isOk()); @@ -148,8 +153,10 @@ void init() { ) .andDo(print()) .andDo(document("api/v1/vote/getUnreadVoteCount", - Preprocessors.preprocessRequest(prettyPrint(), removeHeaders(excludeRequestHeaders)), - Preprocessors.preprocessResponse(prettyPrint(), removeHeaders(excludeResponseHeaders))) + Preprocessors.preprocessRequest(prettyPrint(), + removeHeaders(excludeRequestHeaders)), + Preprocessors.preprocessResponse(prettyPrint(), + removeHeaders(excludeResponseHeaders))) ) .andExpect(MockMvcResultMatchers.status().isOk()); } @@ -157,9 +164,11 @@ void init() { @Test void 친구_투표_조회에_성공합니다() throws Exception { // given - final Vote vote = testDataUtil.generateVote(1L, user, target, testDataUtil.generateQuestion(1L)); + final Vote vote = + testDataUtil.generateVote(1L, user, target, testDataUtil.generateQuestion(1L)); final VoteFriendVO voteFriendVO = VoteFriendVO.of(vote); - final VoteFriendResponse voteFriendResponse = VoteFriendResponse.of(1, Arrays.asList(voteFriendVO)); + final VoteFriendResponse voteFriendResponse = + VoteFriendResponse.of(1, Arrays.asList(voteFriendVO)); given(voteService.findAllFriendVotes(anyLong(), any(Pageable.class))) .willReturn(voteFriendResponse); @@ -171,8 +180,10 @@ void init() { .param("page", "0")) .andDo(print()) .andDo(document("api/v1/vote/findAllFriendVotes", - Preprocessors.preprocessRequest(prettyPrint(), removeHeaders(excludeRequestHeaders)), - Preprocessors.preprocessResponse(prettyPrint(), removeHeaders(excludeResponseHeaders)), + Preprocessors.preprocessRequest(prettyPrint(), + removeHeaders(excludeRequestHeaders)), + Preprocessors.preprocessResponse(prettyPrint(), + removeHeaders(excludeResponseHeaders)), requestParameters(parameterWithName("page").description("페이지네이션 페이지 번호"))) ) .andExpect(MockMvcResultMatchers.status().isOk()); @@ -181,7 +192,8 @@ void init() { @Test void 투표_상세_조회에_성공합니다() throws Exception { // given - final Vote vote = testDataUtil.generateVote(1L, user, target, testDataUtil.generateQuestion(1L)); + final Vote vote = + testDataUtil.generateVote(1L, user, target, testDataUtil.generateQuestion(1L)); final VoteDetailResponse voteDetailResponse = VoteDetailResponse.of(vote, user); given(voteService.findVoteById(anyLong(), anyLong())) @@ -194,8 +206,10 @@ void init() { ) .andDo(print()) .andDo(document("api/v1/vote/findVoteById", - Preprocessors.preprocessRequest(prettyPrint(), removeHeaders(excludeRequestHeaders)), - Preprocessors.preprocessResponse(prettyPrint(), removeHeaders(excludeResponseHeaders)), + Preprocessors.preprocessRequest(prettyPrint(), + removeHeaders(excludeRequestHeaders)), + Preprocessors.preprocessResponse(prettyPrint(), + removeHeaders(excludeResponseHeaders)), pathParameters(parameterWithName("voteId").description("투표 아이디 값"))) ) .andExpect(MockMvcResultMatchers.status().isOk()); @@ -204,7 +218,8 @@ void init() { @Test void 키워드_확인에_성공합니다() throws Exception { // given - final Vote vote = testDataUtil.generateVote(1L, user, target, testDataUtil.generateQuestion(1L)); + final Vote vote = + testDataUtil.generateVote(1L, user, target, testDataUtil.generateQuestion(1L)); final KeywordCheckResponse keywordCheckResponse = KeywordCheckResponse.of(vote); given(voteService.checkKeyword(anyLong(), anyLong())) @@ -218,8 +233,10 @@ void init() { ) .andDo(print()) .andDo(document("api/v1/vote/checkKeyword", - Preprocessors.preprocessRequest(prettyPrint(), removeHeaders(excludeRequestHeaders)), - Preprocessors.preprocessResponse(prettyPrint(), removeHeaders(excludeResponseHeaders)), + Preprocessors.preprocessRequest(prettyPrint(), + removeHeaders(excludeRequestHeaders)), + Preprocessors.preprocessResponse(prettyPrint(), + removeHeaders(excludeResponseHeaders)), pathParameters(parameterWithName("voteId").description("투표 아이디 값"))) ) .andExpect(MockMvcResultMatchers.status().isOk()); @@ -229,7 +246,8 @@ void init() { void 투표_8개_조회에_성공합니다() throws Exception { // given final Friend friend = testDataUtil.generateFriend(user, target); - final List friendShuffleResponses = Arrays.asList(FriendShuffleResponse.of(friend)); + final List friendShuffleResponses = + Arrays.asList(FriendShuffleResponse.of(friend)); final List keywordList = Arrays.asList("A", "B", "C", "D"); final QuestionVO questionVO = QuestionVO.of(testDataUtil.generateQuestion(1L)); final QuestionForVoteResponse questionForVoteResponse = QuestionForVoteResponse.builder() @@ -250,8 +268,10 @@ void init() { ) .andDo(print()) .andDo(document("api/v1/vote/findVoteQuestions", - Preprocessors.preprocessRequest(prettyPrint(), removeHeaders(excludeRequestHeaders)), - Preprocessors.preprocessResponse(prettyPrint(), removeHeaders(excludeResponseHeaders))) + Preprocessors.preprocessRequest(prettyPrint(), + removeHeaders(excludeRequestHeaders)), + Preprocessors.preprocessResponse(prettyPrint(), + removeHeaders(excludeResponseHeaders))) ) .andExpect(MockMvcResultMatchers.status().isOk()); } @@ -259,8 +279,10 @@ void init() { @Test void 투표_가능_여부_조회에_성공합니다() throws Exception { // given - final Cooldown cooldown = Cooldown.of(user, UUID.randomUUID().toString(), LocalDateTime.now()); - final VoteAvailableResponse voteAvailableResponse = VoteAvailableResponse.of(user, cooldown); + final Cooldown cooldown = + Cooldown.of(user, UUID.randomUUID().toString(), LocalDateTime.now()); + final VoteAvailableResponse voteAvailableResponse = + VoteAvailableResponse.of(user, cooldown, 1); given(voteService.checkVoteAvailable(anyLong())) .willReturn(voteAvailableResponse); @@ -272,8 +294,10 @@ void init() { ) .andDo(print()) .andDo(document("api/v1/vote/checkVoteAvailable", - Preprocessors.preprocessRequest(prettyPrint(), removeHeaders(excludeRequestHeaders)), - Preprocessors.preprocessResponse(prettyPrint(), removeHeaders(excludeResponseHeaders))) + Preprocessors.preprocessRequest(prettyPrint(), + removeHeaders(excludeRequestHeaders)), + Preprocessors.preprocessResponse(prettyPrint(), + removeHeaders(excludeResponseHeaders))) ) .andExpect(MockMvcResultMatchers.status().isOk()); } @@ -281,7 +305,8 @@ void init() { @Test void 투표_생성에_성공합니다() throws Exception { // given - final Vote vote = testDataUtil.generateVote(1L, user, target, testDataUtil.generateQuestion(1L)); + final Vote vote = + testDataUtil.generateVote(1L, user, target, testDataUtil.generateQuestion(1L)); final VoteCreateVO voteCreateVO = VoteCreateVO.of(10, Arrays.asList(vote)); final VoteCreateResponse voteCreateResponse = VoteCreateResponse.of(10); final VoteAnswer voteAnswer = VoteAnswer.builder() @@ -312,8 +337,10 @@ void init() { .content(objectMapper.writeValueAsString(createVoteRequest))) .andDo(print()) .andDo(document("api/v1/vote/createVote", - Preprocessors.preprocessRequest(prettyPrint(), removeHeaders(excludeRequestHeaders)), - Preprocessors.preprocessResponse(prettyPrint(), removeHeaders(excludeResponseHeaders))) + Preprocessors.preprocessRequest(prettyPrint(), + removeHeaders(excludeRequestHeaders)), + Preprocessors.preprocessResponse(prettyPrint(), + removeHeaders(excludeResponseHeaders))) ) .andExpect(MockMvcResultMatchers.status().isOk()); } @@ -335,8 +362,10 @@ void init() { ) .andDo(print()) .andDo(document("api/v1/vote/revealNameHint", - Preprocessors.preprocessRequest(prettyPrint(), removeHeaders(excludeRequestHeaders)), - Preprocessors.preprocessResponse(prettyPrint(), removeHeaders(excludeResponseHeaders)), + Preprocessors.preprocessRequest(prettyPrint(), + removeHeaders(excludeRequestHeaders)), + Preprocessors.preprocessResponse(prettyPrint(), + removeHeaders(excludeResponseHeaders)), pathParameters(parameterWithName("voteId").description("투표 아이디 값"))) ) .andExpect(MockMvcResultMatchers.status().isOk()); @@ -353,14 +382,17 @@ void init() { // when // then - mockMvc.perform(RestDocumentationRequestBuilders.patch("/api/v1/vote/{voteId}/fullname", voteId) - .header(HttpHeaders.AUTHORIZATION, "Bearer your-access-token") - .with(csrf().asHeader()) + mockMvc.perform( + RestDocumentationRequestBuilders.patch("/api/v1/vote/{voteId}/fullname", voteId) + .header(HttpHeaders.AUTHORIZATION, "Bearer your-access-token") + .with(csrf().asHeader()) ) .andDo(print()) .andDo(document("api/v1/vote/revealFullName", - Preprocessors.preprocessRequest(prettyPrint(), removeHeaders(excludeRequestHeaders)), - Preprocessors.preprocessResponse(prettyPrint(), removeHeaders(excludeResponseHeaders)), + Preprocessors.preprocessRequest(prettyPrint(), + removeHeaders(excludeRequestHeaders)), + Preprocessors.preprocessResponse(prettyPrint(), + removeHeaders(excludeResponseHeaders)), pathParameters(parameterWithName("voteId").description("투표 아이디 값"))) ) .andExpect(MockMvcResultMatchers.status().isOk());