Skip to content

Commit

Permalink
test: (#80) 회원본인이 투표한 게시글 목록 조회 테스트 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
aiaiaiai1 committed Aug 3, 2023
1 parent 3683c66 commit de11ba4
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 64 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@

import static com.votogether.fixtures.MemberFixtures.MALE_30;
import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.startsWith;
import static org.hamcrest.Matchers.stringContainsInOrder;
import static org.junit.jupiter.api.Assertions.assertAll;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyList;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.eq;
Expand All @@ -17,8 +16,8 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.votogether.domain.member.entity.Member;
import com.votogether.domain.member.service.MemberService;
import com.votogether.domain.post.dto.request.PostOptionCreateRequest;
import com.votogether.domain.post.dto.request.PostCreateRequest;
import com.votogether.domain.post.dto.request.PostOptionCreateRequest;
import com.votogether.domain.post.dto.response.PostResponse;
import com.votogether.domain.post.dto.response.VoteCountForAgeGroupResponse;
import com.votogether.domain.post.dto.response.VoteOptionStatisticsResponse;
Expand All @@ -44,6 +43,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpStatus;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

Expand Down Expand Up @@ -297,4 +297,40 @@ void getVoteOptionStatistics() {
assertThat(result).usingRecursiveComparison().isEqualTo(response);
}

@Test
@DisplayName("회원본인이 투표한 게시글 목록을 조회한다.")
void getPostsVotedByMember() {
// given
PostBody postBody = PostBody.builder()
.title("title")
.content("content")
.build();

Post post = Post.builder()
.writer(MALE_30.get())
.postBody(postBody)
.deadline(LocalDateTime.now().plusDays(3L))
.build();

PostResponse postResponse = PostResponse.of(post, MALE_30.get());

given(postService.getPostsVotedByMember(anyInt(), any(), any(), any(Member.class)))
.willReturn(List.of(postResponse));

// when
List<PostResponse> result = RestAssuredMockMvc.given().log().all()
.param("page", 0)
.param("postClosingType", PostClosingType.PROGRESS)
.param("postSortType", PostSortType.LATEST)
.when().get("/posts/votes/me")
.then().log().all()
.status(HttpStatus.OK)
.extract()
.as(new ParameterizedTypeReference<List<PostResponse>>() {
}.getType());

// then
assertThat(result.get(0)).usingRecursiveComparison().isEqualTo(postResponse);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
import com.votogether.domain.vote.entity.Vote;
import com.votogether.domain.vote.repository.VoteRepository;
import com.votogether.fixtures.MemberFixtures;
import jakarta.persistence.EntityManager;
import java.time.LocalDateTime;
import java.util.List;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -128,9 +128,8 @@ void countByMember() {
@DisplayName("회원이 투표한 게시글 목록을 조회한다.")
class findPostsVotedByMember {

@Test
@DisplayName("마감된 게시글 목록만 가져온다.")
void findClosedPostsVotedByMember() {
@DisplayName("마감된 게시글 목록을 최신순으로 가져온다.")
void findClosedPostsVotedByMember() throws InterruptedException {
// given
Member writer = memberRepository.save(MemberFixtures.MALE_20.get());
Member member = memberRepository.save(MemberFixtures.MALE_LATE_10.get());
Expand All @@ -155,8 +154,8 @@ void findClosedPostsVotedByMember() {
.writer(writer)
.postBody(PostBody.builder().title("title").content("content").build())
.deadline(LocalDateTime.of(1000, 7, 12, 0, 0))
.build()
);
.build());

PostOption postOption1 = postOptionRepository.save(
PostOption.builder()
.post(closedPost)
Expand All @@ -165,23 +164,43 @@ void findClosedPostsVotedByMember() {
.build()
);

Thread.sleep(10);

Post closedPost1 = postRepository.save(
Post.builder()
.writer(writer)
.postBody(PostBody.builder().title("title").content("content").build())
.deadline(LocalDateTime.of(1001, 7, 12, 0, 0))
.build()
);
PostOption postOption2 = postOptionRepository.save(
PostOption.builder()
.post(closedPost1)
.sequence(1)
.content("치킨")
.build()
);

voteRepository.save(Vote.builder().member(member).postOption(postOption).build());
voteRepository.save(Vote.builder().member(member).postOption(postOption1).build());
voteRepository.save(Vote.builder().member(member).postOption(postOption2).build());

// when
PageRequest pageRequest = PageRequest.of(0, 10, PostSortType.LATEST.getSort());
PageRequest pageRequest = PageRequest.of(0, 10, PostSortType.LATEST.getVoteBaseSort() );
Slice<Post> posts = postRepository.findClosedPostsVotedByMember(member, pageRequest);

// then
assertThat(posts).hasSize(1);
assertThat(posts).hasSize(2);
assertThat(posts.getContent().get(0)).usingRecursiveComparison().isEqualTo(closedPost1);
}

@Test
@DisplayName("마감되지 않은 게시글 목록만 가져온다.")
@DisplayName("마감되지 않은 게시글 목록을 투표순으로 가져온다.")
void findOpenPostsVotedByMember() {
// given
Member writer = memberRepository.save(MemberFixtures.MALE_20.get());
Member member = memberRepository.save(MemberFixtures.MALE_LATE_10.get());
Member member1 = memberRepository.save(MemberFixtures.MALE_60.get());

Post openPost = postRepository.save(
Post.builder()
Expand All @@ -198,14 +217,29 @@ void findOpenPostsVotedByMember() {
.build()
);

Post openPost1 = postRepository.save(
Post.builder()
.writer(writer)
.postBody(PostBody.builder().title("title").content("content").build())
.deadline(LocalDateTime.of(3001, 7, 12, 0, 0))
.build()
);
PostOption postOption1 = postOptionRepository.save(
PostOption.builder()
.post(openPost1)
.sequence(1)
.content("치킨")
.build()
);

Post closedPost = postRepository.save(
Post.builder()
.writer(writer)
.postBody(PostBody.builder().title("title").content("content").build())
.deadline(LocalDateTime.of(1000, 7, 12, 0, 0))
.build()
);
PostOption postOption1 = postOptionRepository.save(
PostOption postOption2 = postOptionRepository.save(
PostOption.builder()
.post(closedPost)
.sequence(1)
Expand All @@ -215,13 +249,16 @@ void findOpenPostsVotedByMember() {

voteRepository.save(Vote.builder().member(member).postOption(postOption).build());
voteRepository.save(Vote.builder().member(member).postOption(postOption1).build());
voteRepository.save(Vote.builder().member(member1).postOption(postOption1).build());
voteRepository.save(Vote.builder().member(member).postOption(postOption2).build());

// when
PageRequest pageRequest = PageRequest.of(0, 10, PostSortType.LATEST.getSort());
PageRequest pageRequest = PageRequest.of(0, 10, PostSortType.HOT.getVoteBaseSort());
Slice<Post> posts = postRepository.findOpenPostsVotedByMember(member, pageRequest);

// then
assertThat(posts).hasSize(1);
assertThat(posts).hasSize(2);
assertThat(posts.getContent().get(0)).usingRecursiveComparison().isEqualTo(openPost1);
}

@Test
Expand Down Expand Up @@ -265,7 +302,7 @@ void findPostsVotedByMember() {
voteRepository.save(Vote.builder().member(member).postOption(postOption1).build());

// when
PageRequest pageRequest = PageRequest.of(0, 10, PostSortType.LATEST.getSort());
PageRequest pageRequest = PageRequest.of(0, 10);
Slice<Post> posts = postRepository.findPostsVotedByMember(member, pageRequest);

// then
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -365,53 +365,6 @@ void getVoteOptionStatistics() {

}

@Test
@DisplayName("회원 자신이 투표한 게시글 목록을 조회한다.")
void getPostsVotedOn() {
// given
Member member = memberRepository.save(MemberFixtures.FEMALE_20.get());
Member writer = memberRepository.save(MALE_20.get());

Post postA = postRepository.save(
Post.builder()
.writer(writer)
.postBody(PostBody.builder().title("title").content("content").build())
.deadline(LocalDateTime.of(2100, 7, 12, 0, 0))
.build()
);
Post postB = postRepository.save(
Post.builder()
.writer(writer)
.postBody(PostBody.builder().title("title1").content("content2").build())
.deadline(LocalDateTime.of(2100, 7, 12, 0, 0))
.build()
);

PostOption postOptionOfPostA = postOptionRepository.save(
PostOption.builder()
.post(postA)
.sequence(1)
.content("치킨")
.build()
);
PostOption postOptionOfPostB = postOptionRepository.save(
PostOption.builder()
.post(postB)
.sequence(1)
.content("치킨")
.build()
);

voteRepository.save(Vote.builder().member(member).postOption(postOptionOfPostA).build());
voteRepository.save(Vote.builder().member(member).postOption(postOptionOfPostB).build());

// when
List<Post> postsVotedOn = postService.getPostsVotedOn(member);

// then
assertThat(postsVotedOn).hasSize(2);
}

@Test
@DisplayName("정렬 유형 및 마감 유형별로 모든 게시물 가져온다")
void getAllPostBySortTypeAndClosingType() {
Expand Down Expand Up @@ -555,4 +508,3 @@ void getAllPostBySortTypeAndClosingType() {
}

}

0 comments on commit de11ba4

Please sign in to comment.