From 426fa2a01f99dce7cffdc3d3cb797d19653ec0dc Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Wed, 29 Jan 2025 14:38:18 +0900 Subject: [PATCH] =?UTF-8?q?test:=20=EA=B2=8C=EC=8B=9C=EA=B8=80=20=EC=A0=84?= =?UTF-8?q?=EC=B2=B4=20=EC=A1=B0=ED=9A=8C=20=EA=B4=80=EB=A0=A8=20=ED=86=B5?= =?UTF-8?q?=ED=95=A9=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../board/service/BoardServiceTest.java | 72 +++++++++++++++++++ .../integration/BaseIntegrationTest.java | 49 +++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 src/test/java/com/example/solidconnection/board/service/BoardServiceTest.java diff --git a/src/test/java/com/example/solidconnection/board/service/BoardServiceTest.java b/src/test/java/com/example/solidconnection/board/service/BoardServiceTest.java new file mode 100644 index 000000000..98c2b28fa --- /dev/null +++ b/src/test/java/com/example/solidconnection/board/service/BoardServiceTest.java @@ -0,0 +1,72 @@ +package com.example.solidconnection.board.service; + +import com.example.solidconnection.post.domain.Post; +import com.example.solidconnection.post.dto.BoardFindPostResponse; +import com.example.solidconnection.support.integration.BaseIntegrationTest; +import com.example.solidconnection.type.BoardCode; +import com.example.solidconnection.type.PostCategory; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import java.time.ZonedDateTime; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +@DisplayName("게시판 서비스 테스트") +class BoardServiceTest extends BaseIntegrationTest { + + @Autowired + private BoardService boardService; + + @Test + void 게시판_코드와_카테고리로_게시글_목록을_조회한다() { + // given + List posts = List.of( + 미주권_자유게시글, 아시아권_자유게시글, 유럽권_자유게시글, 자유게시판_자유게시글, + 미주권_질문게시글, 아시아권_질문게시글, 유럽권_질문게시글, 자유게시판_질문게시글 + ); + List expectedPosts = posts.stream() + .filter(post -> post.getCategory().equals(PostCategory.자유) && post.getBoard().getCode().equals(BoardCode.FREE.name())) + .toList(); + List expectedResponses = BoardFindPostResponse.from(expectedPosts); + + // when + List actualResponses = boardService.findPostsByCodeAndPostCategory( + BoardCode.FREE.name(), + PostCategory.자유.name() + ); + + // then + assertThat(actualResponses) + .usingRecursiveComparison() + .ignoringFieldsOfTypes(ZonedDateTime.class) + .isEqualTo(expectedResponses); + } + + @Test + void 전체_카테고리로_조회시_해당_게시판의_모든_게시글을_조회한다() { + // given + List posts = List.of( + 미주권_자유게시글, 아시아권_자유게시글, 유럽권_자유게시글, 자유게시판_자유게시글, + 미주권_질문게시글, 아시아권_질문게시글, 유럽권_질문게시글, 자유게시판_질문게시글 + ); + List expectedPosts = posts.stream() + .filter(post -> post.getBoard().getCode().equals(BoardCode.FREE.name())) + .toList(); + List expectedResponses = BoardFindPostResponse.from(expectedPosts); + + // when + List actualResponses = boardService.findPostsByCodeAndPostCategory( + BoardCode.FREE.name(), + PostCategory.전체.name() + ); + + // then + assertThat(actualResponses) + .usingRecursiveComparison() + .ignoringFieldsOfTypes(ZonedDateTime.class) + .isEqualTo(expectedResponses); + } +} diff --git a/src/test/java/com/example/solidconnection/support/integration/BaseIntegrationTest.java b/src/test/java/com/example/solidconnection/support/integration/BaseIntegrationTest.java index f588b87ae..054cf6851 100644 --- a/src/test/java/com/example/solidconnection/support/integration/BaseIntegrationTest.java +++ b/src/test/java/com/example/solidconnection/support/integration/BaseIntegrationTest.java @@ -3,8 +3,12 @@ import com.example.solidconnection.board.domain.Board; import com.example.solidconnection.board.repository.BoardRepository; import com.example.solidconnection.entity.Country; +import com.example.solidconnection.entity.PostImage; import com.example.solidconnection.entity.Region; +import com.example.solidconnection.post.domain.Post; +import com.example.solidconnection.post.repository.PostRepository; import com.example.solidconnection.repositories.CountryRepository; +import com.example.solidconnection.repositories.PostImageRepository; import com.example.solidconnection.repositories.RegionRepository; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.repository.SiteUserRepository; @@ -12,6 +16,7 @@ import com.example.solidconnection.support.TestContainerSpringBootTest; import com.example.solidconnection.type.Gender; import com.example.solidconnection.type.LanguageTestType; +import com.example.solidconnection.type.PostCategory; import com.example.solidconnection.type.PreparationStatus; import com.example.solidconnection.type.Role; import com.example.solidconnection.university.domain.LanguageRequirement; @@ -76,6 +81,15 @@ public abstract class BaseIntegrationTest { public static Board 유럽권; public static Board 자유게시판; + public static Post 미주권_자유게시글; + public static Post 아시아권_자유게시글; + public static Post 유럽권_자유게시글; + public static Post 자유게시판_자유게시글; + public static Post 미주권_질문게시글; + public static Post 아시아권_질문게시글; + public static Post 유럽권_질문게시글; + public static Post 자유게시판_질문게시글; + @Autowired private SiteUserRepository siteUserRepository; @@ -97,6 +111,12 @@ public abstract class BaseIntegrationTest { @Autowired private BoardRepository boardRepository; + @Autowired + private PostRepository postRepository; + + @Autowired + private PostImageRepository postImageRepository; + @Value("${university.term}") public String term; @@ -109,6 +129,7 @@ public void setUpBaseData() { setUpUniversityInfos(); setUpLanguageRequirements(); setUpBoards(); + setUpPosts(); } private void setUpSiteUsers() { @@ -337,6 +358,17 @@ private void setUpBoards() { 자유게시판 = boardRepository.save(new Board(FREE.name(), "자유게시판")); } + private void setUpPosts() { + 미주권_자유게시글 = createPost(미주권, 테스트유저_1, "미주권 자유게시글", "미주권 자유게시글 내용", PostCategory.자유); + 아시아권_자유게시글 = createPost(아시아권, 테스트유저_2, "아시아권 자유게시글", "아시아권 자유게시글 내용", PostCategory.자유); + 유럽권_자유게시글 = createPost(유럽권, 테스트유저_1, "유럽권 자유게시글", "유럽권 자유게시글 내용", PostCategory.자유); + 자유게시판_자유게시글 = createPost(자유게시판, 테스트유저_2, "자유게시판 자유게시글", "자유게시판 자유게시글 내용", PostCategory.자유); + 미주권_질문게시글 = createPost(미주권, 테스트유저_1, "미주권 질문게시글", "미주권 질문게시글 내용", PostCategory.질문); + 아시아권_질문게시글 = createPost(아시아권, 테스트유저_2, "아시아권 질문게시글", "아시아권 질문게시글 내용", PostCategory.질문); + 유럽권_질문게시글 = createPost(유럽권, 테스트유저_1, "유럽권 질문게시글", "유럽권 질문게시글 내용", PostCategory.질문); + 자유게시판_질문게시글 = createPost(자유게시판, 테스트유저_2, "자유게시판 질문게시글", "자유게시판 질문게시글 내용", PostCategory.질문); + } + private void saveLanguageTestRequirement( UniversityInfoForApply universityInfoForApply, LanguageTestType testType, @@ -351,4 +383,21 @@ private void saveLanguageTestRequirement( universityInfoForApplyRepository.save(universityInfoForApply); languageRequirementRepository.save(languageRequirement); } + + private Post createPost(Board board, SiteUser siteUser, String title, String content, PostCategory category) { + Post post = new Post( + title, + content, + false, + 0L, + 0L, + category + ); + post.setBoardAndSiteUser(board, siteUser); + Post savedPost = postRepository.save(post); + PostImage postImage = new PostImage("imageUrl"); + postImage.setPost(savedPost); + postImageRepository.save(postImage); + return savedPost; + } }