Skip to content

Commit

Permalink
[test] : 스크랩 전체 조회 Controller/Repository 테스트 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
dudxo committed Aug 16, 2024
1 parent 0c5ccea commit 2dd8cd1
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,18 @@
import com.dnd.gongmuin.answer.repository.AnswerRepository;
import com.dnd.gongmuin.common.fixture.AnswerFixture;
import com.dnd.gongmuin.common.fixture.InteractionCountFixture;
import com.dnd.gongmuin.common.fixture.InteractionFixture;
import com.dnd.gongmuin.common.fixture.MemberFixture;
import com.dnd.gongmuin.common.fixture.QuestionPostFixture;
import com.dnd.gongmuin.common.support.ApiTestSupport;
import com.dnd.gongmuin.member.domain.Member;
import com.dnd.gongmuin.member.dto.request.UpdateMemberProfileRequest;
import com.dnd.gongmuin.member.repository.MemberRepository;
import com.dnd.gongmuin.post_interaction.domain.Interaction;
import com.dnd.gongmuin.post_interaction.domain.InteractionCount;
import com.dnd.gongmuin.post_interaction.domain.InteractionType;
import com.dnd.gongmuin.post_interaction.repository.InteractionCountRepository;
import com.dnd.gongmuin.post_interaction.repository.InteractionRepository;
import com.dnd.gongmuin.question_post.domain.QuestionPost;
import com.dnd.gongmuin.question_post.repository.QuestionPostRepository;

