From 1abed2acc4018c244d30783e451f1cf28e5ae683 Mon Sep 17 00:00:00 2001 From: coli Date: Thu, 11 Sep 2025 01:08:49 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20PollInfo=EC=97=90=20=ED=88=AC?= =?UTF-8?q?=ED=91=9C=EC=9E=90=20=EC=9D=B4=EB=A6=84=20=EC=A0=95=EB=B3=B4=20?= =?UTF-8?q?=EB=B0=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/debatetimer/domain/poll/VoteInfo.java | 12 +++++++++--- .../poll/VoteDomainRepository.java | 15 +++++++++------ .../dto/poll/response/PollInfoResponse.java | 7 +++++-- .../controller/poll/PollControllerTest.java | 11 +++++++---- .../controller/poll/PollDocumentTest.java | 15 +++++++++++---- .../debatetimer/service/poll/PollServiceTest.java | 11 +++++++---- 6 files changed, 48 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/debatetimer/domain/poll/VoteInfo.java b/src/main/java/com/debatetimer/domain/poll/VoteInfo.java index 36734ebb..0449545a 100644 --- a/src/main/java/com/debatetimer/domain/poll/VoteInfo.java +++ b/src/main/java/com/debatetimer/domain/poll/VoteInfo.java @@ -1,19 +1,25 @@ package com.debatetimer.domain.poll; +import java.util.List; +import java.util.Map; import lombok.Getter; @Getter public class VoteInfo { + private static final long INITIAL_VOTE_COUNT = 0L; + private final long pollId; private final long totalCount; private final long prosCount; private final long consCount; + private final List voterNames; - public VoteInfo(long pollId, long prosCount, long consCount) { + public VoteInfo(long pollId, Map voteCounts, List voterNames) { this.pollId = pollId; + this.prosCount = voteCounts.getOrDefault(VoteTeam.PROS, INITIAL_VOTE_COUNT); + this.consCount = voteCounts.getOrDefault(VoteTeam.CONS, INITIAL_VOTE_COUNT); this.totalCount = prosCount + consCount; - this.prosCount = prosCount; - this.consCount = consCount; + this.voterNames = voterNames; } } diff --git a/src/main/java/com/debatetimer/domainrepository/poll/VoteDomainRepository.java b/src/main/java/com/debatetimer/domainrepository/poll/VoteDomainRepository.java index dc79f01f..d47d2050 100644 --- a/src/main/java/com/debatetimer/domainrepository/poll/VoteDomainRepository.java +++ b/src/main/java/com/debatetimer/domainrepository/poll/VoteDomainRepository.java @@ -28,15 +28,18 @@ public class VoteDomainRepository { public VoteInfo findVoteInfoByPollId(long pollId) { List pollVotes = voteRepository.findAllByPollId(pollId); - return countVotes(pollId, pollVotes); + return resolveVoteInfo(pollId, pollVotes); } - private VoteInfo countVotes(long pollId, List voteEntities) { - Map teamCount = voteEntities.stream() + private VoteInfo resolveVoteInfo(long pollId, List voteEntities) { + List voterNames = voteEntities.stream() + .map(VoteEntity::getName) + .toList(); + + Map voteCount = voteEntities.stream() .collect(Collectors.groupingBy(VoteEntity::getTeam, Collectors.counting())); - long prosCount = teamCount.getOrDefault(VoteTeam.PROS, 0L); - long consCount = teamCount.getOrDefault(VoteTeam.CONS, 0L); - return new VoteInfo(pollId, prosCount, consCount); + + return new VoteInfo(pollId, voteCount, voterNames); } public boolean isExists(long pollId, ParticipateCode code) { diff --git a/src/main/java/com/debatetimer/dto/poll/response/PollInfoResponse.java b/src/main/java/com/debatetimer/dto/poll/response/PollInfoResponse.java index 69f3f6ae..1337cf6a 100644 --- a/src/main/java/com/debatetimer/dto/poll/response/PollInfoResponse.java +++ b/src/main/java/com/debatetimer/dto/poll/response/PollInfoResponse.java @@ -3,6 +3,7 @@ import com.debatetimer.domain.poll.Poll; import com.debatetimer.domain.poll.PollStatus; import com.debatetimer.domain.poll.VoteInfo; +import java.util.List; public record PollInfoResponse( long id, @@ -11,7 +12,8 @@ public record PollInfoResponse( String consTeamName, long totalCount, long prosCount, - long consCount + long consCount, + List voterNames ) { public PollInfoResponse(Poll poll, VoteInfo voteInfo) { @@ -22,7 +24,8 @@ public PollInfoResponse(Poll poll, VoteInfo voteInfo) { poll.getConsTeamName().getValue(), voteInfo.getTotalCount(), voteInfo.getProsCount(), - voteInfo.getConsCount() + voteInfo.getConsCount(), + voteInfo.getVoterNames() ); } } diff --git a/src/test/java/com/debatetimer/controller/poll/PollControllerTest.java b/src/test/java/com/debatetimer/controller/poll/PollControllerTest.java index ee3fad9b..59d32cff 100644 --- a/src/test/java/com/debatetimer/controller/poll/PollControllerTest.java +++ b/src/test/java/com/debatetimer/controller/poll/PollControllerTest.java @@ -10,6 +10,7 @@ import com.debatetimer.dto.poll.response.PollInfoResponse; import com.debatetimer.entity.customize.CustomizeTableEntity; import com.debatetimer.entity.poll.PollEntity; +import com.debatetimer.entity.poll.VoteEntity; import io.restassured.http.ContentType; import io.restassured.http.Headers; import org.junit.jupiter.api.Nested; @@ -44,9 +45,9 @@ class GetPollInfo { Member member = memberGenerator.generate("email@email.com"); CustomizeTableEntity table = customizeTableEntityGenerator.generate(member); PollEntity pollEntity = pollEntityGenerator.generate(table, PollStatus.PROGRESS); - voteEntityGenerator.generate(pollEntity, VoteTeam.PROS, "콜리"); - voteEntityGenerator.generate(pollEntity, VoteTeam.PROS, "비토"); - voteEntityGenerator.generate(pollEntity, VoteTeam.CONS, "커찬"); + VoteEntity voter1 = voteEntityGenerator.generate(pollEntity, VoteTeam.PROS, "콜리"); + VoteEntity voter2 = voteEntityGenerator.generate(pollEntity, VoteTeam.PROS, "비토"); + VoteEntity voter3 = voteEntityGenerator.generate(pollEntity, VoteTeam.CONS, "커찬"); Headers headers = headerGenerator.generateAccessTokenHeader(member); PollInfoResponse response = given() @@ -64,7 +65,9 @@ class GetPollInfo { () -> assertThat(response.status()).isEqualTo(pollEntity.getStatus()), () -> assertThat(response.totalCount()).isEqualTo(3L), () -> assertThat(response.prosCount()).isEqualTo(2L), - () -> assertThat(response.consCount()).isEqualTo(1L) + () -> assertThat(response.consCount()).isEqualTo(1L), + () -> assertThat(response.voterNames()).containsExactly( + voter1.getName(), voter2.getName(), voter3.getName()) ); } } diff --git a/src/test/java/com/debatetimer/controller/poll/PollDocumentTest.java b/src/test/java/com/debatetimer/controller/poll/PollDocumentTest.java index e0cd3b42..cd8eaad4 100644 --- a/src/test/java/com/debatetimer/controller/poll/PollDocumentTest.java +++ b/src/test/java/com/debatetimer/controller/poll/PollDocumentTest.java @@ -4,6 +4,7 @@ import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Mockito.doReturn; import static org.springframework.restdocs.headers.HeaderDocumentation.headerWithName; +import static org.springframework.restdocs.payload.JsonFieldType.ARRAY; import static org.springframework.restdocs.payload.JsonFieldType.NUMBER; import static org.springframework.restdocs.payload.JsonFieldType.STRING; import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; @@ -18,6 +19,7 @@ import com.debatetimer.dto.poll.response.PollCreateResponse; import com.debatetimer.dto.poll.response.PollInfoResponse; import io.restassured.http.ContentType; +import java.util.List; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.http.HttpHeaders; @@ -85,7 +87,8 @@ class GetPollInfo { fieldWithPath("consTeamName").type(STRING).description("반대측 팀 이름"), fieldWithPath("totalCount").type(NUMBER).description("전체 투표 수"), fieldWithPath("prosCount").type(NUMBER).description("찬성 투표 수"), - fieldWithPath("consCount").type(NUMBER).description("반대 투표 수") + fieldWithPath("consCount").type(NUMBER).description("반대 투표 수"), + fieldWithPath("voterNames").type(ARRAY).description("투표자 이름 정보") ); @Test @@ -97,7 +100,8 @@ class GetPollInfo { "반대", 3L, 2L, - 1L + 1L, + List.of("콜리", "비토", "커찬") ); doReturn(response).when(pollService).getPollInfo(anyLong(), any(Member.class)); @@ -136,7 +140,8 @@ class FinishPoll { fieldWithPath("consTeamName").type(STRING).description("반대측 팀 이름"), fieldWithPath("totalCount").type(NUMBER).description("전체 투표 수"), fieldWithPath("prosCount").type(NUMBER).description("찬성 투표 수"), - fieldWithPath("consCount").type(NUMBER).description("반대 투표 수") + fieldWithPath("consCount").type(NUMBER).description("반대 투표 수"), + fieldWithPath("voterNames").type(ARRAY).description("투표자 이름 정보") ); @Test @@ -148,7 +153,9 @@ class FinishPoll { "반대", 3L, 2L, - 1L + 1L, + List.of("콜리", "비토", "커찬") + ); doReturn(response).when(pollService).finishPoll(anyLong(), any(Member.class)); diff --git a/src/test/java/com/debatetimer/service/poll/PollServiceTest.java b/src/test/java/com/debatetimer/service/poll/PollServiceTest.java index 4dd3e913..678547b4 100644 --- a/src/test/java/com/debatetimer/service/poll/PollServiceTest.java +++ b/src/test/java/com/debatetimer/service/poll/PollServiceTest.java @@ -10,6 +10,7 @@ import com.debatetimer.dto.poll.response.PollInfoResponse; import com.debatetimer.entity.customize.CustomizeTableEntity; import com.debatetimer.entity.poll.PollEntity; +import com.debatetimer.entity.poll.VoteEntity; import com.debatetimer.service.BaseServiceTest; import java.util.Optional; import org.junit.jupiter.api.Nested; @@ -44,9 +45,9 @@ class GetPollInfo { Member member = memberGenerator.generate("email@email.com"); CustomizeTableEntity table = customizeTableEntityGenerator.generate(member); PollEntity pollEntity = pollEntityGenerator.generate(table, PollStatus.PROGRESS); - voteEntityGenerator.generate(pollEntity, VoteTeam.PROS, "콜리"); - voteEntityGenerator.generate(pollEntity, VoteTeam.PROS, "비토"); - voteEntityGenerator.generate(pollEntity, VoteTeam.CONS, "커찬"); + VoteEntity voter1 = voteEntityGenerator.generate(pollEntity, VoteTeam.PROS, "콜리"); + VoteEntity voter2 = voteEntityGenerator.generate(pollEntity, VoteTeam.PROS, "비토"); + VoteEntity voter3 = voteEntityGenerator.generate(pollEntity, VoteTeam.CONS, "커찬"); PollInfoResponse pollInfo = pollService.getPollInfo(table.getId(), member); @@ -57,7 +58,9 @@ class GetPollInfo { () -> assertThat(pollInfo.status()).isEqualTo(pollEntity.getStatus()), () -> assertThat(pollInfo.totalCount()).isEqualTo(3L), () -> assertThat(pollInfo.prosCount()).isEqualTo(2L), - () -> assertThat(pollInfo.consCount()).isEqualTo(1L) + () -> assertThat(pollInfo.consCount()).isEqualTo(1L), + () -> assertThat(pollInfo.voterNames()).containsExactly( + voter1.getName(), voter2.getName(), voter3.getName()) ); } } From 1988a083ba796eb077d43401aa680e2c8b298075 Mon Sep 17 00:00:00 2001 From: coli Date: Tue, 16 Sep 2025 08:18:01 +0900 Subject: [PATCH 2/4] =?UTF-8?q?chore:=20private=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domainrepository/poll/VoteDomainRepository.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/debatetimer/domainrepository/poll/VoteDomainRepository.java b/src/main/java/com/debatetimer/domainrepository/poll/VoteDomainRepository.java index d47d2050..8c19fd93 100644 --- a/src/main/java/com/debatetimer/domainrepository/poll/VoteDomainRepository.java +++ b/src/main/java/com/debatetimer/domainrepository/poll/VoteDomainRepository.java @@ -28,15 +28,11 @@ public class VoteDomainRepository { public VoteInfo findVoteInfoByPollId(long pollId) { List pollVotes = voteRepository.findAllByPollId(pollId); - return resolveVoteInfo(pollId, pollVotes); - } - - private VoteInfo resolveVoteInfo(long pollId, List voteEntities) { - List voterNames = voteEntities.stream() + List voterNames = pollVotes.stream() .map(VoteEntity::getName) .toList(); - Map voteCount = voteEntities.stream() + Map voteCount = pollVotes.stream() .collect(Collectors.groupingBy(VoteEntity::getTeam, Collectors.counting())); return new VoteInfo(pollId, voteCount, voterNames); From f6ebcdc2c5484c253f33f307a0d035dba7e8afb0 Mon Sep 17 00:00:00 2001 From: coli Date: Fri, 19 Sep 2025 18:45:29 +0900 Subject: [PATCH 3/4] =?UTF-8?q?feat:=20=EC=8B=9C=EA=B0=84=EC=88=9C=20?= =?UTF-8?q?=EC=A0=95=EB=A0=AC=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/debatetimer/domain/poll/Vote.java | 8 +++-- .../com/debatetimer/domain/poll/VoteInfo.java | 19 ++++++++-- .../poll/VoteDomainRepository.java | 15 +++----- .../debatetimer/entity/poll/VoteEntity.java | 5 +-- .../V14__add_time_column_into_vote.sql | 6 ++++ .../debatetimer/domain/poll/VoteInfoTest.java | 35 +++++++++++++++++++ 6 files changed, 69 insertions(+), 19 deletions(-) create mode 100644 src/main/resources/db/migration/V14__add_time_column_into_vote.sql create mode 100644 src/test/java/com/debatetimer/domain/poll/VoteInfoTest.java diff --git a/src/main/java/com/debatetimer/domain/poll/Vote.java b/src/main/java/com/debatetimer/domain/poll/Vote.java index 6d14cf5f..89e0f021 100644 --- a/src/main/java/com/debatetimer/domain/poll/Vote.java +++ b/src/main/java/com/debatetimer/domain/poll/Vote.java @@ -1,5 +1,6 @@ package com.debatetimer.domain.poll; +import java.time.LocalDateTime; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -12,12 +13,13 @@ public class Vote { private final VoteTeam team; private final ParticipantName name; private final ParticipateCode code; + private final LocalDateTime createAt; public Vote(long pollId, VoteTeam team, String name, String code) { - this(null, pollId, team, name, code); + this(null, pollId, team, name, code, LocalDateTime.now()); } - public Vote(Long id, long pollId, VoteTeam team, String name, String code) { - this(id, pollId, team, new ParticipantName(name), new ParticipateCode(code)); + public Vote(Long id, long pollId, VoteTeam team, String name, String code, LocalDateTime createAt) { + this(id, pollId, team, new ParticipantName(name), new ParticipateCode(code), createAt); } } diff --git a/src/main/java/com/debatetimer/domain/poll/VoteInfo.java b/src/main/java/com/debatetimer/domain/poll/VoteInfo.java index 0449545a..5347574c 100644 --- a/src/main/java/com/debatetimer/domain/poll/VoteInfo.java +++ b/src/main/java/com/debatetimer/domain/poll/VoteInfo.java @@ -1,12 +1,15 @@ package com.debatetimer.domain.poll; +import java.util.Comparator; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import lombok.Getter; @Getter public class VoteInfo { + private static final Comparator VOTE_COMPARATOR = Comparator.comparing(Vote::getCreateAt); private static final long INITIAL_VOTE_COUNT = 0L; private final long pollId; @@ -15,11 +18,21 @@ public class VoteInfo { private final long consCount; private final List voterNames; - public VoteInfo(long pollId, Map voteCounts, List voterNames) { + public VoteInfo(long pollId, List votes) { + Map voteCounts = createVoteCounts(votes); this.pollId = pollId; + this.totalCount = votes.size(); this.prosCount = voteCounts.getOrDefault(VoteTeam.PROS, INITIAL_VOTE_COUNT); this.consCount = voteCounts.getOrDefault(VoteTeam.CONS, INITIAL_VOTE_COUNT); - this.totalCount = prosCount + consCount; - this.voterNames = voterNames; + this.voterNames = votes.stream() + .sorted(VOTE_COMPARATOR) + .map(Vote::getName) + .map(ParticipantName::getValue) + .toList(); + } + + private Map createVoteCounts(List votes) { + return votes.stream() + .collect(Collectors.groupingBy(Vote::getTeam, Collectors.counting())); } } diff --git a/src/main/java/com/debatetimer/domainrepository/poll/VoteDomainRepository.java b/src/main/java/com/debatetimer/domainrepository/poll/VoteDomainRepository.java index 8c19fd93..436419f7 100644 --- a/src/main/java/com/debatetimer/domainrepository/poll/VoteDomainRepository.java +++ b/src/main/java/com/debatetimer/domainrepository/poll/VoteDomainRepository.java @@ -3,7 +3,6 @@ import com.debatetimer.domain.poll.ParticipateCode; import com.debatetimer.domain.poll.Vote; import com.debatetimer.domain.poll.VoteInfo; -import com.debatetimer.domain.poll.VoteTeam; import com.debatetimer.entity.poll.PollEntity; import com.debatetimer.entity.poll.VoteEntity; import com.debatetimer.exception.custom.DTClientErrorException; @@ -12,8 +11,6 @@ import com.debatetimer.repository.poll.PollRepository; import com.debatetimer.repository.poll.VoteRepository; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Repository; @@ -27,15 +24,11 @@ public class VoteDomainRepository { private final RepositoryErrorDecoder errorDecoder; public VoteInfo findVoteInfoByPollId(long pollId) { - List pollVotes = voteRepository.findAllByPollId(pollId); - List voterNames = pollVotes.stream() - .map(VoteEntity::getName) + List pollVotes = voteRepository.findAllByPollId(pollId) + .stream() + .map(VoteEntity::toDomain) .toList(); - - Map voteCount = pollVotes.stream() - .collect(Collectors.groupingBy(VoteEntity::getTeam, Collectors.counting())); - - return new VoteInfo(pollId, voteCount, voterNames); + return new VoteInfo(pollId, pollVotes); } public boolean isExists(long pollId, ParticipateCode code) { diff --git a/src/main/java/com/debatetimer/entity/poll/VoteEntity.java b/src/main/java/com/debatetimer/entity/poll/VoteEntity.java index 0b0f26c7..0e6b6d43 100644 --- a/src/main/java/com/debatetimer/entity/poll/VoteEntity.java +++ b/src/main/java/com/debatetimer/entity/poll/VoteEntity.java @@ -2,6 +2,7 @@ import com.debatetimer.domain.poll.Vote; import com.debatetimer.domain.poll.VoteTeam; +import com.debatetimer.entity.BaseTimeEntity; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; @@ -28,7 +29,7 @@ }) @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor -public class VoteEntity { +public class VoteEntity extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -55,6 +56,6 @@ public VoteEntity(Vote vote, PollEntity pollEntity) { } public Vote toDomain() { - return new Vote(id, poll.getId(), team, name, participateCode); + return new Vote(id, poll.getId(), team, name, participateCode, getCreatedAt()); } } diff --git a/src/main/resources/db/migration/V14__add_time_column_into_vote.sql b/src/main/resources/db/migration/V14__add_time_column_into_vote.sql new file mode 100644 index 00000000..4663c8d2 --- /dev/null +++ b/src/main/resources/db/migration/V14__add_time_column_into_vote.sql @@ -0,0 +1,6 @@ +ALTER TABLE vote + ADD COLUMN created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP; + +ALTER TABLE vote + ADD COLUMN modified_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; + diff --git a/src/test/java/com/debatetimer/domain/poll/VoteInfoTest.java b/src/test/java/com/debatetimer/domain/poll/VoteInfoTest.java new file mode 100644 index 00000000..345a8df6 --- /dev/null +++ b/src/test/java/com/debatetimer/domain/poll/VoteInfoTest.java @@ -0,0 +1,35 @@ +package com.debatetimer.domain.poll; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.time.LocalDateTime; +import java.util.List; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +class VoteInfoTest { + + @Nested + class getVoterNames { + + @Test + void 생성_순으로_투표자_이름을_정렬한다() { + LocalDateTime now = LocalDateTime.now(); + LocalDateTime oneMinutesAgo = now.minusMinutes(1); + LocalDateTime twoMinutesAgo = now.minusMinutes(2); + long pollId = 1L; + Vote nowVote = new Vote(1L, pollId, VoteTeam.PROS, "콜리1", "code1", now); + Vote oneMinutesAgoVote = new Vote(2L, pollId, VoteTeam.PROS, "콜리2", "code2", oneMinutesAgo); + Vote twoMinutesAgoVote = new Vote(3L, pollId, VoteTeam.PROS, "콜리3", "code3", twoMinutesAgo); + + VoteInfo voteInfo = new VoteInfo(pollId, List.of(nowVote, oneMinutesAgoVote, twoMinutesAgoVote)); + + assertThat(voteInfo.getVoterNames()) + .containsExactly( + twoMinutesAgoVote.getName().getValue(), + oneMinutesAgoVote.getName().getValue(), + nowVote.getName().getValue() + ); + } + } +} From 65162add4c8797eb08046d0e077f39c9981b2932 Mon Sep 17 00:00:00 2001 From: coli Date: Tue, 30 Sep 2025 01:40:26 +0900 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20=ED=95=84=EB=93=9C=EB=AA=85=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/debatetimer/domain/poll/Vote.java | 6 +++--- src/main/java/com/debatetimer/domain/poll/VoteInfo.java | 5 ++--- .../com/debatetimer/dto/poll/response/PollInfoResponse.java | 5 ++++- src/test/java/com/debatetimer/domain/poll/VoteInfoTest.java | 6 +++++- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/debatetimer/domain/poll/Vote.java b/src/main/java/com/debatetimer/domain/poll/Vote.java index 89e0f021..6e5400e0 100644 --- a/src/main/java/com/debatetimer/domain/poll/Vote.java +++ b/src/main/java/com/debatetimer/domain/poll/Vote.java @@ -13,13 +13,13 @@ public class Vote { private final VoteTeam team; private final ParticipantName name; private final ParticipateCode code; - private final LocalDateTime createAt; + private final LocalDateTime createdAt; public Vote(long pollId, VoteTeam team, String name, String code) { this(null, pollId, team, name, code, LocalDateTime.now()); } - public Vote(Long id, long pollId, VoteTeam team, String name, String code, LocalDateTime createAt) { - this(id, pollId, team, new ParticipantName(name), new ParticipateCode(code), createAt); + public Vote(Long id, long pollId, VoteTeam team, String name, String code, LocalDateTime createdAt) { + this(id, pollId, team, new ParticipantName(name), new ParticipateCode(code), createdAt); } } diff --git a/src/main/java/com/debatetimer/domain/poll/VoteInfo.java b/src/main/java/com/debatetimer/domain/poll/VoteInfo.java index 5347574c..45232e05 100644 --- a/src/main/java/com/debatetimer/domain/poll/VoteInfo.java +++ b/src/main/java/com/debatetimer/domain/poll/VoteInfo.java @@ -9,14 +9,14 @@ @Getter public class VoteInfo { - private static final Comparator VOTE_COMPARATOR = Comparator.comparing(Vote::getCreateAt); + private static final Comparator VOTE_COMPARATOR = Comparator.comparing(Vote::getCreatedAt); private static final long INITIAL_VOTE_COUNT = 0L; private final long pollId; private final long totalCount; private final long prosCount; private final long consCount; - private final List voterNames; + private final List voterNames; public VoteInfo(long pollId, List votes) { Map voteCounts = createVoteCounts(votes); @@ -27,7 +27,6 @@ public VoteInfo(long pollId, List votes) { this.voterNames = votes.stream() .sorted(VOTE_COMPARATOR) .map(Vote::getName) - .map(ParticipantName::getValue) .toList(); } diff --git a/src/main/java/com/debatetimer/dto/poll/response/PollInfoResponse.java b/src/main/java/com/debatetimer/dto/poll/response/PollInfoResponse.java index 1337cf6a..87340c65 100644 --- a/src/main/java/com/debatetimer/dto/poll/response/PollInfoResponse.java +++ b/src/main/java/com/debatetimer/dto/poll/response/PollInfoResponse.java @@ -1,5 +1,6 @@ package com.debatetimer.dto.poll.response; +import com.debatetimer.domain.poll.ParticipantName; import com.debatetimer.domain.poll.Poll; import com.debatetimer.domain.poll.PollStatus; import com.debatetimer.domain.poll.VoteInfo; @@ -25,7 +26,9 @@ public PollInfoResponse(Poll poll, VoteInfo voteInfo) { voteInfo.getTotalCount(), voteInfo.getProsCount(), voteInfo.getConsCount(), - voteInfo.getVoterNames() + voteInfo.getVoterNames().stream() + .map(ParticipantName::getValue) + .toList() ); } } diff --git a/src/test/java/com/debatetimer/domain/poll/VoteInfoTest.java b/src/test/java/com/debatetimer/domain/poll/VoteInfoTest.java index 345a8df6..a8b5b5cc 100644 --- a/src/test/java/com/debatetimer/domain/poll/VoteInfoTest.java +++ b/src/test/java/com/debatetimer/domain/poll/VoteInfoTest.java @@ -23,8 +23,12 @@ class getVoterNames { Vote twoMinutesAgoVote = new Vote(3L, pollId, VoteTeam.PROS, "콜리3", "code3", twoMinutesAgo); VoteInfo voteInfo = new VoteInfo(pollId, List.of(nowVote, oneMinutesAgoVote, twoMinutesAgoVote)); + List voterNames = voteInfo.getVoterNames() + .stream() + .map(ParticipantName::getValue) + .toList(); - assertThat(voteInfo.getVoterNames()) + assertThat(voterNames) .containsExactly( twoMinutesAgoVote.getName().getValue(), oneMinutesAgoVote.getName().getValue(),