From 5a68ebd61f321bd141ed09b6077735a193c5b52c Mon Sep 17 00:00:00 2001 From: leegwichan Date: Sat, 23 Nov 2024 15:59:30 +0900 Subject: [PATCH 01/13] =?UTF-8?q?refactor:=20=ED=81=B4=EB=9E=98=EC=8A=A4?= =?UTF-8?q?=20=EC=9D=B4=EB=A6=84=EC=9D=84=20=EB=8D=94=20=EA=B5=AC=EC=B2=B4?= =?UTF-8?q?=ED=99=94=ED=95=98=EC=97=AC=20=EB=B3=80=EA=B2=BD=20#410?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 기존 `VoteContext`는 받아들이기에 추상적이었음 - 이를 투표의 현재 상황을 보여준다는 `VotingStatus`로 바꾸어 클래스 이름을 구체화 함 --- .../roomvote/RoomBalanceVoteFacade.java | 28 +++++++++---------- .../{VoteContext.java => VotingStatus.java} | 4 +-- 2 files changed, 16 insertions(+), 16 deletions(-) rename backend/src/main/java/ddangkong/facade/room/balance/roomvote/context/{VoteContext.java => VotingStatus.java} (83%) diff --git a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java index 9a2e9a92b..e8acf6d73 100644 --- a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java +++ b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java @@ -11,7 +11,7 @@ import ddangkong.exception.room.balance.roomvote.VoteFinishedException; import ddangkong.exception.room.balance.roomvote.VoteNotFinishedException; import ddangkong.facade.balance.vote.dto.ContentTotalBalanceVoteResponse; -import ddangkong.facade.room.balance.roomvote.context.VoteContext; +import ddangkong.facade.room.balance.roomvote.context.VotingStatus; import ddangkong.facade.room.balance.roomvote.dto.ContentRoomBalanceVoteResponse; import ddangkong.facade.room.balance.roomvote.dto.RoomBalanceVoteRequest; import ddangkong.facade.room.balance.roomvote.dto.RoomBalanceVoteResponse; @@ -56,25 +56,25 @@ public class RoomBalanceVoteFacade { @Transactional public RoomBalanceVoteResponse createVote(RoomBalanceVoteRequest request, Long roomId, Long contentId) { - VoteContext voteContext = getVoteContext(roomId, contentId); - if (voteContext.isVoteFinished()) { + VotingStatus votingStatus = getVotingStatus(roomId, contentId); + if (votingStatus.isVoteFinished()) { throw new VoteFinishedException(); } - Member member = voteContext.getMember(request.memberId()); - RoomBalanceVote roomBalanceVote = roomBalanceVoteService.createVote(member, voteContext.getBalanceOptions(), + Member member = votingStatus.getMember(request.memberId()); + RoomBalanceVote roomBalanceVote = roomBalanceVoteService.createVote(member, votingStatus.getBalanceOptions(), request.optionId()); return new RoomBalanceVoteResponse(roomBalanceVote); } @Transactional(readOnly = true) public RoomBalanceVoteResultResponse getAllVoteResult(Long roomId, Long contentId) { - VoteContext voteContext = getVoteContext(roomId, contentId); - if (voteContext.isVoteNotFinished()) { + VotingStatus votingStatus = getVotingStatus(roomId, contentId); + if (votingStatus.isVoteNotFinished()) { throw new VoteNotFinishedException(); } - ContentRoomBalanceVoteResponse group = getContentRoomBalanceVoteResponse(voteContext.getRoomMembers(), - voteContext.getBalanceOptions()); - ContentTotalBalanceVoteResponse total = getContentTotalBalanceVoteResponse(voteContext.getBalanceOptions()); + ContentRoomBalanceVoteResponse group = getContentRoomBalanceVoteResponse(votingStatus.getRoomMembers(), + votingStatus.getBalanceOptions()); + ContentTotalBalanceVoteResponse total = getContentTotalBalanceVoteResponse(votingStatus.getBalanceOptions()); return new RoomBalanceVoteResultResponse(group, total); } @@ -112,11 +112,11 @@ private ContentTotalBalanceVoteResponse getContentTotalBalanceVoteResponse(Balan @Transactional(readOnly = true) public VoteFinishedResponse getVoteFinished(Long roomId, Long contentId) { - VoteContext voteContext = getVoteContext(roomId, contentId); - return new VoteFinishedResponse(voteContext.isVoteFinished()); + VotingStatus votingStatus = getVotingStatus(roomId, contentId); + return new VoteFinishedResponse(votingStatus.isVoteFinished()); } - private VoteContext getVoteContext(Long roomId, Long contentId) { + private VotingStatus getVotingStatus(Long roomId, Long contentId) { Room room = roomService.getRoom(roomId); BalanceContent balanceContent = balanceContentService.getBalanceContent(contentId); RoomMembers roomMembers = memberService.findRoomMembers(room); @@ -124,7 +124,7 @@ private VoteContext getVoteContext(Long roomId, Long contentId) { boolean isOverVoteDeadline = roomContentService.isOverVoteDeadline(room, balanceContent); boolean isAllMemberVoted = roomBalanceVoteService.isAllMemberVoted(roomMembers, balanceOptions); - return new VoteContext(roomMembers, balanceOptions, isOverVoteDeadline || isAllMemberVoted); + return new VotingStatus(roomMembers, balanceOptions, isOverVoteDeadline || isAllMemberVoted); } @Transactional(readOnly = true) diff --git a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/context/VoteContext.java b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/context/VotingStatus.java similarity index 83% rename from backend/src/main/java/ddangkong/facade/room/balance/roomvote/context/VoteContext.java rename to backend/src/main/java/ddangkong/facade/room/balance/roomvote/context/VotingStatus.java index 646cb399b..9ea362c71 100644 --- a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/context/VoteContext.java +++ b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/context/VotingStatus.java @@ -6,7 +6,7 @@ import lombok.Getter; @Getter -public class VoteContext { +public class VotingStatus { private final RoomMembers roomMembers; @@ -14,7 +14,7 @@ public class VoteContext { private final boolean voteFinished; - public VoteContext(RoomMembers roomMembers, BalanceOptions balanceOptions, boolean voteFinished) { + public VotingStatus(RoomMembers roomMembers, BalanceOptions balanceOptions, boolean voteFinished) { this.roomMembers = roomMembers; this.balanceOptions = balanceOptions; this.voteFinished = voteFinished; From d549662eeaf527e4014e946259993cca954fabd1 Mon Sep 17 00:00:00 2001 From: leegwichan Date: Sat, 23 Nov 2024 16:18:45 +0900 Subject: [PATCH 02/13] =?UTF-8?q?refactor:=20=EB=A9=94=EC=84=9C=EB=93=9C?= =?UTF-8?q?=20=EC=88=9C=EC=84=9C=20=EB=B0=8F=20=EB=88=84=EB=9D=BD=EB=90=9C?= =?UTF-8?q?=20=EC=96=B4=EB=85=B8=ED=85=8C=EC=9D=B4=EC=85=98=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20#410?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../roomvote/RoomBalanceVoteService.java | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java b/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java index 39c1ca8dd..25d55e7c3 100644 --- a/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java +++ b/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java @@ -44,6 +44,11 @@ private void validDuplicatedVote(Member member, BalanceOption balanceOption) { } } + @Transactional(readOnly = true) + public List getVotesInRoom(RoomMembers roomMembers, BalanceOption balanceOption) { + return roomVoteRepository.findByMemberInAndBalanceOption(roomMembers.getMembers(), balanceOption); + } + @Transactional(readOnly = true) public boolean isAllMemberVoted(RoomMembers roomMembers, BalanceOptions balanceOptions) { long voteCount = roomVoteRepository.countByMemberInAndBalanceOptionIn(roomMembers.getMembers(), @@ -56,19 +61,10 @@ public boolean isAllMemberVoted(RoomMembers roomMembers, BalanceOptions balanceO } @Transactional(readOnly = true) - public List getVotesInRoom(RoomMembers roomMembers, BalanceOption balanceOption) { - return roomVoteRepository.findByMemberInAndBalanceOption(roomMembers.getMembers(), balanceOption); - } - public List findRoomVotesByBalanceOptionsWithoutMember(List memberRoomVoteOptions, Room room, Member member) { - return roomVoteRepository.findRoomBalanceVotesByBalanceOptionsAndRoomWithoutMember(memberRoomVoteOptions, room, - member); - } - - @Transactional - public void deleteRoomVotes(List roomBalanceVotes) { - roomVoteRepository.deleteAllInBatch(roomBalanceVotes); + return roomVoteRepository.findRoomBalanceVotesByBalanceOptionsAndRoomWithoutMember( + memberRoomVoteOptions, room, member); } } From dbc97d37d238b4d0ae09e5fd3150ad51ef6d18a1 Mon Sep 17 00:00:00 2001 From: leegwichan Date: Sat, 23 Nov 2024 17:15:36 +0900 Subject: [PATCH 03/13] =?UTF-8?q?feat:=20VotingStatus=EC=97=90=20API?= =?UTF-8?q?=EC=97=90=20=ED=95=84=EC=9A=94=ED=95=9C=20=EC=A0=95=EB=B3=B4=20?= =?UTF-8?q?=EB=B0=8F=20=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?#410?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../balance/roomvote/RoomBalanceVote.java | 4 ++ .../roomvote/RoomBalanceVoteRepository.java | 2 +- .../room/balance/roomvote/VotingStatus.java | 62 +++++++++++++++++++ .../roomvote/RoomBalanceVoteFacade.java | 8 ++- .../roomvote/context/VotingStatus.java | 30 --------- .../roomvote/RoomBalanceVoteService.java | 13 +--- .../balance/roomvote/RoomBalanceVoteTest.java | 47 ++++++++++++++ .../roomvote/RoomBalanceVoteServiceTest.java | 56 ----------------- 8 files changed, 122 insertions(+), 100 deletions(-) create mode 100644 backend/src/main/java/ddangkong/domain/room/balance/roomvote/VotingStatus.java delete mode 100644 backend/src/main/java/ddangkong/facade/room/balance/roomvote/context/VotingStatus.java create mode 100644 backend/src/test/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteTest.java diff --git a/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVote.java b/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVote.java index 62e55bb6f..fa5ff98b9 100644 --- a/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVote.java +++ b/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVote.java @@ -38,6 +38,10 @@ public RoomBalanceVote(Member member, BalanceOption balanceOption) { this.balanceOption = balanceOption; } + public boolean isOwner(Member member) { + return this.member.getId().equals(member.getId()); + } + public Long getOptionId() { return balanceOption.getId(); } diff --git a/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteRepository.java b/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteRepository.java index 1beacaa90..79e17e21e 100644 --- a/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteRepository.java +++ b/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteRepository.java @@ -11,7 +11,7 @@ public interface RoomBalanceVoteRepository extends JpaRepository findByMemberInAndBalanceOption(List members, BalanceOption balanceOption); - long countByMemberInAndBalanceOptionIn(List members, List balanceOptions); + List findByMemberInAndBalanceOptionIn(List members, List balanceOptions); List findByMemberRoom(Room room); diff --git a/backend/src/main/java/ddangkong/domain/room/balance/roomvote/VotingStatus.java b/backend/src/main/java/ddangkong/domain/room/balance/roomvote/VotingStatus.java new file mode 100644 index 000000000..bfc58e8ea --- /dev/null +++ b/backend/src/main/java/ddangkong/domain/room/balance/roomvote/VotingStatus.java @@ -0,0 +1,62 @@ +package ddangkong.domain.room.balance.roomvote; + +import ddangkong.domain.balance.option.BalanceOptions; +import ddangkong.domain.room.member.Member; +import ddangkong.domain.room.member.RoomMembers; +import java.util.List; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +@Getter +@Slf4j +public class VotingStatus { + + private final RoomMembers roomMembers; + private final BalanceOptions balanceOptions; + private final List votes; + private final boolean voteFinished; + + public VotingStatus(RoomMembers roomMembers, + BalanceOptions balanceOptions, + List votes, + boolean voteFinished) { + checkVoteSize(roomMembers, votes); + + this.roomMembers = roomMembers; + this.balanceOptions = balanceOptions; + this.votes = votes; + this.voteFinished = voteFinished; + } + + private static void checkVoteSize(RoomMembers roomMembers, List votes) { + if (votes.size() > roomMembers.size()) { + log.error("[Concurrency Error] 투표한 인원 수가 방 인원 수보다 많습니다. 투표한 인원 수: {}, 방 인원 수: {}", + votes.size(), roomMembers.size()); + } + } + + public Member getMember(Long memberId) { + return roomMembers.getMember(memberId); + } + + public List getMembers() { + return roomMembers.getMembers(); + } + + public int getMemberCount() { + return roomMembers.size(); + } + + public int getVoteCount() { + return votes.size(); + } + + public boolean didVote(Member member) { + return votes.stream() + .anyMatch(vote -> vote.isOwner(member)); + } + + public boolean isVoteNotFinished() { + return !voteFinished; + } +} diff --git a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java index e8acf6d73..2753bd6da 100644 --- a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java +++ b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java @@ -11,7 +11,7 @@ import ddangkong.exception.room.balance.roomvote.VoteFinishedException; import ddangkong.exception.room.balance.roomvote.VoteNotFinishedException; import ddangkong.facade.balance.vote.dto.ContentTotalBalanceVoteResponse; -import ddangkong.facade.room.balance.roomvote.context.VotingStatus; +import ddangkong.domain.room.balance.roomvote.VotingStatus; import ddangkong.facade.room.balance.roomvote.dto.ContentRoomBalanceVoteResponse; import ddangkong.facade.room.balance.roomvote.dto.RoomBalanceVoteRequest; import ddangkong.facade.room.balance.roomvote.dto.RoomBalanceVoteResponse; @@ -121,10 +121,12 @@ private VotingStatus getVotingStatus(Long roomId, Long contentId) { BalanceContent balanceContent = balanceContentService.getBalanceContent(contentId); RoomMembers roomMembers = memberService.findRoomMembers(room); BalanceOptions balanceOptions = balanceOptionService.getBalanceOptions(balanceContent); + List votes = roomBalanceVoteService.getVotesInRound(roomMembers, balanceOptions); + boolean isOverVoteDeadline = roomContentService.isOverVoteDeadline(room, balanceContent); - boolean isAllMemberVoted = roomBalanceVoteService.isAllMemberVoted(roomMembers, balanceOptions); + boolean isAllMemberVoted = votes.size() >= roomMembers.size(); - return new VotingStatus(roomMembers, balanceOptions, isOverVoteDeadline || isAllMemberVoted); + return new VotingStatus(roomMembers, balanceOptions, votes, isOverVoteDeadline || isAllMemberVoted); } @Transactional(readOnly = true) diff --git a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/context/VotingStatus.java b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/context/VotingStatus.java deleted file mode 100644 index 9ea362c71..000000000 --- a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/context/VotingStatus.java +++ /dev/null @@ -1,30 +0,0 @@ -package ddangkong.facade.room.balance.roomvote.context; - -import ddangkong.domain.balance.option.BalanceOptions; -import ddangkong.domain.room.member.Member; -import ddangkong.domain.room.member.RoomMembers; -import lombok.Getter; - -@Getter -public class VotingStatus { - - private final RoomMembers roomMembers; - - private final BalanceOptions balanceOptions; - - private final boolean voteFinished; - - public VotingStatus(RoomMembers roomMembers, BalanceOptions balanceOptions, boolean voteFinished) { - this.roomMembers = roomMembers; - this.balanceOptions = balanceOptions; - this.voteFinished = voteFinished; - } - - public Member getMember(Long memberId) { - return roomMembers.getMember(memberId); - } - - public boolean isVoteNotFinished() { - return !voteFinished; - } -} diff --git a/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java b/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java index 25d55e7c3..dd9860045 100644 --- a/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java +++ b/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java @@ -10,14 +10,12 @@ import ddangkong.exception.room.balance.roomvote.AlreadyVotedException; import java.util.List; import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service @RequiredArgsConstructor -@Slf4j public class RoomBalanceVoteService { private final RoomBalanceVoteRepository roomVoteRepository; @@ -50,14 +48,9 @@ public List getVotesInRoom(RoomMembers roomMembers, BalanceOpti } @Transactional(readOnly = true) - public boolean isAllMemberVoted(RoomMembers roomMembers, BalanceOptions balanceOptions) { - long voteCount = roomVoteRepository.countByMemberInAndBalanceOptionIn(roomMembers.getMembers(), - balanceOptions.getOptions()); - if (voteCount > roomMembers.size()) { - log.error("[Concurrency Error] 투표한 인원 수가 방 인원 수보다 많습니다. 투표한 인원 수: {}, 방 인원 수: {}", - voteCount, roomMembers.size()); - } - return voteCount >= roomMembers.size(); + public List getVotesInRound(RoomMembers roomMembers, BalanceOptions balanceOptions) { + return roomVoteRepository.findByMemberInAndBalanceOptionIn( + roomMembers.getMembers(), balanceOptions.getOptions()); } @Transactional(readOnly = true) diff --git a/backend/src/test/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteTest.java b/backend/src/test/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteTest.java new file mode 100644 index 000000000..0a0d8f744 --- /dev/null +++ b/backend/src/test/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteTest.java @@ -0,0 +1,47 @@ +package ddangkong.domain.room.balance.roomvote; + +import static org.assertj.core.api.Assertions.assertThat; + +import ddangkong.domain.balance.content.BalanceContent; +import ddangkong.domain.balance.content.Category; +import ddangkong.domain.balance.option.BalanceOption; +import ddangkong.domain.room.Room; +import ddangkong.domain.room.member.Member; +import ddangkong.support.fixture.EntityFixtureUtils; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +class RoomBalanceVoteTest { + + @Nested + class 투표_한_사람_확인 { + + private static final BalanceContent CONTENT = new BalanceContent(Category.IF, "질문?"); + private static final BalanceOption OPTION = new BalanceOption("선택지", CONTENT); + private static final Room ROOM = Room.createNewRoom(); + + @Test + void 투표한_사람인지_확인_할_수_있다() { + Member member = Member.createCommon("일반 유저", ROOM); + EntityFixtureUtils.setId(member, 1L); + RoomBalanceVote vote = new RoomBalanceVote(member, OPTION); + + boolean actual = vote.isOwner(member); + + assertThat(actual).isTrue(); + } + + @Test + void 투표한_사람이_아닌지_확인_할_수_있다() { + Member member = Member.createCommon("일반 유저", ROOM); + EntityFixtureUtils.setId(member, 1L); + Member otherMember = Member.createCommon("일반 유저2", ROOM); + EntityFixtureUtils.setId(otherMember, 2L); + RoomBalanceVote vote = new RoomBalanceVote(member, OPTION); + + boolean actual = vote.isOwner(otherMember); + + assertThat(actual).isFalse(); + } + } +} diff --git a/backend/src/test/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteServiceTest.java b/backend/src/test/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteServiceTest.java index 72123fd4f..f2fd9f713 100644 --- a/backend/src/test/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteServiceTest.java +++ b/backend/src/test/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteServiceTest.java @@ -78,60 +78,4 @@ void setUp() { "이미 투표했습니다. nickname: %s, option name: %s".formatted(member.getNickname(), option1.getName())); } } - - @Nested - class 모든_멤버_투표_완료_여부 { - - private BalanceOptions balanceOptions; - - private Room room; - private RoomMembers members; - private Member member1; - private Member member2; - private Member member3; - private BalanceContent balanceContent; - private BalanceOption option1; - private BalanceOption option2; - - @BeforeEach - void setUp() { - room = roomFixture.createNotStartedRoom(); - member1 = memberFixture.createMaster(room); - member2 = memberFixture.createCommon(1, room); - member3 = memberFixture.createCommon(2, room); - members = new RoomMembers(List.of(member1, member2, member3)); - - balanceContent = balanceContentFixture.create(room.getCategory()); - option1 = balanceOptionFixture.create(balanceContent); - option2 = balanceOptionFixture.create(balanceContent); - balanceOptions = new BalanceOptions(List.of(option1, option2)); - } - - @Test - void 모든_인원이_투표했으면_true를_반환한다() { - // given - roomBalanceVoteFixture.create(member1, option1); - roomBalanceVoteFixture.create(member2, option1); - roomBalanceVoteFixture.create(member3, option2); - - // when - boolean isAllMemberVoted = roomBalanceVoteService.isAllMemberVoted(members, balanceOptions); - - // then - assertThat(isAllMemberVoted).isTrue(); - } - - @Test - void 모든_인원이_투표하지_않았으면_false를_반환한다() { - // given - roomBalanceVoteFixture.create(member1, option1); - roomBalanceVoteFixture.create(member2, option1); - - // when - boolean isAllMemberVoted = roomBalanceVoteService.isAllMemberVoted(members, balanceOptions); - - // then - assertThat(isAllMemberVoted).isFalse(); - } - } } From 16c203388d4e45369f013a65cd3876929f9c4163 Mon Sep 17 00:00:00 2001 From: leegwichan Date: Sat, 23 Nov 2024 18:04:40 +0900 Subject: [PATCH 04/13] =?UTF-8?q?feat:=20=EB=B3=80=EA=B2=BD=EB=90=9C=20API?= =?UTF-8?q?=EC=97=90=20=EB=A7=9E=EC=B6=94=EC=96=B4=20DTO=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20#410?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - FacadeTest, ControllerTest, DocumentTest 에 추가 내용 검증 --- .../roomvote/RoomBalanceVoteFacade.java | 2 +- .../roomvote/dto/VoteFinishedResponse.java | 25 ++++++++++++++++++- .../dto/VoteStatusPerMemberResponse.java | 14 +++++++++++ .../RoomBalanceVoteControllerTest.java | 18 +++++++++++-- .../RoomBalanceVoteDocumentationTest.java | 19 ++++++++++++-- .../roomvote/RoomBalanceVoteFacadeTest.java | 24 +++++++++++++++++- 6 files changed, 95 insertions(+), 7 deletions(-) create mode 100644 backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteStatusPerMemberResponse.java diff --git a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java index 2753bd6da..e9c4f49f1 100644 --- a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java +++ b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java @@ -113,7 +113,7 @@ private ContentTotalBalanceVoteResponse getContentTotalBalanceVoteResponse(Balan @Transactional(readOnly = true) public VoteFinishedResponse getVoteFinished(Long roomId, Long contentId) { VotingStatus votingStatus = getVotingStatus(roomId, contentId); - return new VoteFinishedResponse(votingStatus.isVoteFinished()); + return VoteFinishedResponse.from(votingStatus); } private VotingStatus getVotingStatus(Long roomId, Long contentId) { diff --git a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteFinishedResponse.java b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteFinishedResponse.java index cfd5f97af..c005e1b04 100644 --- a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteFinishedResponse.java +++ b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteFinishedResponse.java @@ -1,6 +1,29 @@ package ddangkong.facade.room.balance.roomvote.dto; +import ddangkong.domain.room.balance.roomvote.VotingStatus; +import java.util.List; + public record VoteFinishedResponse( - boolean isFinished + boolean isFinished, + int memberCount, + int voteCount, + List memberStates ) { + + public VoteFinishedResponse(boolean isFinished) { + this(isFinished, 0, 0, List.of()); + } + + public static VoteFinishedResponse from(VotingStatus status) { + List memberStates = status.getMembers() + .stream() + .map(member -> new VoteStatusPerMemberResponse(member, status.didVote(member))) + .toList(); + + return new VoteFinishedResponse( + status.isVoteFinished(), + status.getMemberCount(), + status.getVoteCount(), + memberStates); + } } diff --git a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteStatusPerMemberResponse.java b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteStatusPerMemberResponse.java new file mode 100644 index 000000000..7509b7b3a --- /dev/null +++ b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteStatusPerMemberResponse.java @@ -0,0 +1,14 @@ +package ddangkong.facade.room.balance.roomvote.dto; + +import ddangkong.domain.room.member.Member; +import ddangkong.facade.room.member.dto.MemberResponse; + +public record VoteStatusPerMemberResponse( + MemberResponse member, + boolean isVoteFinished +) { + + public VoteStatusPerMemberResponse(Member member, boolean isVoteFinished) { + this(new MemberResponse(member), isVoteFinished); + } +} diff --git a/backend/src/test/java/ddangkong/controller/room/balance/roomvote/RoomBalanceVoteControllerTest.java b/backend/src/test/java/ddangkong/controller/room/balance/roomvote/RoomBalanceVoteControllerTest.java index 550ef5bcc..9a00ecd61 100644 --- a/backend/src/test/java/ddangkong/controller/room/balance/roomvote/RoomBalanceVoteControllerTest.java +++ b/backend/src/test/java/ddangkong/controller/room/balance/roomvote/RoomBalanceVoteControllerTest.java @@ -130,11 +130,13 @@ void init() { } @Test - void 투표_마감_시간이_지나지_않고_방의_모든_멤버가_투표하지_않으면_투표가_종료되지_않는다() { + void 투표_진행_중인_상황을_알_수_있다() { // given LocalDateTime voteDeadline = LocalDateTime.parse("2024-08-03T20:00:08"); roomContentFixture.create(room, balanceContent, 1, voteDeadline); + roomBalanceVoteFixture.create(master, optionA); + // when VoteFinishedResponse actual = RestAssured.given().log().all() .pathParam("roomId", room.getId()) @@ -145,7 +147,19 @@ void init() { .extract().as(VoteFinishedResponse.class); // then - assertThat(actual.isFinished()).isEqualTo(false); + assertAll( + () -> assertThat(actual.isFinished()).isFalse(), + () -> assertThat(actual.memberCount()).isEqualTo(2), + () -> assertThat(actual.voteCount()).isEqualTo(1), + () -> assertThat(actual.memberStates().get(0).member().memberId()).isEqualTo(master.getId()), + () -> assertThat(actual.memberStates().get(0).member().isMaster()).isEqualTo(master.isMaster()), + () -> assertThat(actual.memberStates().get(0).member().nickname()).isEqualTo(master.getNickname()), + () -> assertThat(actual.memberStates().get(0).isVoteFinished()).isTrue(), + () -> assertThat(actual.memberStates().get(1).member().memberId()).isEqualTo(common.getId()), + () -> assertThat(actual.memberStates().get(1).member().isMaster()).isEqualTo(common.isMaster()), + () -> assertThat(actual.memberStates().get(1).member().nickname()).isEqualTo(common.getNickname()), + () -> assertThat(actual.memberStates().get(1).isVoteFinished()).isFalse() + ); } } diff --git a/backend/src/test/java/ddangkong/documentation/room/balance/roomvote/RoomBalanceVoteDocumentationTest.java b/backend/src/test/java/ddangkong/documentation/room/balance/roomvote/RoomBalanceVoteDocumentationTest.java index 50bc15904..9117cde38 100644 --- a/backend/src/test/java/ddangkong/documentation/room/balance/roomvote/RoomBalanceVoteDocumentationTest.java +++ b/backend/src/test/java/ddangkong/documentation/room/balance/roomvote/RoomBalanceVoteDocumentationTest.java @@ -31,6 +31,8 @@ import ddangkong.facade.room.balance.roomvote.dto.RoomMemberVoteMatchingResponse; import ddangkong.facade.room.balance.roomvote.dto.RoomMembersVoteMatchingResponse; import ddangkong.facade.room.balance.roomvote.dto.VoteFinishedResponse; +import ddangkong.facade.room.balance.roomvote.dto.VoteStatusPerMemberResponse; +import ddangkong.facade.room.member.dto.MemberResponse; import java.util.ArrayList; import java.util.List; import org.junit.jupiter.api.Nested; @@ -166,7 +168,11 @@ class 투표_종료_여부_조회 { @Test void 투표가_종료되었는지_조회한다() throws Exception { // given - VoteFinishedResponse response = new VoteFinishedResponse(true); + List memberStates = List.of( + new VoteStatusPerMemberResponse(new MemberResponse(1L, "커찬", false), false), + new VoteStatusPerMemberResponse(new MemberResponse(2L, "마루", true), true) + ); + VoteFinishedResponse response = new VoteFinishedResponse(true, 2, 1, memberStates); when(roomBalanceVoteFacade.getVoteFinished(anyLong(), anyLong())).thenReturn(response); // when & then @@ -178,7 +184,15 @@ class 투표_종료_여부_조회 { parameterWithName("contentId").description("콘텐츠 ID") ), responseFields( - fieldWithPath("isFinished").type(BOOLEAN).description("투표 종료 여부") + fieldWithPath("isFinished").type(BOOLEAN).description("투표 종료 여부"), + fieldWithPath("memberCount").type(NUMBER).description("방에 참여한 인원"), + fieldWithPath("voteCount").type(NUMBER).description("투표한 인원"), + fieldWithPath("memberStates").type(ARRAY).description("방 참여 인원들의 투표 현황"), + fieldWithPath("memberStates[].member").type(OBJECT).description("해당 멤버 정보"), + fieldWithPath("memberStates[].member.memberId").type(NUMBER).description("멤버 ID"), + fieldWithPath("memberStates[].member.nickname").type(STRING).description("멤버 이름"), + fieldWithPath("memberStates[].member.isMaster").type(BOOLEAN).description("마스터 여부"), + fieldWithPath("memberStates[].isVoteFinished").type(BOOLEAN).description("멤버 투표 여부") ) ) ); @@ -187,6 +201,7 @@ class 투표_종료_여부_조회 { @Nested class 투표_매칭도_조회 { + private static final String ENDPOINT = "/api/balances/rooms/{roomId}/members/{memberId}/matching"; @Test diff --git a/backend/src/test/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacadeTest.java b/backend/src/test/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacadeTest.java index 3bd2812e2..30455bb49 100644 --- a/backend/src/test/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacadeTest.java +++ b/backend/src/test/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacadeTest.java @@ -209,7 +209,6 @@ void init() { balanceContent = balanceContentFixture.create(room.getCategory()); option1 = balanceOptionFixture.create(balanceContent); option2 = balanceOptionFixture.create(balanceContent); - } @Test @@ -260,6 +259,29 @@ void init() { assertThat(actual.isFinished()).isFalse(); } + @Test + void 현재_투표가_진행_중인_상황들을_조회할_수_있다() { + // given + int round = 1; + LocalDateTime notFinishedTime = LocalDateTime.parse("2024-08-03T11:00:09"); + roomContentFixture.initRoomContent(room, balanceContent, round, notFinishedTime); + roomBalanceVoteFixture.create(master, option1); + + // when + VoteFinishedResponse actual = roomBalanceVoteFacade.getVoteFinished(room.getId(), balanceContent.getId()); + + // then + assertAll( + () -> assertThat(actual.isFinished()).isFalse(), + () -> assertThat(actual.memberCount()).isEqualTo(2), + () -> assertThat(actual.voteCount()).isEqualTo(1), + () -> assertThat(actual.memberStates().get(0).member().memberId()).isEqualTo(master.getId()), + () -> assertThat(actual.memberStates().get(0).isVoteFinished()).isTrue(), + () -> assertThat(actual.memberStates().get(1).member().memberId()).isEqualTo(member1.getId()), + () -> assertThat(actual.memberStates().get(1).isVoteFinished()).isFalse() + ); + } + @Test void 방의_현재_라운드와_다른_방_컨텐츠의_투표_종료_여부를_조회하면_예외가_발생한다() { // given From facb117ea9cf5c14d5846e295d09aca654237713 Mon Sep 17 00:00:00 2001 From: leegwichan Date: Sat, 23 Nov 2024 18:17:49 +0900 Subject: [PATCH 05/13] =?UTF-8?q?refactor:=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EC=83=9D=EC=84=B1=EC=9E=90=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20#410?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../room/balance/roomvote/dto/VoteFinishedResponse.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteFinishedResponse.java b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteFinishedResponse.java index c005e1b04..4a9364858 100644 --- a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteFinishedResponse.java +++ b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteFinishedResponse.java @@ -10,10 +10,6 @@ public record VoteFinishedResponse( List memberStates ) { - public VoteFinishedResponse(boolean isFinished) { - this(isFinished, 0, 0, List.of()); - } - public static VoteFinishedResponse from(VotingStatus status) { List memberStates = status.getMembers() .stream() From a038e3608f174016c80c5c9cd3177cc2d5f4813a Mon Sep 17 00:00:00 2001 From: leegwichan Date: Mon, 25 Nov 2024 17:48:54 +0900 Subject: [PATCH 06/13] =?UTF-8?q?feat:=20=EB=B3=80=EA=B2=BD=EB=90=9C=20API?= =?UTF-8?q?=EC=97=90=20=EB=A7=9E=EC=B6=94=EC=96=B4=20=EC=A0=84=EB=B0=98?= =?UTF-8?q?=EC=A0=81=EC=9D=B8=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?#410?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../roomvote/RoomBalanceVoteRepository.java | 2 ++ .../room/balance/roomvote/VotingStatus.java | 20 +++++++++---------- .../roomvote/RoomBalanceVoteFacade.java | 8 ++++---- .../roomvote/dto/VoteFinishedResponse.java | 16 +++------------ .../dto/VoteStatusPerMemberResponse.java | 14 ------------- .../roomvote/RoomBalanceVoteService.java | 9 ++++++++- .../RoomBalanceVoteControllerTest.java | 14 +++---------- .../RoomBalanceVoteDocumentationTest.java | 20 ++++--------------- .../roomvote/RoomBalanceVoteFacadeTest.java | 6 +----- 9 files changed, 34 insertions(+), 75 deletions(-) delete mode 100644 backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteStatusPerMemberResponse.java diff --git a/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteRepository.java b/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteRepository.java index 79e17e21e..a1dff388b 100644 --- a/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteRepository.java +++ b/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteRepository.java @@ -13,6 +13,8 @@ public interface RoomBalanceVoteRepository extends JpaRepository findByMemberInAndBalanceOptionIn(List members, List balanceOptions); + int countByMemberInAndBalanceOptionIn(List members, List balanceOptions); + List findByMemberRoom(Room room); List findByMember(Member member); diff --git a/backend/src/main/java/ddangkong/domain/room/balance/roomvote/VotingStatus.java b/backend/src/main/java/ddangkong/domain/room/balance/roomvote/VotingStatus.java index bfc58e8ea..6621a9963 100644 --- a/backend/src/main/java/ddangkong/domain/room/balance/roomvote/VotingStatus.java +++ b/backend/src/main/java/ddangkong/domain/room/balance/roomvote/VotingStatus.java @@ -3,9 +3,9 @@ import ddangkong.domain.balance.option.BalanceOptions; import ddangkong.domain.room.member.Member; import ddangkong.domain.room.member.RoomMembers; -import java.util.List; import lombok.Getter; import lombok.extern.slf4j.Slf4j; +import java.util.List; @Getter @Slf4j @@ -14,24 +14,26 @@ public class VotingStatus { private final RoomMembers roomMembers; private final BalanceOptions balanceOptions; private final List votes; + private final int voteCount; private final boolean voteFinished; public VotingStatus(RoomMembers roomMembers, BalanceOptions balanceOptions, - List votes, + int voteCount, boolean voteFinished) { - checkVoteSize(roomMembers, votes); + checkVoteSize(roomMembers, voteCount); this.roomMembers = roomMembers; this.balanceOptions = balanceOptions; - this.votes = votes; + this.votes = List.of(); + this.voteCount = voteCount; this.voteFinished = voteFinished; } - private static void checkVoteSize(RoomMembers roomMembers, List votes) { - if (votes.size() > roomMembers.size()) { + private static void checkVoteSize(RoomMembers roomMembers, int voteCount) { + if (voteCount > roomMembers.size()) { log.error("[Concurrency Error] 투표한 인원 수가 방 인원 수보다 많습니다. 투표한 인원 수: {}, 방 인원 수: {}", - votes.size(), roomMembers.size()); + voteCount, roomMembers.size()); } } @@ -47,10 +49,6 @@ public int getMemberCount() { return roomMembers.size(); } - public int getVoteCount() { - return votes.size(); - } - public boolean didVote(Member member) { return votes.stream() .anyMatch(vote -> vote.isOwner(member)); diff --git a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java index e9c4f49f1..eeb08f3db 100644 --- a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java +++ b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java @@ -113,7 +113,7 @@ private ContentTotalBalanceVoteResponse getContentTotalBalanceVoteResponse(Balan @Transactional(readOnly = true) public VoteFinishedResponse getVoteFinished(Long roomId, Long contentId) { VotingStatus votingStatus = getVotingStatus(roomId, contentId); - return VoteFinishedResponse.from(votingStatus); + return new VoteFinishedResponse(votingStatus); } private VotingStatus getVotingStatus(Long roomId, Long contentId) { @@ -121,12 +121,12 @@ private VotingStatus getVotingStatus(Long roomId, Long contentId) { BalanceContent balanceContent = balanceContentService.getBalanceContent(contentId); RoomMembers roomMembers = memberService.findRoomMembers(room); BalanceOptions balanceOptions = balanceOptionService.getBalanceOptions(balanceContent); - List votes = roomBalanceVoteService.getVotesInRound(roomMembers, balanceOptions); + int voteCount = roomBalanceVoteService.countVotesInRound(roomMembers, balanceOptions); boolean isOverVoteDeadline = roomContentService.isOverVoteDeadline(room, balanceContent); - boolean isAllMemberVoted = votes.size() >= roomMembers.size(); + boolean isAllMemberVoted = voteCount >= roomMembers.size(); - return new VotingStatus(roomMembers, balanceOptions, votes, isOverVoteDeadline || isAllMemberVoted); + return new VotingStatus(roomMembers, balanceOptions, voteCount, isOverVoteDeadline || isAllMemberVoted); } @Transactional(readOnly = true) diff --git a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteFinishedResponse.java b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteFinishedResponse.java index 4a9364858..d2b0327c5 100644 --- a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteFinishedResponse.java +++ b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteFinishedResponse.java @@ -6,20 +6,10 @@ public record VoteFinishedResponse( boolean isFinished, int memberCount, - int voteCount, - List memberStates + int voteCount ) { - public static VoteFinishedResponse from(VotingStatus status) { - List memberStates = status.getMembers() - .stream() - .map(member -> new VoteStatusPerMemberResponse(member, status.didVote(member))) - .toList(); - - return new VoteFinishedResponse( - status.isVoteFinished(), - status.getMemberCount(), - status.getVoteCount(), - memberStates); + public VoteFinishedResponse(VotingStatus status) { + this(status.isVoteFinished(), status.getMemberCount(), status.getVoteCount()); } } diff --git a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteStatusPerMemberResponse.java b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteStatusPerMemberResponse.java deleted file mode 100644 index 7509b7b3a..000000000 --- a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteStatusPerMemberResponse.java +++ /dev/null @@ -1,14 +0,0 @@ -package ddangkong.facade.room.balance.roomvote.dto; - -import ddangkong.domain.room.member.Member; -import ddangkong.facade.room.member.dto.MemberResponse; - -public record VoteStatusPerMemberResponse( - MemberResponse member, - boolean isVoteFinished -) { - - public VoteStatusPerMemberResponse(Member member, boolean isVoteFinished) { - this(new MemberResponse(member), isVoteFinished); - } -} diff --git a/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java b/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java index dd9860045..13a08a0ec 100644 --- a/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java +++ b/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java @@ -8,11 +8,11 @@ import ddangkong.domain.room.member.Member; import ddangkong.domain.room.member.RoomMembers; import ddangkong.exception.room.balance.roomvote.AlreadyVotedException; -import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; @Service @RequiredArgsConstructor @@ -53,6 +53,13 @@ public List getVotesInRound(RoomMembers roomMembers, BalanceOpt roomMembers.getMembers(), balanceOptions.getOptions()); } + @Transactional(readOnly = true) + public int countVotesInRound(RoomMembers roomMembers, BalanceOptions balanceOptions) { + int voteCount = roomVoteRepository.countByMemberInAndBalanceOptionIn( + roomMembers.getMembers(), balanceOptions.getOptions()); + return voteCount; + } + @Transactional(readOnly = true) public List findRoomVotesByBalanceOptionsWithoutMember(List memberRoomVoteOptions, Room room, diff --git a/backend/src/test/java/ddangkong/controller/room/balance/roomvote/RoomBalanceVoteControllerTest.java b/backend/src/test/java/ddangkong/controller/room/balance/roomvote/RoomBalanceVoteControllerTest.java index 9a00ecd61..07965ac86 100644 --- a/backend/src/test/java/ddangkong/controller/room/balance/roomvote/RoomBalanceVoteControllerTest.java +++ b/backend/src/test/java/ddangkong/controller/room/balance/roomvote/RoomBalanceVoteControllerTest.java @@ -20,11 +20,11 @@ import ddangkong.support.annotation.FixedClock; import io.restassured.RestAssured; import io.restassured.http.ContentType; -import java.time.LocalDateTime; -import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import java.time.LocalDateTime; +import java.util.List; class RoomBalanceVoteControllerTest extends BaseControllerTest { @@ -150,15 +150,7 @@ void init() { assertAll( () -> assertThat(actual.isFinished()).isFalse(), () -> assertThat(actual.memberCount()).isEqualTo(2), - () -> assertThat(actual.voteCount()).isEqualTo(1), - () -> assertThat(actual.memberStates().get(0).member().memberId()).isEqualTo(master.getId()), - () -> assertThat(actual.memberStates().get(0).member().isMaster()).isEqualTo(master.isMaster()), - () -> assertThat(actual.memberStates().get(0).member().nickname()).isEqualTo(master.getNickname()), - () -> assertThat(actual.memberStates().get(0).isVoteFinished()).isTrue(), - () -> assertThat(actual.memberStates().get(1).member().memberId()).isEqualTo(common.getId()), - () -> assertThat(actual.memberStates().get(1).member().isMaster()).isEqualTo(common.isMaster()), - () -> assertThat(actual.memberStates().get(1).member().nickname()).isEqualTo(common.getNickname()), - () -> assertThat(actual.memberStates().get(1).isVoteFinished()).isFalse() + () -> assertThat(actual.voteCount()).isEqualTo(1) ); } } diff --git a/backend/src/test/java/ddangkong/documentation/room/balance/roomvote/RoomBalanceVoteDocumentationTest.java b/backend/src/test/java/ddangkong/documentation/room/balance/roomvote/RoomBalanceVoteDocumentationTest.java index 9117cde38..251561054 100644 --- a/backend/src/test/java/ddangkong/documentation/room/balance/roomvote/RoomBalanceVoteDocumentationTest.java +++ b/backend/src/test/java/ddangkong/documentation/room/balance/roomvote/RoomBalanceVoteDocumentationTest.java @@ -31,15 +31,13 @@ import ddangkong.facade.room.balance.roomvote.dto.RoomMemberVoteMatchingResponse; import ddangkong.facade.room.balance.roomvote.dto.RoomMembersVoteMatchingResponse; import ddangkong.facade.room.balance.roomvote.dto.VoteFinishedResponse; -import ddangkong.facade.room.balance.roomvote.dto.VoteStatusPerMemberResponse; -import ddangkong.facade.room.member.dto.MemberResponse; -import java.util.ArrayList; -import java.util.List; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; +import java.util.ArrayList; +import java.util.List; @WebMvcTest(RoomBalanceVoteController.class) public class RoomBalanceVoteDocumentationTest extends BaseDocumentationTest { @@ -168,11 +166,7 @@ class 투표_종료_여부_조회 { @Test void 투표가_종료되었는지_조회한다() throws Exception { // given - List memberStates = List.of( - new VoteStatusPerMemberResponse(new MemberResponse(1L, "커찬", false), false), - new VoteStatusPerMemberResponse(new MemberResponse(2L, "마루", true), true) - ); - VoteFinishedResponse response = new VoteFinishedResponse(true, 2, 1, memberStates); + VoteFinishedResponse response = new VoteFinishedResponse(true, 2, 1); when(roomBalanceVoteFacade.getVoteFinished(anyLong(), anyLong())).thenReturn(response); // when & then @@ -186,13 +180,7 @@ class 투표_종료_여부_조회 { responseFields( fieldWithPath("isFinished").type(BOOLEAN).description("투표 종료 여부"), fieldWithPath("memberCount").type(NUMBER).description("방에 참여한 인원"), - fieldWithPath("voteCount").type(NUMBER).description("투표한 인원"), - fieldWithPath("memberStates").type(ARRAY).description("방 참여 인원들의 투표 현황"), - fieldWithPath("memberStates[].member").type(OBJECT).description("해당 멤버 정보"), - fieldWithPath("memberStates[].member.memberId").type(NUMBER).description("멤버 ID"), - fieldWithPath("memberStates[].member.nickname").type(STRING).description("멤버 이름"), - fieldWithPath("memberStates[].member.isMaster").type(BOOLEAN).description("마스터 여부"), - fieldWithPath("memberStates[].isVoteFinished").type(BOOLEAN).description("멤버 투표 여부") + fieldWithPath("voteCount").type(NUMBER).description("투표한 인원") ) ) ); diff --git a/backend/src/test/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacadeTest.java b/backend/src/test/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacadeTest.java index 30455bb49..55cb04065 100644 --- a/backend/src/test/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacadeTest.java +++ b/backend/src/test/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacadeTest.java @@ -274,11 +274,7 @@ void init() { assertAll( () -> assertThat(actual.isFinished()).isFalse(), () -> assertThat(actual.memberCount()).isEqualTo(2), - () -> assertThat(actual.voteCount()).isEqualTo(1), - () -> assertThat(actual.memberStates().get(0).member().memberId()).isEqualTo(master.getId()), - () -> assertThat(actual.memberStates().get(0).isVoteFinished()).isTrue(), - () -> assertThat(actual.memberStates().get(1).member().memberId()).isEqualTo(member1.getId()), - () -> assertThat(actual.memberStates().get(1).isVoteFinished()).isFalse() + () -> assertThat(actual.voteCount()).isEqualTo(1) ); } From 1821bad4256f0120c60498a026300d7ec95be10e Mon Sep 17 00:00:00 2001 From: leegwichan Date: Mon, 25 Nov 2024 18:32:53 +0900 Subject: [PATCH 07/13] =?UTF-8?q?refactor:=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EB=A9=94=EC=84=9C=EB=93=9C=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20#410?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/room/balance/roomvote/VotingStatus.java | 5 ----- .../room/balance/roomvote/RoomBalanceVoteFacade.java | 11 +++++------ .../room/balance/roomvote/RoomBalanceVoteService.java | 9 +-------- .../balance/roomvote/RoomBalanceVoteServiceTest.java | 3 +-- 4 files changed, 7 insertions(+), 21 deletions(-) diff --git a/backend/src/main/java/ddangkong/domain/room/balance/roomvote/VotingStatus.java b/backend/src/main/java/ddangkong/domain/room/balance/roomvote/VotingStatus.java index 6621a9963..c5e1cbad9 100644 --- a/backend/src/main/java/ddangkong/domain/room/balance/roomvote/VotingStatus.java +++ b/backend/src/main/java/ddangkong/domain/room/balance/roomvote/VotingStatus.java @@ -49,11 +49,6 @@ public int getMemberCount() { return roomMembers.size(); } - public boolean didVote(Member member) { - return votes.stream() - .anyMatch(vote -> vote.isOwner(member)); - } - public boolean isVoteNotFinished() { return !voteFinished; } diff --git a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java index eeb08f3db..7c977c7ea 100644 --- a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java +++ b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java @@ -5,13 +5,13 @@ import ddangkong.domain.balance.option.BalanceOptions; import ddangkong.domain.room.Room; import ddangkong.domain.room.balance.roomvote.RoomBalanceVote; +import ddangkong.domain.room.balance.roomvote.VotingStatus; import ddangkong.domain.room.member.Member; import ddangkong.domain.room.member.RoomMembers; import ddangkong.exception.room.balance.roomvote.CanNotCheckMatchingPercentException; import ddangkong.exception.room.balance.roomvote.VoteFinishedException; import ddangkong.exception.room.balance.roomvote.VoteNotFinishedException; import ddangkong.facade.balance.vote.dto.ContentTotalBalanceVoteResponse; -import ddangkong.domain.room.balance.roomvote.VotingStatus; import ddangkong.facade.room.balance.roomvote.dto.ContentRoomBalanceVoteResponse; import ddangkong.facade.room.balance.roomvote.dto.RoomBalanceVoteRequest; import ddangkong.facade.room.balance.roomvote.dto.RoomBalanceVoteResponse; @@ -26,15 +26,15 @@ import ddangkong.service.room.balance.roomvote.RoomBalanceVoteService; import ddangkong.service.room.member.MemberService; import ddangkong.util.PercentageCalculator; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; @Service @RequiredArgsConstructor @@ -147,10 +147,9 @@ private Map getRoomMembersVoteMatchingCountWithoutSelf(Room room, List roomBalanceVotes = roomBalanceVoteService.findRoomVotesByBalanceOptionsWithoutMember( memberRoomVoteOptions, room, member); - Map membersVoteMatchingCount = roomBalanceVotes.stream() + return roomBalanceVotes.stream() .map(RoomBalanceVote::getMember) .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())); - return membersVoteMatchingCount; } private RoomMembersVoteMatchingResponse getRoomMembersVoteMatchingPercent(Map membersAndMatchingCount, diff --git a/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java b/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java index 13a08a0ec..52f59efc7 100644 --- a/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java +++ b/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java @@ -47,17 +47,10 @@ public List getVotesInRoom(RoomMembers roomMembers, BalanceOpti return roomVoteRepository.findByMemberInAndBalanceOption(roomMembers.getMembers(), balanceOption); } - @Transactional(readOnly = true) - public List getVotesInRound(RoomMembers roomMembers, BalanceOptions balanceOptions) { - return roomVoteRepository.findByMemberInAndBalanceOptionIn( - roomMembers.getMembers(), balanceOptions.getOptions()); - } - @Transactional(readOnly = true) public int countVotesInRound(RoomMembers roomMembers, BalanceOptions balanceOptions) { - int voteCount = roomVoteRepository.countByMemberInAndBalanceOptionIn( + return roomVoteRepository.countByMemberInAndBalanceOptionIn( roomMembers.getMembers(), balanceOptions.getOptions()); - return voteCount; } @Transactional(readOnly = true) diff --git a/backend/src/test/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteServiceTest.java b/backend/src/test/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteServiceTest.java index f2fd9f713..d6718e7fe 100644 --- a/backend/src/test/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteServiceTest.java +++ b/backend/src/test/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteServiceTest.java @@ -10,14 +10,13 @@ import ddangkong.domain.room.Room; import ddangkong.domain.room.balance.roomvote.RoomBalanceVote; import ddangkong.domain.room.member.Member; -import ddangkong.domain.room.member.RoomMembers; import ddangkong.exception.room.balance.roomvote.AlreadyVotedException; import ddangkong.facade.BaseServiceTest; -import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import java.util.List; class RoomBalanceVoteServiceTest extends BaseServiceTest { From 3ae0b6a66d767ea8bf3e94b2a769d46bc293824f Mon Sep 17 00:00:00 2001 From: leegwichan Date: Tue, 26 Nov 2024 16:53:44 +0900 Subject: [PATCH 08/13] =?UTF-8?q?style:=20import=20=EB=AC=B8=20=EC=9E=AC?= =?UTF-8?q?=EC=A0=95=EB=A0=AC=20#410?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../facade/room/balance/roomvote/RoomBalanceVoteFacade.java | 6 +++--- .../room/balance/roomvote/RoomBalanceVoteService.java | 2 +- .../balance/roomvote/RoomBalanceVoteControllerTest.java | 4 ++-- .../balance/roomvote/RoomBalanceVoteDocumentationTest.java | 4 ++-- .../room/balance/roomvote/RoomBalanceVoteServiceTest.java | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java index 7c977c7ea..f41fba57b 100644 --- a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java +++ b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/RoomBalanceVoteFacade.java @@ -26,15 +26,15 @@ import ddangkong.service.room.balance.roomvote.RoomBalanceVoteService; import ddangkong.service.room.member.MemberService; import ddangkong.util.PercentageCalculator; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; @Service @RequiredArgsConstructor diff --git a/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java b/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java index 52f59efc7..3c3d9a79a 100644 --- a/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java +++ b/backend/src/main/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteService.java @@ -8,11 +8,11 @@ import ddangkong.domain.room.member.Member; import ddangkong.domain.room.member.RoomMembers; import ddangkong.exception.room.balance.roomvote.AlreadyVotedException; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; @Service @RequiredArgsConstructor diff --git a/backend/src/test/java/ddangkong/controller/room/balance/roomvote/RoomBalanceVoteControllerTest.java b/backend/src/test/java/ddangkong/controller/room/balance/roomvote/RoomBalanceVoteControllerTest.java index 07965ac86..658082f13 100644 --- a/backend/src/test/java/ddangkong/controller/room/balance/roomvote/RoomBalanceVoteControllerTest.java +++ b/backend/src/test/java/ddangkong/controller/room/balance/roomvote/RoomBalanceVoteControllerTest.java @@ -20,11 +20,11 @@ import ddangkong.support.annotation.FixedClock; import io.restassured.RestAssured; import io.restassured.http.ContentType; +import java.time.LocalDateTime; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import java.time.LocalDateTime; -import java.util.List; class RoomBalanceVoteControllerTest extends BaseControllerTest { diff --git a/backend/src/test/java/ddangkong/documentation/room/balance/roomvote/RoomBalanceVoteDocumentationTest.java b/backend/src/test/java/ddangkong/documentation/room/balance/roomvote/RoomBalanceVoteDocumentationTest.java index 251561054..b9010d1a4 100644 --- a/backend/src/test/java/ddangkong/documentation/room/balance/roomvote/RoomBalanceVoteDocumentationTest.java +++ b/backend/src/test/java/ddangkong/documentation/room/balance/roomvote/RoomBalanceVoteDocumentationTest.java @@ -31,13 +31,13 @@ import ddangkong.facade.room.balance.roomvote.dto.RoomMemberVoteMatchingResponse; import ddangkong.facade.room.balance.roomvote.dto.RoomMembersVoteMatchingResponse; import ddangkong.facade.room.balance.roomvote.dto.VoteFinishedResponse; +import java.util.ArrayList; +import java.util.List; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; -import java.util.ArrayList; -import java.util.List; @WebMvcTest(RoomBalanceVoteController.class) public class RoomBalanceVoteDocumentationTest extends BaseDocumentationTest { diff --git a/backend/src/test/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteServiceTest.java b/backend/src/test/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteServiceTest.java index d6718e7fe..cd9cec3ea 100644 --- a/backend/src/test/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteServiceTest.java +++ b/backend/src/test/java/ddangkong/service/room/balance/roomvote/RoomBalanceVoteServiceTest.java @@ -12,11 +12,11 @@ import ddangkong.domain.room.member.Member; import ddangkong.exception.room.balance.roomvote.AlreadyVotedException; import ddangkong.facade.BaseServiceTest; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import java.util.List; class RoomBalanceVoteServiceTest extends BaseServiceTest { From 534eeea355498690b33ab54e8818189321edc191 Mon Sep 17 00:00:00 2001 From: leegwichan Date: Tue, 26 Nov 2024 16:57:59 +0900 Subject: [PATCH 09/13] =?UTF-8?q?refactor:=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EB=A9=94=EC=84=9C=EB=93=9C=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20#410?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/room/balance/roomvote/RoomBalanceVoteRepository.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteRepository.java b/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteRepository.java index a1dff388b..10746dce2 100644 --- a/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteRepository.java +++ b/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteRepository.java @@ -11,8 +11,6 @@ public interface RoomBalanceVoteRepository extends JpaRepository findByMemberInAndBalanceOption(List members, BalanceOption balanceOption); - List findByMemberInAndBalanceOptionIn(List members, List balanceOptions); - int countByMemberInAndBalanceOptionIn(List members, List balanceOptions); List findByMemberRoom(Room room); From cf9c6a63a19806d00bbcbf753d231b37ac7e6726 Mon Sep 17 00:00:00 2001 From: leegwichan Date: Wed, 27 Nov 2024 20:17:11 +0900 Subject: [PATCH 10/13] =?UTF-8?q?refactor:=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20=ED=95=84=EB=93=9C=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0=20#410?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/room/balance/roomvote/VotingStatus.java | 14 ++++++-------- .../balance/roomvote/dto/VoteFinishedResponse.java | 1 - 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/backend/src/main/java/ddangkong/domain/room/balance/roomvote/VotingStatus.java b/backend/src/main/java/ddangkong/domain/room/balance/roomvote/VotingStatus.java index c5e1cbad9..b00b17436 100644 --- a/backend/src/main/java/ddangkong/domain/room/balance/roomvote/VotingStatus.java +++ b/backend/src/main/java/ddangkong/domain/room/balance/roomvote/VotingStatus.java @@ -3,9 +3,9 @@ import ddangkong.domain.balance.option.BalanceOptions; import ddangkong.domain.room.member.Member; import ddangkong.domain.room.member.RoomMembers; +import java.util.List; import lombok.Getter; import lombok.extern.slf4j.Slf4j; -import java.util.List; @Getter @Slf4j @@ -13,24 +13,22 @@ public class VotingStatus { private final RoomMembers roomMembers; private final BalanceOptions balanceOptions; - private final List votes; private final int voteCount; - private final boolean voteFinished; + private final boolean isVoteFinished; public VotingStatus(RoomMembers roomMembers, BalanceOptions balanceOptions, int voteCount, - boolean voteFinished) { + boolean isVoteFinished) { checkVoteSize(roomMembers, voteCount); this.roomMembers = roomMembers; this.balanceOptions = balanceOptions; - this.votes = List.of(); this.voteCount = voteCount; - this.voteFinished = voteFinished; + this.isVoteFinished = isVoteFinished; } - private static void checkVoteSize(RoomMembers roomMembers, int voteCount) { + private void checkVoteSize(RoomMembers roomMembers, int voteCount) { if (voteCount > roomMembers.size()) { log.error("[Concurrency Error] 투표한 인원 수가 방 인원 수보다 많습니다. 투표한 인원 수: {}, 방 인원 수: {}", voteCount, roomMembers.size()); @@ -50,6 +48,6 @@ public int getMemberCount() { } public boolean isVoteNotFinished() { - return !voteFinished; + return !isVoteFinished; } } diff --git a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteFinishedResponse.java b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteFinishedResponse.java index d2b0327c5..60981a974 100644 --- a/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteFinishedResponse.java +++ b/backend/src/main/java/ddangkong/facade/room/balance/roomvote/dto/VoteFinishedResponse.java @@ -1,7 +1,6 @@ package ddangkong.facade.room.balance.roomvote.dto; import ddangkong.domain.room.balance.roomvote.VotingStatus; -import java.util.List; public record VoteFinishedResponse( boolean isFinished, From 2bef1545d23780a494202c03b3b2ca96c08141cc Mon Sep 17 00:00:00 2001 From: leegwichan Date: Wed, 27 Nov 2024 20:17:44 +0900 Subject: [PATCH 11/13] =?UTF-8?q?style:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20gi?= =?UTF-8?q?ven-when-then=20=EA=B5=AC=EB=AC=B8=20=EC=B6=94=EA=B0=80=20#410?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/room/balance/roomvote/RoomBalanceVoteTest.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/backend/src/test/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteTest.java b/backend/src/test/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteTest.java index 0a0d8f744..3bffc9323 100644 --- a/backend/src/test/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteTest.java +++ b/backend/src/test/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteTest.java @@ -22,25 +22,31 @@ class 투표_한_사람_확인 { @Test void 투표한_사람인지_확인_할_수_있다() { + // given Member member = Member.createCommon("일반 유저", ROOM); EntityFixtureUtils.setId(member, 1L); RoomBalanceVote vote = new RoomBalanceVote(member, OPTION); + // when boolean actual = vote.isOwner(member); + // then assertThat(actual).isTrue(); } @Test void 투표한_사람이_아닌지_확인_할_수_있다() { + // given Member member = Member.createCommon("일반 유저", ROOM); EntityFixtureUtils.setId(member, 1L); Member otherMember = Member.createCommon("일반 유저2", ROOM); EntityFixtureUtils.setId(otherMember, 2L); RoomBalanceVote vote = new RoomBalanceVote(member, OPTION); + // when boolean actual = vote.isOwner(otherMember); + // then assertThat(actual).isFalse(); } } From 3c070d4b2fa36fb7ea5c580f9d5a96fcc6299adc Mon Sep 17 00:00:00 2001 From: leegwichan Date: Wed, 27 Nov 2024 20:18:09 +0900 Subject: [PATCH 12/13] =?UTF-8?q?test:=20=EA=B0=81=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EB=B3=84=20assert=20=EB=AC=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../roomvote/RoomBalanceVoteControllerTest.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/backend/src/test/java/ddangkong/controller/room/balance/roomvote/RoomBalanceVoteControllerTest.java b/backend/src/test/java/ddangkong/controller/room/balance/roomvote/RoomBalanceVoteControllerTest.java index 658082f13..0b1b52268 100644 --- a/backend/src/test/java/ddangkong/controller/room/balance/roomvote/RoomBalanceVoteControllerTest.java +++ b/backend/src/test/java/ddangkong/controller/room/balance/roomvote/RoomBalanceVoteControllerTest.java @@ -107,7 +107,11 @@ void init() { .extract().as(VoteFinishedResponse.class); // then - assertThat(actual.isFinished()).isEqualTo(true); + assertAll( + () -> assertThat(actual.isFinished()).isTrue(), + () -> assertThat(actual.memberCount()).isEqualTo(2), + () -> assertThat(actual.voteCount()).isEqualTo(2) + ); } @Test @@ -126,11 +130,15 @@ void init() { .extract().as(VoteFinishedResponse.class); // then - assertThat(actual.isFinished()).isEqualTo(true); + assertAll( + () -> assertThat(actual.isFinished()).isTrue(), + () -> assertThat(actual.memberCount()).isEqualTo(2), + () -> assertThat(actual.voteCount()).isEqualTo(0) + ); } @Test - void 투표_진행_중인_상황을_알_수_있다() { + void 투표_마감_시간이_지나지_않고_방의_모든_멤버가_투표하지_않으면_투표가_종료되지_않는다() { // given LocalDateTime voteDeadline = LocalDateTime.parse("2024-08-03T20:00:08"); roomContentFixture.create(room, balanceContent, 1, voteDeadline); From 5c818a24620088eb33571f515ffba7acd18d6721 Mon Sep 17 00:00:00 2001 From: leegwichan Date: Sun, 1 Dec 2024 09:12:26 +0900 Subject: [PATCH 13/13] =?UTF-8?q?refactor:=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EB=A9=94=EC=84=9C=EB=93=9C=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20#410?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../balance/roomvote/RoomBalanceVote.java | 4 -- .../balance/roomvote/RoomBalanceVoteTest.java | 53 ------------------- 2 files changed, 57 deletions(-) delete mode 100644 backend/src/test/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteTest.java diff --git a/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVote.java b/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVote.java index fa5ff98b9..62e55bb6f 100644 --- a/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVote.java +++ b/backend/src/main/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVote.java @@ -38,10 +38,6 @@ public RoomBalanceVote(Member member, BalanceOption balanceOption) { this.balanceOption = balanceOption; } - public boolean isOwner(Member member) { - return this.member.getId().equals(member.getId()); - } - public Long getOptionId() { return balanceOption.getId(); } diff --git a/backend/src/test/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteTest.java b/backend/src/test/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteTest.java deleted file mode 100644 index 3bffc9323..000000000 --- a/backend/src/test/java/ddangkong/domain/room/balance/roomvote/RoomBalanceVoteTest.java +++ /dev/null @@ -1,53 +0,0 @@ -package ddangkong.domain.room.balance.roomvote; - -import static org.assertj.core.api.Assertions.assertThat; - -import ddangkong.domain.balance.content.BalanceContent; -import ddangkong.domain.balance.content.Category; -import ddangkong.domain.balance.option.BalanceOption; -import ddangkong.domain.room.Room; -import ddangkong.domain.room.member.Member; -import ddangkong.support.fixture.EntityFixtureUtils; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -class RoomBalanceVoteTest { - - @Nested - class 투표_한_사람_확인 { - - private static final BalanceContent CONTENT = new BalanceContent(Category.IF, "질문?"); - private static final BalanceOption OPTION = new BalanceOption("선택지", CONTENT); - private static final Room ROOM = Room.createNewRoom(); - - @Test - void 투표한_사람인지_확인_할_수_있다() { - // given - Member member = Member.createCommon("일반 유저", ROOM); - EntityFixtureUtils.setId(member, 1L); - RoomBalanceVote vote = new RoomBalanceVote(member, OPTION); - - // when - boolean actual = vote.isOwner(member); - - // then - assertThat(actual).isTrue(); - } - - @Test - void 투표한_사람이_아닌지_확인_할_수_있다() { - // given - Member member = Member.createCommon("일반 유저", ROOM); - EntityFixtureUtils.setId(member, 1L); - Member otherMember = Member.createCommon("일반 유저2", ROOM); - EntityFixtureUtils.setId(otherMember, 2L); - RoomBalanceVote vote = new RoomBalanceVote(member, OPTION); - - // when - boolean actual = vote.isOwner(otherMember); - - // then - assertThat(actual).isFalse(); - } - } -}