Expand All @@ -45,6 +48,9 @@ class MemberControllerTest extends ApiTestSupport {
@Autowired
InteractionCountRepository interactionCountRepository;

@Autowired
InteractionRepository interactionRepository;

@AfterEach
void tearDown() {
answerRepository.deleteAll();
Expand Down Expand Up @@ -163,4 +169,37 @@ void getAnsweredQuestionPostsByMember() throws Exception {
.andExpect(jsonPath("$.content[1].questionPostId").value(questionPost2.getId()))
.andExpect(jsonPath("$.content[1].answerId").value(answer1.getId()));
}

@DisplayName("로그인 된 회원의 스크랩 질문을 전체 조회한다.")
@Test
void getBookmarksByMember() throws Exception {
// given
Member member = MemberFixture.member2();
Member savedMember = memberRepository.save(member);

QuestionPost questionPost1 = QuestionPostFixture.questionPost(loginMember, "첫 번째 게시글입니다.");
QuestionPost questionPost2 = QuestionPostFixture.questionPost(savedMember, "두 번째 게시글입니다.");
QuestionPost questionPost3 = QuestionPostFixture.questionPost(loginMember, "세 번째 게시글입니다.");
questionPostRepository.saveAll(List.of(questionPost1, questionPost2, questionPost3));

Interaction interaction1 = InteractionFixture.interaction2(InteractionType.SAVED, loginMember.getId(),
questionPost1.getId());
Interaction interaction3 = InteractionFixture.interaction2(InteractionType.RECOMMEND, loginMember.getId(),
questionPost2.getId());
Interaction interaction2 = InteractionFixture.interaction2(InteractionType.SAVED, loginMember.getId(),
questionPost3.getId());
Interaction interaction4 = InteractionFixture.interaction2(InteractionType.RECOMMEND, loginMember.getId(),
questionPost3.getId());
interactionRepository.saveAll(List.of(interaction1, interaction2, interaction3, interaction4));

// when // then
mockMvc.perform(get("/api/members/post-interaction/bookmarks")
.header(AUTHORIZATION, accessToken)
)
.andExpect(status().isOk())
.andDo(MockMvcResultHandlers.print())
.andExpect(jsonPath("$.size").value(2))
.andExpect(jsonPath("$.content[0].questionPostId").value(questionPost3.getId()))
.andExpect(jsonPath("$.content[1].questionPostId").value(questionPost1.getId()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,19 @@
import com.dnd.gongmuin.answer.repository.AnswerRepository;
import com.dnd.gongmuin.common.fixture.AnswerFixture;
import com.dnd.gongmuin.common.fixture.InteractionCountFixture;
import com.dnd.gongmuin.common.fixture.InteractionFixture;
import com.dnd.gongmuin.common.fixture.MemberFixture;
import com.dnd.gongmuin.common.fixture.QuestionPostFixture;
import com.dnd.gongmuin.common.support.DataJpaTestSupport;
import com.dnd.gongmuin.member.domain.Member;
import com.dnd.gongmuin.member.dto.response.AnsweredQuestionPostsByMemberResponse;
import com.dnd.gongmuin.member.dto.response.BookmarksByMemberResponse;
import com.dnd.gongmuin.member.dto.response.QuestionPostsByMemberResponse;
import com.dnd.gongmuin.post_interaction.domain.Interaction;
import com.dnd.gongmuin.post_interaction.domain.InteractionCount;
import com.dnd.gongmuin.post_interaction.domain.InteractionType;
import com.dnd.gongmuin.post_interaction.repository.InteractionCountRepository;
import com.dnd.gongmuin.post_interaction.repository.InteractionRepository;
import com.dnd.gongmuin.question_post.domain.QuestionPost;
import com.dnd.gongmuin.question_post.repository.QuestionPostRepository;

Expand All @@ -47,6 +51,9 @@ class MemberRepositoryTest extends DataJpaTestSupport {
@Autowired
InteractionCountRepository interactionCountRepository;

@Autowired
InteractionRepository interactionRepository;

@AfterEach
void tearDown() {
answerRepository.deleteAll();
Expand Down Expand Up @@ -91,8 +98,8 @@ void getQuestionPostsByMember() {
() -> assertThat(postsByMember).hasSize(2),
() -> assertThat(postsByMember).extracting(QuestionPostsByMemberResponse::title)
.containsExactly(
"두 번째 게시글입니다.",
"첫 번째 게시글입니다."
questionPost2.getTitle(),
questionPost1.getTitle()
),
() -> assertThat(postsByMember).extracting(QuestionPostsByMemberResponse::questionPostId)
.containsExactly(
Expand Down Expand Up @@ -139,8 +146,8 @@ void getQuestionPostsByMemberWithInteractionCount() {
),
() -> assertThat(postsByMember).extracting(QuestionPostsByMemberResponse::title)
.containsExactly(
"두 번째 게시글입니다.",
"첫 번째 게시글입니다."
questionPost2.getTitle(),
questionPost1.getTitle()
),
() -> assertThat(postsByMember).extracting(QuestionPostsByMemberResponse::savedTotalCount)
.containsExactly(
Expand Down Expand Up @@ -183,8 +190,8 @@ void getAnsweredQuestionPostsByMember() {
() -> assertThat(postsByMember).hasSize(2),
() -> assertThat(postsByMember).extracting(AnsweredQuestionPostsByMemberResponse::title)
.containsExactly(
"세 번째 게시글입니다.",
"첫 번째 게시글입니다."
questionPost3.getTitle(),
questionPost1.getTitle()
),
() -> assertThat(postsByMember).extracting(AnsweredQuestionPostsByMemberResponse::questionPostId)
.containsExactly(
Expand Down Expand Up @@ -237,8 +244,8 @@ void getAnsweredQuestionPostsByMemberWithInteractionCount() {
() -> assertThat(postsByMember).hasSize(2),
() -> assertThat(postsByMember).extracting(AnsweredQuestionPostsByMemberResponse::title)
.containsExactly(
"세 번째 게시글입니다.",
"첫 번째 게시글입니다."
questionPost3.getTitle(),
questionPost1.getTitle()
),
() -> assertThat(postsByMember).extracting(AnsweredQuestionPostsByMemberResponse::questionPostId)
.containsExactly(
Expand Down Expand Up @@ -329,19 +336,6 @@ void whenAnsweredQuestionPosts_thenGetQuestionPostsAtRecently() {

// then
Assertions.assertAll(
() -> postsByMember.forEach(post -> {
System.out.println("QuestionPostId: " + post.questionPostId());
System.out.println("Title: " + post.title());
System.out.println("Content: " + post.content());
System.out.println("JobGroup: " + post.jobGroup());
System.out.println("Reward: " + post.reward());
System.out.println("UpdatedAt: " + post.questionPostUpdatedAt());
System.out.println("IsChosen: " + post.isChosen());
System.out.println("answerId: " + post.answerId());
System.out.println("post.answerContent() = " + post.answerContent());
System.out.println("post.answerUpdatedAt() = " + post.answerUpdatedAt());
System.out.println("----------");
}),
() -> assertThat(postsByMember).hasSize(1),
() -> assertThat(postsByMember).extracting(AnsweredQuestionPostsByMemberResponse::answerId)
.containsExactly(
Expand All @@ -358,6 +352,49 @@ void whenAnsweredQuestionPosts_thenGetQuestionPostsAtRecently() {
);
}

@DisplayName("회원의 스크랩 질문 목록을 조회힌다.")
@Test
void getBookmarksByMember() {
// given
Member member1 = MemberFixture.member();
Member member2 = MemberFixture.member2();
memberRepository.saveAll(List.of(member1, member2));

QuestionPost questionPost1 = QuestionPostFixture.questionPost(member1, "첫 번째 게시글입니다.");
QuestionPost questionPost2 = QuestionPostFixture.questionPost(member2, "두 번째 게시글입니다.");
QuestionPost questionPost3 = QuestionPostFixture.questionPost(member2, "세 번째 게시글입니다.");
questionPostRepository.saveAll(List.of(questionPost1, questionPost2, questionPost3));

Interaction interaction1 = InteractionFixture.interaction2(InteractionType.SAVED, member1.getId(),
questionPost1.getId());
Interaction interaction2 = InteractionFixture.interaction2(InteractionType.SAVED, member1.getId(),
questionPost2.getId());
Interaction interaction3 = InteractionFixture.interaction2(InteractionType.RECOMMEND, member1.getId(),
questionPost2.getId());
Interaction interaction4 = InteractionFixture.interaction2(InteractionType.RECOMMEND, member1.getId(),
questionPost3.getId());
interactionRepository.saveAll(List.of(interaction1, interaction2, interaction3, interaction4));

// when
Slice<BookmarksByMemberResponse> bookmarksByMember = memberRepository.getBookmarksByMember(member1,
pageRequest);

// then
Assertions.assertAll(
() -> assertThat(bookmarksByMember).hasSize(2),
() -> assertThat(bookmarksByMember).extracting(BookmarksByMemberResponse::questionPostId)
.containsExactly(
questionPost2.getId(),
questionPost1.getId()
),
() -> assertThat(bookmarksByMember).extracting(BookmarksByMemberResponse::title)
.containsExactly(
questionPost2.getTitle(),
questionPost1.getTitle()
)
);
}

private Member createMember(String nickname, String socialName, String socialEmail, String officialEmail) {
return Member.builder()
.nickname(nickname)
Expand Down

0 comments on commit 2dd8cd1

Please sign in to comment.