From 654233c3567c8886013d1f69b4ae3c26ce08927b Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Tue, 22 Apr 2025 14:33:59 +0900 Subject: [PATCH 01/18] =?UTF-8?q?refactor:=20=EB=A9=94=EC=84=9C=EB=93=9C?= =?UTF-8?q?=20=EC=B2=B4=EC=9D=B4=EB=8B=9D=EC=9C=BC=EB=A1=9C=20=EB=8C=80?= =?UTF-8?q?=ED=95=99=20test=20fixture=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../support/fixture/BuilderSupporter.java | 107 ++++++++++++ .../support/fixture/UniversityFixture.java | 154 ++++++++++++++++++ 2 files changed, 261 insertions(+) create mode 100644 src/test/java/com/example/solidconnection/support/fixture/BuilderSupporter.java create mode 100644 src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java diff --git a/src/test/java/com/example/solidconnection/support/fixture/BuilderSupporter.java b/src/test/java/com/example/solidconnection/support/fixture/BuilderSupporter.java new file mode 100644 index 000000000..f8676a769 --- /dev/null +++ b/src/test/java/com/example/solidconnection/support/fixture/BuilderSupporter.java @@ -0,0 +1,107 @@ +package com.example.solidconnection.support.fixture; + +import com.example.solidconnection.application.repository.ApplicationRepository; +import com.example.solidconnection.community.board.repository.BoardRepository; +import com.example.solidconnection.community.post.repository.PostImageRepository; +import com.example.solidconnection.community.post.repository.PostRepository; +import com.example.solidconnection.repositories.CountryRepository; +import com.example.solidconnection.repositories.RegionRepository; +import com.example.solidconnection.score.repository.GpaScoreRepository; +import com.example.solidconnection.score.repository.LanguageTestScoreRepository; +import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import com.example.solidconnection.university.repository.LanguageRequirementRepository; +import com.example.solidconnection.university.repository.UniversityInfoForApplyRepository; +import com.example.solidconnection.university.repository.UniversityRepository; +import org.springframework.stereotype.Component; + +@Component +public class BuilderSupporter { + + private final SiteUserRepository siteUserRepository; + private final RegionRepository regionRepository; + private final CountryRepository countryRepository; + private final UniversityRepository universityRepository; + private final UniversityInfoForApplyRepository universityInfoForApplyRepository; + private final LanguageRequirementRepository languageRequirementRepository; + private final ApplicationRepository applicationRepository; + private final GpaScoreRepository gpaScoreRepository; + private final LanguageTestScoreRepository languageTestScoreRepository; + private final BoardRepository boardRepository; + private final PostRepository postRepository; + private final PostImageRepository postImageRepository; + + public BuilderSupporter( + SiteUserRepository siteUserRepository, + RegionRepository regionRepository, + CountryRepository countryRepository, + UniversityRepository universityRepository, + UniversityInfoForApplyRepository universityInfoForApplyRepository, + LanguageRequirementRepository languageRequirementRepository, + ApplicationRepository applicationRepository, + GpaScoreRepository gpaScoreRepository, + LanguageTestScoreRepository languageTestScoreRepository, + BoardRepository boardRepository, + PostRepository postRepository, + PostImageRepository postImageRepository) { + this.siteUserRepository = siteUserRepository; + this.regionRepository = regionRepository; + this.countryRepository = countryRepository; + this.universityRepository = universityRepository; + this.universityInfoForApplyRepository = universityInfoForApplyRepository; + this.languageRequirementRepository = languageRequirementRepository; + this.applicationRepository = applicationRepository; + this.gpaScoreRepository = gpaScoreRepository; + this.languageTestScoreRepository = languageTestScoreRepository; + this.boardRepository = boardRepository; + this.postRepository = postRepository; + this.postImageRepository = postImageRepository; + } + + public SiteUserRepository siteUserRepository() { + return siteUserRepository; + } + + public RegionRepository regionRepository() { + return regionRepository; + } + + public CountryRepository countryRepository() { + return countryRepository; + } + + public UniversityRepository universityRepository() { + return universityRepository; + } + + public UniversityInfoForApplyRepository universityInfoForApplyRepository() { + return universityInfoForApplyRepository; + } + + public LanguageRequirementRepository languageRequirementRepository() { + return languageRequirementRepository; + } + + public ApplicationRepository applicationRepository() { + return applicationRepository; + } + + public GpaScoreRepository gpaScoreRepository() { + return gpaScoreRepository; + } + + public LanguageTestScoreRepository languageTestScoreRepository() { + return languageTestScoreRepository; + } + + public BoardRepository boardRepository() { + return boardRepository; + } + + public PostRepository postRepository() { + return postRepository; + } + + public PostImageRepository postImageRepository() { + return postImageRepository; + } +} diff --git a/src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java b/src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java new file mode 100644 index 000000000..0769b950d --- /dev/null +++ b/src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java @@ -0,0 +1,154 @@ +package com.example.solidconnection.support.fixture; + +import com.example.solidconnection.custom.exception.CustomException; +import com.example.solidconnection.entity.Country; +import com.example.solidconnection.entity.Region; +import com.example.solidconnection.type.LanguageTestType; +import com.example.solidconnection.type.SemesterAvailableForDispatch; +import com.example.solidconnection.type.TuitionFeeType; +import com.example.solidconnection.university.domain.LanguageRequirement; +import com.example.solidconnection.university.domain.University; +import com.example.solidconnection.university.domain.UniversityInfoForApply; + +import java.util.HashSet; +import java.util.Set; + +import static com.example.solidconnection.custom.exception.ErrorCode.COUNTRY_NOT_FOUND_BY_KOREAN_NAME; +import static com.example.solidconnection.custom.exception.ErrorCode.REGION_NOT_FOUND_BY_KOREAN_NAME; +import static com.example.solidconnection.custom.exception.ErrorCode.UNIVERSITY_INFO_FOR_APPLY_NOT_FOUND; + +public final class UniversityFixture { + + private final BuilderSupporter bs; + + private Region region; + private Country country; + private University university; + private UniversityInfoForApply universityInfoForApply; + private Set languageRequirements = new HashSet<>(); + + public UniversityFixture(BuilderSupporter bs) { + this.bs = bs; + } + + public UniversityFixture 지역을_생성한다(String code, String koreanName) { + Region region = new Region(code, koreanName); + this.region = bs.regionRepository().save(region); + return this; + } + + public UniversityFixture 국가를_생성한다(String code, String koreanName) { + if (this.region == null) { + throw new CustomException(REGION_NOT_FOUND_BY_KOREAN_NAME); + } + Country country = new Country(code, koreanName, this.region); + this.country = bs.countryRepository().save(country); + return this; + } + + public UniversityFixture 대학을_생성한다( + String koreanName, + String englishName, + String formatName, + String homepageUrl, + String englishCourseUrl, + String accommodationUrl, + String logoImageUrl, + String backgroundImageUrl, + String detailsForLocal) { + if (this.country == null) { + throw new CustomException(COUNTRY_NOT_FOUND_BY_KOREAN_NAME); + } + University university = new University( + null, + koreanName, + englishName, + formatName, + homepageUrl, + englishCourseUrl, + accommodationUrl, + logoImageUrl, + backgroundImageUrl, + detailsForLocal, + this.country, + this.region); + this.university = bs.universityRepository().save(university); + return this; + } + + public UniversityFixture 대학_지원_정보를_생성한다( + String term, + String koreanName, + Integer studentCapacity, + TuitionFeeType tuitionFeeType, + SemesterAvailableForDispatch semesterAvailableForDispatch, + String semesterRequirement, + String detailsForLanguage, + String gpaRequirement, + String gpaRequirementCriteria, + String detailsForApply, + String detailsForMajor, + String detailsForAccommodation, + String detailsForEnglishCourse, + String details) { + if (this.university == null) { + throw new CustomException(UNIVERSITY_INFO_FOR_APPLY_NOT_FOUND); + } + UniversityInfoForApply universityInfoForApply = new UniversityInfoForApply( + null, + term, + koreanName, + studentCapacity, + tuitionFeeType, + semesterAvailableForDispatch, + semesterRequirement, + detailsForLanguage, + gpaRequirement, + gpaRequirementCriteria, + detailsForApply, + detailsForMajor, + detailsForAccommodation, + detailsForEnglishCourse, + details, + new HashSet<>(), + this.university); + this.universityInfoForApply = bs.universityInfoForApplyRepository().save(universityInfoForApply); + return this; + } + + public UniversityFixture 언어_요구사항을_추가한다(LanguageTestType testType, String minScore) { + if (this.universityInfoForApply == null) { + throw new CustomException(UNIVERSITY_INFO_FOR_APPLY_NOT_FOUND); + } + LanguageRequirement languageRequirement = new LanguageRequirement( + null, + testType, + minScore, + this.universityInfoForApply); + this.universityInfoForApply.addLanguageRequirements(languageRequirement); + bs.universityInfoForApplyRepository().save(this.universityInfoForApply); + LanguageRequirement saved = bs.languageRequirementRepository().save(languageRequirement); + this.languageRequirements.add(saved); + return this; + } + + public Region 지역() { + return region; + } + + public Country 국가() { + return country; + } + + public University 대학() { + return university; + } + + public UniversityInfoForApply 대학_지원_정보() { + return universityInfoForApply; + } + + public Set 언어_요구사항들() { + return languageRequirements; + } +} From 094b7af1a94c1b1a6f712fac52731372abd688e6 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Tue, 22 Apr 2025 14:34:16 +0900 Subject: [PATCH 02/18] =?UTF-8?q?refactor:=20UniversityQueryServiceTest?= =?UTF-8?q?=EC=97=90=20=EC=9E=84=EC=8B=9C=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/UniversityQueryServiceTest.java | 108 ++++++++++++++---- 1 file changed, 84 insertions(+), 24 deletions(-) diff --git a/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java b/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java index 1cd0d755f..17ab2823b 100644 --- a/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java +++ b/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java @@ -1,8 +1,14 @@ package com.example.solidconnection.university.service; import com.example.solidconnection.custom.exception.CustomException; -import com.example.solidconnection.support.integration.BaseIntegrationTest; +import com.example.solidconnection.entity.Country; +import com.example.solidconnection.entity.Region; +import com.example.solidconnection.support.TestContainerSpringBootTest; +import com.example.solidconnection.support.fixture.BuilderSupporter; +import com.example.solidconnection.support.fixture.UniversityFixture; import com.example.solidconnection.type.LanguageTestType; +import com.example.solidconnection.university.domain.University; +import com.example.solidconnection.university.domain.UniversityInfoForApply; import com.example.solidconnection.university.dto.UniversityDetailResponse; import com.example.solidconnection.university.dto.LanguageRequirementResponse; import com.example.solidconnection.university.dto.UniversityInfoForApplyPreviewResponse; @@ -10,33 +16,87 @@ import com.example.solidconnection.university.repository.UniversityInfoForApplyRepository; import com.example.solidconnection.university.repository.custom.UniversityFilterRepository; import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.mock.mockito.SpyBean; import java.util.List; +import static com.example.solidconnection.type.SemesterAvailableForDispatch.ONE_SEMESTER; +import static com.example.solidconnection.type.TuitionFeeType.HOME_UNIVERSITY_PAYMENT; import static org.assertj.core.api.AssertionsForClassTypes.assertThatExceptionOfType; import static com.example.solidconnection.custom.exception.ErrorCode.UNIVERSITY_INFO_FOR_APPLY_NOT_FOUND; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.BDDMockito.then; import static org.mockito.Mockito.times; +@TestContainerSpringBootTest @DisplayName("대학교 조회 서비스 테스트") -class UniversityQueryServiceTest extends BaseIntegrationTest { +class UniversityQueryServiceTest { @Autowired private UniversityQueryService universityQueryService; + @Autowired + private BuilderSupporter bs; + @SpyBean private UniversityFilterRepository universityFilterRepository; @SpyBean private UniversityInfoForApplyRepository universityInfoForApplyRepository; + private Region 영미권; + private Country 미국; + private University 영미권_미국_괌대학; + private UniversityInfoForApply 괌대학_A_지원_정보; + + @Value("${university.term}") + public String term; + + @BeforeEach + void setUp() { + UniversityFixture universityFixture = new UniversityFixture(bs) + .지역을_생성한다("AMERICAS", "영미권") + .국가를_생성한다("US", "미국") + .대학을_생성한다( + "괌대학", + "University of Guam", + "university_of_guam", + "https://www.uog.edu/admissions/international-students", + "https://www.uog.edu/admissions/course-schedule", + "https://www.uog.edu/life-at-uog/residence-halls/", + "https://solid-connection.s3.ap-northeast-2.amazonaws.com/original/university_of_guam/logo.png", + "https://solid-connection.s3.ap-northeast-2.amazonaws.com/original/university_of_guam/1.png", + null) + .대학_지원_정보를_생성한다( + term, + "괌대학(A형)", + 1, + HOME_UNIVERSITY_PAYMENT, + ONE_SEMESTER, + "1", + "detailsForLanguage", + "gpaRequirement", + "gpaRequirementCriteria", + "detailsForApply", + "detailsForMajor", + "detailsForAccommodation", + "detailsForEnglishCourse", + "details") + .언어_요구사항을_추가한다(LanguageTestType.TOEFL_IBT, "80") + .언어_요구사항을_추가한다(LanguageTestType.TOEIC, "800"); + 영미권 = universityFixture.지역(); + 미국 = universityFixture.국가(); + 영미권_미국_괌대학 = universityFixture.대학(); + 괌대학_A_지원_정보 = universityFixture.대학_지원_정보(); + } + @Test - void 대학_상세정보를_정상_조회한다() { + void 대학_상세정보를_정상_조회한다() { // given Long universityId = 괌대학_A_지원_정보.getId(); @@ -113,16 +173,16 @@ class UniversityQueryServiceTest extends BaseIntegrationTest { // then assertThat(response.universityInfoForApplyPreviewResponses()) .containsExactlyInAnyOrder( - UniversityInfoForApplyPreviewResponse.from(괌대학_A_지원_정보), - UniversityInfoForApplyPreviewResponse.from(괌대학_B_지원_정보), - UniversityInfoForApplyPreviewResponse.from(네바다주립대학_라스베이거스_지원_정보), - UniversityInfoForApplyPreviewResponse.from(메모리얼대학_세인트존스_A_지원_정보), - UniversityInfoForApplyPreviewResponse.from(서던덴마크대학교_지원_정보), - UniversityInfoForApplyPreviewResponse.from(코펜하겐IT대학_지원_정보), - UniversityInfoForApplyPreviewResponse.from(그라츠대학_지원_정보), - UniversityInfoForApplyPreviewResponse.from(그라츠공과대학_지원_정보), - UniversityInfoForApplyPreviewResponse.from(린츠_카톨릭대학_지원_정보), - UniversityInfoForApplyPreviewResponse.from(메이지대학_지원_정보) + UniversityInfoForApplyPreviewResponse.from(괌대학_A_지원_정보) +// UniversityInfoForApplyPreviewResponse.from(괌대학_B_지원_정보), +// UniversityInfoForApplyPreviewResponse.from(네바다주립대학_라스베이거스_지원_정보), +// UniversityInfoForApplyPreviewResponse.from(메모리얼대학_세인트존스_A_지원_정보), +// UniversityInfoForApplyPreviewResponse.from(서던덴마크대학교_지원_정보), +// UniversityInfoForApplyPreviewResponse.from(코펜하겐IT대학_지원_정보), +// UniversityInfoForApplyPreviewResponse.from(그라츠대학_지원_정보), +// UniversityInfoForApplyPreviewResponse.from(그라츠공과대학_지원_정보), +// UniversityInfoForApplyPreviewResponse.from(린츠_카톨릭대학_지원_정보), +// UniversityInfoForApplyPreviewResponse.from(메이지대학_지원_정보) ); } @@ -157,10 +217,10 @@ class UniversityQueryServiceTest extends BaseIntegrationTest { // then assertThat(response.universityInfoForApplyPreviewResponses()) .containsExactlyInAnyOrder( - UniversityInfoForApplyPreviewResponse.from(괌대학_A_지원_정보), - UniversityInfoForApplyPreviewResponse.from(괌대학_B_지원_정보), - UniversityInfoForApplyPreviewResponse.from(네바다주립대학_라스베이거스_지원_정보), - UniversityInfoForApplyPreviewResponse.from(메모리얼대학_세인트존스_A_지원_정보) + UniversityInfoForApplyPreviewResponse.from(괌대학_A_지원_정보) +// UniversityInfoForApplyPreviewResponse.from(괌대학_B_지원_정보), +// UniversityInfoForApplyPreviewResponse.from(네바다주립대학_라스베이거스_지원_정보), +// UniversityInfoForApplyPreviewResponse.from(메모리얼대학_세인트존스_A_지원_정보) ); } @@ -173,10 +233,10 @@ class UniversityQueryServiceTest extends BaseIntegrationTest { // then assertThat(response.universityInfoForApplyPreviewResponses()) .containsExactlyInAnyOrder( - UniversityInfoForApplyPreviewResponse.from(네바다주립대학_라스베이거스_지원_정보), - UniversityInfoForApplyPreviewResponse.from(그라츠대학_지원_정보), - UniversityInfoForApplyPreviewResponse.from(그라츠공과대학_지원_정보), - UniversityInfoForApplyPreviewResponse.from(메이지대학_지원_정보) +// UniversityInfoForApplyPreviewResponse.from(네바다주립대학_라스베이거스_지원_정보), +// UniversityInfoForApplyPreviewResponse.from(그라츠대학_지원_정보), +// UniversityInfoForApplyPreviewResponse.from(그라츠공과대학_지원_정보), +// UniversityInfoForApplyPreviewResponse.from(메이지대학_지원_정보) ); } @@ -189,8 +249,8 @@ class UniversityQueryServiceTest extends BaseIntegrationTest { // then assertThat(response.universityInfoForApplyPreviewResponses()) .containsExactlyInAnyOrder( - UniversityInfoForApplyPreviewResponse.from(괌대학_B_지원_정보), - UniversityInfoForApplyPreviewResponse.from(서던덴마크대학교_지원_정보) +// UniversityInfoForApplyPreviewResponse.from(괌대학_B_지원_정보), +// UniversityInfoForApplyPreviewResponse.from(서던덴마크대학교_지원_정보) ); } @@ -201,6 +261,6 @@ class UniversityQueryServiceTest extends BaseIntegrationTest { "EUROPE", List.of(), LanguageTestType.TOEFL_IBT, "70"); // then - assertThat(response.universityInfoForApplyPreviewResponses()).containsExactly(UniversityInfoForApplyPreviewResponse.from(서던덴마크대학교_지원_정보)); + //assertThat(response.universityInfoForApplyPreviewResponses()).containsExactly(UniversityInfoForApplyPreviewResponse.from(서던덴마크대학교_지원_정보)); } } From 7f4923f50abb14efa0de0b20b90fa383444d75f9 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Mon, 5 May 2025 16:09:39 +0900 Subject: [PATCH 03/18] =?UTF-8?q?chore:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=ED=99=98=EA=B2=BD=EC=97=90=EC=84=9C=20lombok=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=EC=9D=84=20=EC=9C=84=ED=95=9C=20=EC=9D=98=EC=A1=B4?= =?UTF-8?q?=EC=84=B1=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.gradle b/build.gradle index b4267f41e..6f6a01f61 100644 --- a/build.gradle +++ b/build.gradle @@ -58,6 +58,8 @@ dependencies { testImplementation 'org.testcontainers:testcontainers' testImplementation 'org.testcontainers:junit-jupiter' testImplementation 'org.testcontainers:mysql' + testImplementation 'org.projectlombok:lombok' + testAnnotationProcessor 'org.projectlombok:lombok' // Etc implementation 'org.hibernate.validator:hibernate-validator' From 14b77d24e9262eada42571ce55d68408c5046979 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Mon, 5 May 2025 16:13:25 +0900 Subject: [PATCH 04/18] =?UTF-8?q?test:=20=EB=A9=94=EC=84=9C=EB=93=9C=20?= =?UTF-8?q?=EC=B2=B4=EC=9D=B4=EB=8B=9D=EC=9D=84=20=ED=99=9C=EC=9A=A9?= =?UTF-8?q?=ED=95=98=EC=97=AC=20=EB=8C=80=ED=95=99=20=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?Fixture=20=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../support/fixture/CountryFixture.java | 45 +++++ .../fixture/LanguageRequirementFixture.java | 51 +++++ .../support/fixture/RegionFixture.java | 38 ++++ .../support/fixture/UniversityFixture.java | 174 +++++------------- .../UniversityInfoForApplyFixture.java | 56 ++++++ 5 files changed, 233 insertions(+), 131 deletions(-) create mode 100644 src/test/java/com/example/solidconnection/support/fixture/CountryFixture.java create mode 100644 src/test/java/com/example/solidconnection/support/fixture/LanguageRequirementFixture.java create mode 100644 src/test/java/com/example/solidconnection/support/fixture/RegionFixture.java create mode 100644 src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixture.java diff --git a/src/test/java/com/example/solidconnection/support/fixture/CountryFixture.java b/src/test/java/com/example/solidconnection/support/fixture/CountryFixture.java new file mode 100644 index 000000000..c01e4d79e --- /dev/null +++ b/src/test/java/com/example/solidconnection/support/fixture/CountryFixture.java @@ -0,0 +1,45 @@ +package com.example.solidconnection.support.fixture; + +import com.example.solidconnection.entity.Country; +import com.example.solidconnection.entity.Region; +import com.example.solidconnection.repositories.CountryRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class CountryFixture { + + private final CountryRepository countryRepository; + + public CountryBuilder country() { + return new CountryBuilder(); + } + + public class CountryBuilder { + + private String code; + private String koreanName; + private Region region; + + public CountryBuilder code(String code) { + this.code = code; + return this; + } + + public CountryBuilder koreanName(String koreanName) { + this.koreanName = koreanName; + return this; + } + + public CountryBuilder region(Region region) { + this.region = region; + return this; + } + + public Country create() { + Country country = new Country(code, koreanName, region); + return countryRepository.save(country); + } + } +} diff --git a/src/test/java/com/example/solidconnection/support/fixture/LanguageRequirementFixture.java b/src/test/java/com/example/solidconnection/support/fixture/LanguageRequirementFixture.java new file mode 100644 index 000000000..30cf9ee71 --- /dev/null +++ b/src/test/java/com/example/solidconnection/support/fixture/LanguageRequirementFixture.java @@ -0,0 +1,51 @@ +package com.example.solidconnection.support.fixture; + +import com.example.solidconnection.type.LanguageTestType; +import com.example.solidconnection.university.domain.LanguageRequirement; +import com.example.solidconnection.university.domain.UniversityInfoForApply; +import com.example.solidconnection.university.repository.LanguageRequirementRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class LanguageRequirementFixture { + + private final LanguageRequirementRepository languageRequirementRepository; + + public LanguageRequirementBuilder languageRequirement() { + return new LanguageRequirementBuilder(); + } + + public class LanguageRequirementBuilder { + + private LanguageTestType languageTestType; + private String minScore; + private UniversityInfoForApply universityInfoForApply; + + public LanguageRequirementBuilder languageTestType(LanguageTestType languageTestType) { + this.languageTestType = languageTestType; + return this; + } + + public LanguageRequirementBuilder minScore(String minScore) { + this.minScore = minScore; + return this; + } + + public LanguageRequirementBuilder universityInfoForApply(UniversityInfoForApply universityInfoForApply) { + this.universityInfoForApply = universityInfoForApply; + return this; + } + + public LanguageRequirement create() { + LanguageRequirement languageRequirement = new LanguageRequirement( + null, + languageTestType, + minScore, + universityInfoForApply + ); + return languageRequirementRepository.save(languageRequirement); + } + } +} diff --git a/src/test/java/com/example/solidconnection/support/fixture/RegionFixture.java b/src/test/java/com/example/solidconnection/support/fixture/RegionFixture.java new file mode 100644 index 000000000..c4e8f6b11 --- /dev/null +++ b/src/test/java/com/example/solidconnection/support/fixture/RegionFixture.java @@ -0,0 +1,38 @@ +package com.example.solidconnection.support.fixture; + +import com.example.solidconnection.entity.Region; +import com.example.solidconnection.repositories.RegionRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class RegionFixture { + + private final RegionRepository regionRepository; + + public RegionBuilder region() { + return new RegionBuilder(); + } + + public class RegionBuilder { + + private String code; + private String koreanName; + + public RegionBuilder code(String code) { + this.code = code; + return this; + } + + public RegionBuilder koreanName(String koreanName) { + this.koreanName = koreanName; + return this; + } + + public Region create() { + Region region = new Region(code, koreanName); + return regionRepository.save(region); + } + } +} diff --git a/src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java b/src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java index 0769b950d..1dd356851 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java +++ b/src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java @@ -1,154 +1,66 @@ package com.example.solidconnection.support.fixture; -import com.example.solidconnection.custom.exception.CustomException; import com.example.solidconnection.entity.Country; import com.example.solidconnection.entity.Region; -import com.example.solidconnection.type.LanguageTestType; -import com.example.solidconnection.type.SemesterAvailableForDispatch; -import com.example.solidconnection.type.TuitionFeeType; -import com.example.solidconnection.university.domain.LanguageRequirement; import com.example.solidconnection.university.domain.University; -import com.example.solidconnection.university.domain.UniversityInfoForApply; - -import java.util.HashSet; -import java.util.Set; - -import static com.example.solidconnection.custom.exception.ErrorCode.COUNTRY_NOT_FOUND_BY_KOREAN_NAME; -import static com.example.solidconnection.custom.exception.ErrorCode.REGION_NOT_FOUND_BY_KOREAN_NAME; -import static com.example.solidconnection.custom.exception.ErrorCode.UNIVERSITY_INFO_FOR_APPLY_NOT_FOUND; +import com.example.solidconnection.university.repository.UniversityRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; +@Component +@RequiredArgsConstructor public final class UniversityFixture { - private final BuilderSupporter bs; - - private Region region; - private Country country; - private University university; - private UniversityInfoForApply universityInfoForApply; - private Set languageRequirements = new HashSet<>(); + private final UniversityRepository universityRepository; - public UniversityFixture(BuilderSupporter bs) { - this.bs = bs; + public UniversityBuilder university() { + return new UniversityBuilder(); } - public UniversityFixture 지역을_생성한다(String code, String koreanName) { - Region region = new Region(code, koreanName); - this.region = bs.regionRepository().save(region); - return this; - } + public class UniversityBuilder { - public UniversityFixture 국가를_생성한다(String code, String koreanName) { - if (this.region == null) { - throw new CustomException(REGION_NOT_FOUND_BY_KOREAN_NAME); - } - Country country = new Country(code, koreanName, this.region); - this.country = bs.countryRepository().save(country); - return this; - } + private String koreanName; + private String englishName; + private String formatName; + private Country country; + private Region region; - public UniversityFixture 대학을_생성한다( - String koreanName, - String englishName, - String formatName, - String homepageUrl, - String englishCourseUrl, - String accommodationUrl, - String logoImageUrl, - String backgroundImageUrl, - String detailsForLocal) { - if (this.country == null) { - throw new CustomException(COUNTRY_NOT_FOUND_BY_KOREAN_NAME); + public UniversityBuilder koreanName(String koreanName) { + this.koreanName = koreanName; + return this; } - University university = new University( - null, - koreanName, - englishName, - formatName, - homepageUrl, - englishCourseUrl, - accommodationUrl, - logoImageUrl, - backgroundImageUrl, - detailsForLocal, - this.country, - this.region); - this.university = bs.universityRepository().save(university); - return this; - } - public UniversityFixture 대학_지원_정보를_생성한다( - String term, - String koreanName, - Integer studentCapacity, - TuitionFeeType tuitionFeeType, - SemesterAvailableForDispatch semesterAvailableForDispatch, - String semesterRequirement, - String detailsForLanguage, - String gpaRequirement, - String gpaRequirementCriteria, - String detailsForApply, - String detailsForMajor, - String detailsForAccommodation, - String detailsForEnglishCourse, - String details) { - if (this.university == null) { - throw new CustomException(UNIVERSITY_INFO_FOR_APPLY_NOT_FOUND); + public UniversityBuilder englishName(String englishName) { + this.englishName = englishName; + return this; } - UniversityInfoForApply universityInfoForApply = new UniversityInfoForApply( - null, - term, - koreanName, - studentCapacity, - tuitionFeeType, - semesterAvailableForDispatch, - semesterRequirement, - detailsForLanguage, - gpaRequirement, - gpaRequirementCriteria, - detailsForApply, - detailsForMajor, - detailsForAccommodation, - detailsForEnglishCourse, - details, - new HashSet<>(), - this.university); - this.universityInfoForApply = bs.universityInfoForApplyRepository().save(universityInfoForApply); - return this; - } - public UniversityFixture 언어_요구사항을_추가한다(LanguageTestType testType, String minScore) { - if (this.universityInfoForApply == null) { - throw new CustomException(UNIVERSITY_INFO_FOR_APPLY_NOT_FOUND); + public UniversityBuilder formatName(String formatName) { + this.formatName = formatName; + return this; } - LanguageRequirement languageRequirement = new LanguageRequirement( - null, - testType, - minScore, - this.universityInfoForApply); - this.universityInfoForApply.addLanguageRequirements(languageRequirement); - bs.universityInfoForApplyRepository().save(this.universityInfoForApply); - LanguageRequirement saved = bs.languageRequirementRepository().save(languageRequirement); - this.languageRequirements.add(saved); - return this; - } - public Region 지역() { - return region; - } - - public Country 국가() { - return country; - } - - public University 대학() { - return university; - } + public UniversityBuilder country(Country country) { + this.country = country; + return this; + } - public UniversityInfoForApply 대학_지원_정보() { - return universityInfoForApply; - } + public UniversityBuilder region(Region region) { + this.region = region; + return this; + } - public Set 언어_요구사항들() { - return languageRequirements; + public University create() { + University university = new University( + null, koreanName, englishName, formatName, + "https://homepage-url", + "https://english-course-url", + "https://accommodation-url", + "https://logo-image-url", + "https://background-image-url", + null, country, region + ); + return universityRepository.save(university); + } } } diff --git a/src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixture.java b/src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixture.java new file mode 100644 index 000000000..991863f4d --- /dev/null +++ b/src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixture.java @@ -0,0 +1,56 @@ +package com.example.solidconnection.support.fixture; + +import com.example.solidconnection.university.domain.University; +import com.example.solidconnection.university.domain.UniversityInfoForApply; +import com.example.solidconnection.university.repository.UniversityInfoForApplyRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.HashSet; + +import static com.example.solidconnection.type.SemesterAvailableForDispatch.ONE_SEMESTER; +import static com.example.solidconnection.type.TuitionFeeType.HOME_UNIVERSITY_PAYMENT; + +@Component +@RequiredArgsConstructor +public class UniversityInfoForApplyFixture { + + private final UniversityInfoForApplyRepository universityInfoForApplyRepository; + + public UniversityInfoForApplyBuilder universityInfoForApply() { + return new UniversityInfoForApplyBuilder(); + } + + public class UniversityInfoForApplyBuilder { + + private String term; + private String koreanName; + private University university; + + public UniversityInfoForApplyBuilder term(String term) { + this.term = term; + return this; + } + + public UniversityInfoForApplyBuilder koreanName(String koreanName) { + this.koreanName = koreanName; + return this; + } + + public UniversityInfoForApplyBuilder university(University university) { + this.university = university; + return this; + } + + public UniversityInfoForApply create() { + UniversityInfoForApply universityInfoForApply = new UniversityInfoForApply( + null, term, koreanName, 1, HOME_UNIVERSITY_PAYMENT, ONE_SEMESTER, + "1", "detailsForLanguage", "gpaRequirement", + "gpaRequirementCriteria", "detailsForApply", "detailsForMajor", + "detailsForAccommodation", "detailsForEnglishCourse", "details", + new HashSet<>(), university + ); + return universityInfoForApplyRepository.save(universityInfoForApply); + } + } +} From 3c3038c51789df1f722406033c66628f207f681a Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Mon, 5 May 2025 16:14:03 +0900 Subject: [PATCH 05/18] =?UTF-8?q?test:=20=EB=8C=80=ED=95=99=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=EC=9D=84=20=EC=9C=84=ED=95=9C=20Fixture=20Helper=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../university/fixture/UniversityData.java | 18 +++ .../fixture/UniversityFixtureHelper.java | 103 ++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 src/test/java/com/example/solidconnection/university/fixture/UniversityData.java create mode 100644 src/test/java/com/example/solidconnection/university/fixture/UniversityFixtureHelper.java diff --git a/src/test/java/com/example/solidconnection/university/fixture/UniversityData.java b/src/test/java/com/example/solidconnection/university/fixture/UniversityData.java new file mode 100644 index 000000000..700136cd0 --- /dev/null +++ b/src/test/java/com/example/solidconnection/university/fixture/UniversityData.java @@ -0,0 +1,18 @@ +package com.example.solidconnection.university.fixture; + +import com.example.solidconnection.entity.Country; +import com.example.solidconnection.entity.Region; +import com.example.solidconnection.university.domain.LanguageRequirement; +import com.example.solidconnection.university.domain.University; +import com.example.solidconnection.university.domain.UniversityInfoForApply; + +import java.util.Set; + +public record UniversityData( + Region 지역, + Country 국가, + University 대학, + UniversityInfoForApply 대학_지원_정보, + Set 언어_요구사항들 +) { +} diff --git a/src/test/java/com/example/solidconnection/university/fixture/UniversityFixtureHelper.java b/src/test/java/com/example/solidconnection/university/fixture/UniversityFixtureHelper.java new file mode 100644 index 000000000..1fb039fef --- /dev/null +++ b/src/test/java/com/example/solidconnection/university/fixture/UniversityFixtureHelper.java @@ -0,0 +1,103 @@ +package com.example.solidconnection.university.fixture; + +import com.example.solidconnection.entity.Country; +import com.example.solidconnection.entity.Region; +import com.example.solidconnection.support.fixture.CountryFixture; +import com.example.solidconnection.support.fixture.LanguageRequirementFixture; +import com.example.solidconnection.support.fixture.RegionFixture; +import com.example.solidconnection.support.fixture.UniversityFixture; +import com.example.solidconnection.support.fixture.UniversityInfoForApplyFixture; +import com.example.solidconnection.type.LanguageTestType; +import com.example.solidconnection.university.domain.LanguageRequirement; +import com.example.solidconnection.university.domain.University; +import com.example.solidconnection.university.domain.UniversityInfoForApply; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +@Component +@RequiredArgsConstructor +public class UniversityFixtureHelper { + + private final CountryFixture countryFixture; + private final RegionFixture regionFixture; + private final UniversityFixture universityFixture; + private final UniversityInfoForApplyFixture universityInfoForApplyFixture; + private final LanguageRequirementFixture languageRequirementFixture; + + @Value("${university.term}") + public String term; + + public UniversityData 괌대학_A_생성() { + return 대학_생성( + "AMERICAS", "영미권", + "US", "미국", + "괌대학", "University of Guam", "university_of_guam", + "괌대학(A형)", + Map.of( + LanguageTestType.TOEFL_IBT, "80", + LanguageTestType.TOEIC, "800" + ) + ); + } + + private UniversityData 대학_생성( + String regionCode, + String regionKoreanName, + String countryCode, + String countryKoreanName, + String universityKoreanName, + String universityEnglishName, + String universityFormatName, + String infoKoreanName, + Map languageRequirementMap) { + + Region region = regionFixture.region() + .code(regionCode) + .koreanName(regionKoreanName) + .create(); + + Country country = countryFixture.country() + .code(countryCode) + .koreanName(countryKoreanName) + .region(region) + .create(); + + University university = universityFixture.university() + .koreanName(universityKoreanName) + .englishName(universityEnglishName) + .formatName(universityFormatName) + .country(country) + .region(region) + .create(); + + UniversityInfoForApply universityInfoForApply = universityInfoForApplyFixture.universityInfoForApply() + .term(term) + .koreanName(infoKoreanName) + .university(university) + .create(); + + Set languageRequirements = new HashSet<>(); + for (Map.Entry entry : languageRequirementMap.entrySet()) { + LanguageRequirement languageRequirement = languageRequirementFixture.languageRequirement() + .languageTestType(entry.getKey()) + .minScore(entry.getValue()) + .universityInfoForApply(universityInfoForApply) + .create(); + languageRequirements.add(languageRequirement); + universityInfoForApply.addLanguageRequirements(languageRequirement); + } + + return new UniversityData( + region, + country, + university, + universityInfoForApply, + languageRequirements + ); + } +} From 89beba0b3230e2dac12334b1e01e247b93c10a59 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Mon, 5 May 2025 16:15:01 +0900 Subject: [PATCH 06/18] =?UTF-8?q?test:=20Fixture=20Helper=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=20=EC=8B=A4=EC=A0=9C=20=EB=8C=80=ED=95=99=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=97=90=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/UniversityQueryServiceTest.java | 104 +++--------------- 1 file changed, 13 insertions(+), 91 deletions(-) diff --git a/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java b/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java index 17ab2823b..08e56f70d 100644 --- a/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java +++ b/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java @@ -1,35 +1,26 @@ package com.example.solidconnection.university.service; import com.example.solidconnection.custom.exception.CustomException; -import com.example.solidconnection.entity.Country; -import com.example.solidconnection.entity.Region; import com.example.solidconnection.support.TestContainerSpringBootTest; -import com.example.solidconnection.support.fixture.BuilderSupporter; -import com.example.solidconnection.support.fixture.UniversityFixture; import com.example.solidconnection.type.LanguageTestType; -import com.example.solidconnection.university.domain.University; -import com.example.solidconnection.university.domain.UniversityInfoForApply; import com.example.solidconnection.university.dto.UniversityDetailResponse; -import com.example.solidconnection.university.dto.LanguageRequirementResponse; import com.example.solidconnection.university.dto.UniversityInfoForApplyPreviewResponse; import com.example.solidconnection.university.dto.UniversityInfoForApplyPreviewResponses; +import com.example.solidconnection.university.fixture.UniversityData; +import com.example.solidconnection.university.fixture.UniversityFixtureHelper; import com.example.solidconnection.university.repository.UniversityInfoForApplyRepository; import com.example.solidconnection.university.repository.custom.UniversityFilterRepository; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.mock.mockito.SpyBean; import java.util.List; -import static com.example.solidconnection.type.SemesterAvailableForDispatch.ONE_SEMESTER; -import static com.example.solidconnection.type.TuitionFeeType.HOME_UNIVERSITY_PAYMENT; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatExceptionOfType; import static com.example.solidconnection.custom.exception.ErrorCode.UNIVERSITY_INFO_FOR_APPLY_NOT_FOUND; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatExceptionOfType; import static org.mockito.BDDMockito.then; import static org.mockito.Mockito.times; @@ -41,7 +32,7 @@ class UniversityQueryServiceTest { private UniversityQueryService universityQueryService; @Autowired - private BuilderSupporter bs; + private UniversityFixtureHelper universityFixtureHelper; @SpyBean private UniversityFilterRepository universityFilterRepository; @@ -49,98 +40,29 @@ class UniversityQueryServiceTest { @SpyBean private UniversityInfoForApplyRepository universityInfoForApplyRepository; - private Region 영미권; - private Country 미국; - private University 영미권_미국_괌대학; - private UniversityInfoForApply 괌대학_A_지원_정보; - - @Value("${university.term}") - public String term; + private UniversityData 괌대학_A; @BeforeEach void setUp() { - UniversityFixture universityFixture = new UniversityFixture(bs) - .지역을_생성한다("AMERICAS", "영미권") - .국가를_생성한다("US", "미국") - .대학을_생성한다( - "괌대학", - "University of Guam", - "university_of_guam", - "https://www.uog.edu/admissions/international-students", - "https://www.uog.edu/admissions/course-schedule", - "https://www.uog.edu/life-at-uog/residence-halls/", - "https://solid-connection.s3.ap-northeast-2.amazonaws.com/original/university_of_guam/logo.png", - "https://solid-connection.s3.ap-northeast-2.amazonaws.com/original/university_of_guam/1.png", - null) - .대학_지원_정보를_생성한다( - term, - "괌대학(A형)", - 1, - HOME_UNIVERSITY_PAYMENT, - ONE_SEMESTER, - "1", - "detailsForLanguage", - "gpaRequirement", - "gpaRequirementCriteria", - "detailsForApply", - "detailsForMajor", - "detailsForAccommodation", - "detailsForEnglishCourse", - "details") - .언어_요구사항을_추가한다(LanguageTestType.TOEFL_IBT, "80") - .언어_요구사항을_추가한다(LanguageTestType.TOEIC, "800"); - 영미권 = universityFixture.지역(); - 미국 = universityFixture.국가(); - 영미권_미국_괌대학 = universityFixture.대학(); - 괌대학_A_지원_정보 = universityFixture.대학_지원_정보(); + 괌대학_A = universityFixtureHelper.괌대학_A_생성(); } @Test void 대학_상세정보를_정상_조회한다() { // given - Long universityId = 괌대학_A_지원_정보.getId(); + Long universityId = 괌대학_A.대학().getId(); // when UniversityDetailResponse response = universityQueryService.getUniversityDetail(universityId); // then - Assertions.assertAll( - () -> assertThat(response.id()).isEqualTo(괌대학_A_지원_정보.getId()), - () -> assertThat(response.term()).isEqualTo(괌대학_A_지원_정보.getTerm()), - () -> assertThat(response.koreanName()).isEqualTo(괌대학_A_지원_정보.getKoreanName()), - () -> assertThat(response.englishName()).isEqualTo(영미권_미국_괌대학.getEnglishName()), - () -> assertThat(response.formatName()).isEqualTo(영미권_미국_괌대학.getFormatName()), - () -> assertThat(response.region()).isEqualTo(영미권.getKoreanName()), - () -> assertThat(response.country()).isEqualTo(미국.getKoreanName()), - () -> assertThat(response.homepageUrl()).isEqualTo(영미권_미국_괌대학.getHomepageUrl()), - () -> assertThat(response.logoImageUrl()).isEqualTo(영미권_미국_괌대학.getLogoImageUrl()), - () -> assertThat(response.backgroundImageUrl()).isEqualTo(영미권_미국_괌대학.getBackgroundImageUrl()), - () -> assertThat(response.detailsForLocal()).isEqualTo(영미권_미국_괌대학.getDetailsForLocal()), - () -> assertThat(response.studentCapacity()).isEqualTo(괌대학_A_지원_정보.getStudentCapacity()), - () -> assertThat(response.tuitionFeeType()).isEqualTo(괌대학_A_지원_정보.getTuitionFeeType().getKoreanName()), - () -> assertThat(response.semesterAvailableForDispatch()).isEqualTo(괌대학_A_지원_정보.getSemesterAvailableForDispatch().getKoreanName()), - () -> assertThat(response.languageRequirements()).containsOnlyOnceElementsOf( - 괌대학_A_지원_정보.getLanguageRequirements().stream() - .map(LanguageRequirementResponse::from) - .toList()), - () -> assertThat(response.detailsForLanguage()).isEqualTo(괌대학_A_지원_정보.getDetailsForLanguage()), - () -> assertThat(response.gpaRequirement()).isEqualTo(괌대학_A_지원_정보.getGpaRequirement()), - () -> assertThat(response.gpaRequirementCriteria()).isEqualTo(괌대학_A_지원_정보.getGpaRequirementCriteria()), - () -> assertThat(response.semesterRequirement()).isEqualTo(괌대학_A_지원_정보.getSemesterRequirement()), - () -> assertThat(response.detailsForApply()).isEqualTo(괌대학_A_지원_정보.getDetailsForApply()), - () -> assertThat(response.detailsForMajor()).isEqualTo(괌대학_A_지원_정보.getDetailsForMajor()), - () -> assertThat(response.detailsForAccommodation()).isEqualTo(괌대학_A_지원_정보.getDetailsForAccommodation()), - () -> assertThat(response.detailsForEnglishCourse()).isEqualTo(괌대학_A_지원_정보.getDetailsForEnglishCourse()), - () -> assertThat(response.details()).isEqualTo(괌대학_A_지원_정보.getDetails()), - () -> assertThat(response.accommodationUrl()).isEqualTo(괌대학_A_지원_정보.getUniversity().getAccommodationUrl()), - () -> assertThat(response.englishCourseUrl()).isEqualTo(괌대학_A_지원_정보.getUniversity().getEnglishCourseUrl()) - ); + assertThat(response.id()).isEqualTo(괌대학_A.대학_지원_정보().getId()); } @Test void 대학_상세정보_조회시_캐시가_적용된다() { // given - Long universityId = 괌대학_A_지원_정보.getId(); + Long universityId = 괌대학_A.대학().getId(); // when UniversityDetailResponse firstResponse = universityQueryService.getUniversityDetail(universityId); @@ -173,7 +95,7 @@ void setUp() { // then assertThat(response.universityInfoForApplyPreviewResponses()) .containsExactlyInAnyOrder( - UniversityInfoForApplyPreviewResponse.from(괌대학_A_지원_정보) + UniversityInfoForApplyPreviewResponse.from(괌대학_A.대학_지원_정보()) // UniversityInfoForApplyPreviewResponse.from(괌대학_B_지원_정보), // UniversityInfoForApplyPreviewResponse.from(네바다주립대학_라스베이거스_지원_정보), // UniversityInfoForApplyPreviewResponse.from(메모리얼대학_세인트존스_A_지원_정보), @@ -189,7 +111,7 @@ void setUp() { @Test void 대학_조회시_캐시가_적용된다() { // given - String regionCode = 영미권.getCode(); + String regionCode = "AMERICAS"; List keywords = List.of("괌"); LanguageTestType testType = LanguageTestType.TOEFL_IBT; String testScore = "70"; @@ -212,12 +134,12 @@ void setUp() { void 지역으로_대학을_필터링한다() { // when UniversityInfoForApplyPreviewResponses response = universityQueryService.searchUniversity( - 영미권.getCode(), List.of(), null, null); + "AMERICAS", List.of(), null, null); // then assertThat(response.universityInfoForApplyPreviewResponses()) .containsExactlyInAnyOrder( - UniversityInfoForApplyPreviewResponse.from(괌대학_A_지원_정보) + UniversityInfoForApplyPreviewResponse.from(괌대학_A.대학_지원_정보()) // UniversityInfoForApplyPreviewResponse.from(괌대학_B_지원_정보), // UniversityInfoForApplyPreviewResponse.from(네바다주립대학_라스베이거스_지원_정보), // UniversityInfoForApplyPreviewResponse.from(메모리얼대학_세인트존스_A_지원_정보) From 40808c2d7668f480efc41a87f00584ff189fef47 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Mon, 5 May 2025 16:16:30 +0900 Subject: [PATCH 07/18] =?UTF-8?q?chore:=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20BuilderSupporter=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../support/fixture/BuilderSupporter.java | 107 ------------------ 1 file changed, 107 deletions(-) delete mode 100644 src/test/java/com/example/solidconnection/support/fixture/BuilderSupporter.java diff --git a/src/test/java/com/example/solidconnection/support/fixture/BuilderSupporter.java b/src/test/java/com/example/solidconnection/support/fixture/BuilderSupporter.java deleted file mode 100644 index f8676a769..000000000 --- a/src/test/java/com/example/solidconnection/support/fixture/BuilderSupporter.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.example.solidconnection.support.fixture; - -import com.example.solidconnection.application.repository.ApplicationRepository; -import com.example.solidconnection.community.board.repository.BoardRepository; -import com.example.solidconnection.community.post.repository.PostImageRepository; -import com.example.solidconnection.community.post.repository.PostRepository; -import com.example.solidconnection.repositories.CountryRepository; -import com.example.solidconnection.repositories.RegionRepository; -import com.example.solidconnection.score.repository.GpaScoreRepository; -import com.example.solidconnection.score.repository.LanguageTestScoreRepository; -import com.example.solidconnection.siteuser.repository.SiteUserRepository; -import com.example.solidconnection.university.repository.LanguageRequirementRepository; -import com.example.solidconnection.university.repository.UniversityInfoForApplyRepository; -import com.example.solidconnection.university.repository.UniversityRepository; -import org.springframework.stereotype.Component; - -@Component -public class BuilderSupporter { - - private final SiteUserRepository siteUserRepository; - private final RegionRepository regionRepository; - private final CountryRepository countryRepository; - private final UniversityRepository universityRepository; - private final UniversityInfoForApplyRepository universityInfoForApplyRepository; - private final LanguageRequirementRepository languageRequirementRepository; - private final ApplicationRepository applicationRepository; - private final GpaScoreRepository gpaScoreRepository; - private final LanguageTestScoreRepository languageTestScoreRepository; - private final BoardRepository boardRepository; - private final PostRepository postRepository; - private final PostImageRepository postImageRepository; - - public BuilderSupporter( - SiteUserRepository siteUserRepository, - RegionRepository regionRepository, - CountryRepository countryRepository, - UniversityRepository universityRepository, - UniversityInfoForApplyRepository universityInfoForApplyRepository, - LanguageRequirementRepository languageRequirementRepository, - ApplicationRepository applicationRepository, - GpaScoreRepository gpaScoreRepository, - LanguageTestScoreRepository languageTestScoreRepository, - BoardRepository boardRepository, - PostRepository postRepository, - PostImageRepository postImageRepository) { - this.siteUserRepository = siteUserRepository; - this.regionRepository = regionRepository; - this.countryRepository = countryRepository; - this.universityRepository = universityRepository; - this.universityInfoForApplyRepository = universityInfoForApplyRepository; - this.languageRequirementRepository = languageRequirementRepository; - this.applicationRepository = applicationRepository; - this.gpaScoreRepository = gpaScoreRepository; - this.languageTestScoreRepository = languageTestScoreRepository; - this.boardRepository = boardRepository; - this.postRepository = postRepository; - this.postImageRepository = postImageRepository; - } - - public SiteUserRepository siteUserRepository() { - return siteUserRepository; - } - - public RegionRepository regionRepository() { - return regionRepository; - } - - public CountryRepository countryRepository() { - return countryRepository; - } - - public UniversityRepository universityRepository() { - return universityRepository; - } - - public UniversityInfoForApplyRepository universityInfoForApplyRepository() { - return universityInfoForApplyRepository; - } - - public LanguageRequirementRepository languageRequirementRepository() { - return languageRequirementRepository; - } - - public ApplicationRepository applicationRepository() { - return applicationRepository; - } - - public GpaScoreRepository gpaScoreRepository() { - return gpaScoreRepository; - } - - public LanguageTestScoreRepository languageTestScoreRepository() { - return languageTestScoreRepository; - } - - public BoardRepository boardRepository() { - return boardRepository; - } - - public PostRepository postRepository() { - return postRepository; - } - - public PostImageRepository postImageRepository() { - return postImageRepository; - } -} From e5308e4f4442feda5024ce18c1e8ea907b74250b Mon Sep 17 00:00:00 2001 From: nayonsoso Date: Tue, 6 May 2025 04:00:49 +0900 Subject: [PATCH 08/18] =?UTF-8?q?refactor:=20=EB=82=B4=EA=B0=80=20?= =?UTF-8?q?=EC=83=9D=EA=B0=81=ED=95=9C=20=EB=B0=A9=ED=96=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../support/TestContainerSpringBootTest.java | 2 + .../support/fixture/CountryFixture.java | 44 +++---------- .../fixture/CountryFixtureBuilder.java | 41 ++++++++++++ .../fixture/CountryRepositoryForTest.java | 13 ++++ .../support/fixture/RegionFixture.java | 31 ++------- .../support/fixture/RegionFixtureBuilder.java | 34 ++++++++++ .../fixture/RegionRepositoryForTest.java | 13 ++++ .../support/fixture/UniversityFixture.java | 65 ++++--------------- .../fixture/UniversityFixtureBuilder.java | 58 +++++++++++++++++ .../UniversityInfoForApplyFixture.java | 51 +++------------ .../UniversityInfoForApplyFixtureBuilder.java | 53 +++++++++++++++ .../fixture/UniversityFixtureHelper.java | 21 +++--- .../service/UniversityQueryServiceTest.java | 20 +++--- 13 files changed, 271 insertions(+), 175 deletions(-) create mode 100644 src/test/java/com/example/solidconnection/support/fixture/CountryFixtureBuilder.java create mode 100644 src/test/java/com/example/solidconnection/support/fixture/CountryRepositoryForTest.java create mode 100644 src/test/java/com/example/solidconnection/support/fixture/RegionFixtureBuilder.java create mode 100644 src/test/java/com/example/solidconnection/support/fixture/RegionRepositoryForTest.java create mode 100644 src/test/java/com/example/solidconnection/support/fixture/UniversityFixtureBuilder.java create mode 100644 src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixtureBuilder.java diff --git a/src/test/java/com/example/solidconnection/support/TestContainerSpringBootTest.java b/src/test/java/com/example/solidconnection/support/TestContainerSpringBootTest.java index 5c5c93742..511412174 100644 --- a/src/test/java/com/example/solidconnection/support/TestContainerSpringBootTest.java +++ b/src/test/java/com/example/solidconnection/support/TestContainerSpringBootTest.java @@ -3,6 +3,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.ComponentScan; import org.springframework.test.context.ContextConfiguration; import org.testcontainers.junit.jupiter.Testcontainers; @@ -11,6 +12,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +@ComponentScan(basePackages = "com.example.solidconnection.support.fixture") @ExtendWith({DatabaseClearExtension.class}) @ContextConfiguration(initializers = {RedisTestContainer.class, MySQLTestContainer.class}) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) diff --git a/src/test/java/com/example/solidconnection/support/fixture/CountryFixture.java b/src/test/java/com/example/solidconnection/support/fixture/CountryFixture.java index c01e4d79e..05d0641c2 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/CountryFixture.java +++ b/src/test/java/com/example/solidconnection/support/fixture/CountryFixture.java @@ -1,45 +1,21 @@ package com.example.solidconnection.support.fixture; import com.example.solidconnection.entity.Country; -import com.example.solidconnection.entity.Region; -import com.example.solidconnection.repositories.CountryRepository; import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; +import org.springframework.boot.test.context.TestComponent; -@Component +@TestComponent @RequiredArgsConstructor public class CountryFixture { - private final CountryRepository countryRepository; + private final RegionFixture regionFixture; + private final CountryFixtureBuilder countryFixtureBuilder; - public CountryBuilder country() { - return new CountryBuilder(); - } - - public class CountryBuilder { - - private String code; - private String koreanName; - private Region region; - - public CountryBuilder code(String code) { - this.code = code; - return this; - } - - public CountryBuilder koreanName(String koreanName) { - this.koreanName = koreanName; - return this; - } - - public CountryBuilder region(Region region) { - this.region = region; - return this; - } - - public Country create() { - Country country = new Country(code, koreanName, region); - return countryRepository.save(country); - } + public Country 미국() { + return countryFixtureBuilder.country() + .code("US") + .koreanName("미국") + .region(regionFixture.영미권()) + .findOrCreate(); } } diff --git a/src/test/java/com/example/solidconnection/support/fixture/CountryFixtureBuilder.java b/src/test/java/com/example/solidconnection/support/fixture/CountryFixtureBuilder.java new file mode 100644 index 000000000..debed8916 --- /dev/null +++ b/src/test/java/com/example/solidconnection/support/fixture/CountryFixtureBuilder.java @@ -0,0 +1,41 @@ +package com.example.solidconnection.support.fixture; + +import com.example.solidconnection.entity.Country; +import com.example.solidconnection.entity.Region; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.test.context.TestComponent; + +@TestComponent +@RequiredArgsConstructor +public class CountryFixtureBuilder { + + private final CountryRepositoryForTest countryRepositoryForTest; + + private String code; + private String koreanName; + private Region region; + + public CountryFixtureBuilder country() { + return new CountryFixtureBuilder(countryRepositoryForTest); + } + + public CountryFixtureBuilder code(String code) { + this.code = code; + return this; + } + + public CountryFixtureBuilder koreanName(String koreanName) { + this.koreanName = koreanName; + return this; + } + + public CountryFixtureBuilder region(Region region) { + this.region = region; + return this; + } + + public Country findOrCreate() { + return countryRepositoryForTest.findByCode(code) + .orElseGet(() -> countryRepositoryForTest.save(new Country(code, koreanName, region))); + } +} diff --git a/src/test/java/com/example/solidconnection/support/fixture/CountryRepositoryForTest.java b/src/test/java/com/example/solidconnection/support/fixture/CountryRepositoryForTest.java new file mode 100644 index 000000000..c58e0d4e9 --- /dev/null +++ b/src/test/java/com/example/solidconnection/support/fixture/CountryRepositoryForTest.java @@ -0,0 +1,13 @@ +package com.example.solidconnection.support.fixture; + +import com.example.solidconnection.entity.Country; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface CountryRepositoryForTest extends JpaRepository { + + Optional findByCode(String code); +} diff --git a/src/test/java/com/example/solidconnection/support/fixture/RegionFixture.java b/src/test/java/com/example/solidconnection/support/fixture/RegionFixture.java index c4e8f6b11..56a99e4d3 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/RegionFixture.java +++ b/src/test/java/com/example/solidconnection/support/fixture/RegionFixture.java @@ -1,7 +1,6 @@ package com.example.solidconnection.support.fixture; import com.example.solidconnection.entity.Region; -import com.example.solidconnection.repositories.RegionRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; @@ -9,30 +8,12 @@ @RequiredArgsConstructor public class RegionFixture { - private final RegionRepository regionRepository; + private final RegionFixtureBuilder regionFixtureBuilder; - public RegionBuilder region() { - return new RegionBuilder(); - } - - public class RegionBuilder { - - private String code; - private String koreanName; - - public RegionBuilder code(String code) { - this.code = code; - return this; - } - - public RegionBuilder koreanName(String koreanName) { - this.koreanName = koreanName; - return this; - } - - public Region create() { - Region region = new Region(code, koreanName); - return regionRepository.save(region); - } + public Region 영미권() { + return regionFixtureBuilder.region() + .code("AMERICAS") + .koreanName("영미권") + .findOrCreate(); } } diff --git a/src/test/java/com/example/solidconnection/support/fixture/RegionFixtureBuilder.java b/src/test/java/com/example/solidconnection/support/fixture/RegionFixtureBuilder.java new file mode 100644 index 000000000..386da2fd8 --- /dev/null +++ b/src/test/java/com/example/solidconnection/support/fixture/RegionFixtureBuilder.java @@ -0,0 +1,34 @@ +package com.example.solidconnection.support.fixture; + +import com.example.solidconnection.entity.Region; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.test.context.TestComponent; + +@TestComponent +@RequiredArgsConstructor +public class RegionFixtureBuilder { + + private final RegionRepositoryForTest regionRepositoryForTest; + + private String code; + private String koreanName; + + public RegionFixtureBuilder region() { + return new RegionFixtureBuilder(regionRepositoryForTest); + } + + public RegionFixtureBuilder code(String code) { + this.code = code; + return this; + } + + public RegionFixtureBuilder koreanName(String koreanName) { + this.koreanName = koreanName; + return this; + } + + public Region findOrCreate() { + return regionRepositoryForTest.findByCode(code) + .orElseGet(() -> regionRepositoryForTest.save(new Region(code, koreanName))); + } +} diff --git a/src/test/java/com/example/solidconnection/support/fixture/RegionRepositoryForTest.java b/src/test/java/com/example/solidconnection/support/fixture/RegionRepositoryForTest.java new file mode 100644 index 000000000..274b6c0a7 --- /dev/null +++ b/src/test/java/com/example/solidconnection/support/fixture/RegionRepositoryForTest.java @@ -0,0 +1,13 @@ +package com.example.solidconnection.support.fixture; + +import com.example.solidconnection.entity.Region; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface RegionRepositoryForTest extends JpaRepository { + + Optional findByCode(String code); +} diff --git a/src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java b/src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java index 1dd356851..b3c435b0c 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java +++ b/src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java @@ -1,9 +1,6 @@ package com.example.solidconnection.support.fixture; -import com.example.solidconnection.entity.Country; -import com.example.solidconnection.entity.Region; import com.example.solidconnection.university.domain.University; -import com.example.solidconnection.university.repository.UniversityRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; @@ -11,56 +8,16 @@ @RequiredArgsConstructor public final class UniversityFixture { - private final UniversityRepository universityRepository; - - public UniversityBuilder university() { - return new UniversityBuilder(); - } - - public class UniversityBuilder { - - private String koreanName; - private String englishName; - private String formatName; - private Country country; - private Region region; - - public UniversityBuilder koreanName(String koreanName) { - this.koreanName = koreanName; - return this; - } - - public UniversityBuilder englishName(String englishName) { - this.englishName = englishName; - return this; - } - - public UniversityBuilder formatName(String formatName) { - this.formatName = formatName; - return this; - } - - public UniversityBuilder country(Country country) { - this.country = country; - return this; - } - - public UniversityBuilder region(Region region) { - this.region = region; - return this; - } - - public University create() { - University university = new University( - null, koreanName, englishName, formatName, - "https://homepage-url", - "https://english-course-url", - "https://accommodation-url", - "https://logo-image-url", - "https://background-image-url", - null, country, region - ); - return universityRepository.save(university); - } + private final RegionFixture regionFixture; + private final CountryFixture countryFixture; + private final UniversityFixtureBuilder universityFixtureBuilder; + + public University 괌_대학() { + return universityFixtureBuilder.university() + .koreanName("괌 대학") + .englishName("University of Guam") + .country(countryFixture.미국()) + .region(regionFixture.영미권()) + .create(); } } diff --git a/src/test/java/com/example/solidconnection/support/fixture/UniversityFixtureBuilder.java b/src/test/java/com/example/solidconnection/support/fixture/UniversityFixtureBuilder.java new file mode 100644 index 000000000..33d2ffceb --- /dev/null +++ b/src/test/java/com/example/solidconnection/support/fixture/UniversityFixtureBuilder.java @@ -0,0 +1,58 @@ +package com.example.solidconnection.support.fixture; + +import com.example.solidconnection.entity.Country; +import com.example.solidconnection.entity.Region; +import com.example.solidconnection.university.domain.University; +import com.example.solidconnection.university.repository.UniversityRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.test.context.TestComponent; + +@TestComponent +@RequiredArgsConstructor +public class UniversityFixtureBuilder { + + private final UniversityRepository universityRepository; + + private String koreanName; + private String englishName; + private Country country; + private Region region; + + public UniversityFixtureBuilder university() { + return new UniversityFixtureBuilder(universityRepository); + } + + public UniversityFixtureBuilder koreanName(String koreanName) { + this.koreanName = koreanName; + return this; + } + + public UniversityFixtureBuilder englishName(String englishName) { + this.englishName = englishName; + return this; + } + + public UniversityFixtureBuilder country(Country country) { + this.country = country; + return this; + } + + public UniversityFixtureBuilder region(Region region) { + this.region = region; + return this; + } + + public University create() { + University university = new University( + null, koreanName, englishName, + "formatName", + "https://homepage-url", + "https://english-course-url", + "https://accommodation-url", + "https://logo-image-url", + "https://background-image-url", + null, country, region + ); + return universityRepository.save(university); + } +} diff --git a/src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixture.java b/src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixture.java index 991863f4d..1e21ab72f 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixture.java +++ b/src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixture.java @@ -1,56 +1,21 @@ package com.example.solidconnection.support.fixture; -import com.example.solidconnection.university.domain.University; import com.example.solidconnection.university.domain.UniversityInfoForApply; -import com.example.solidconnection.university.repository.UniversityInfoForApplyRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; -import java.util.HashSet; - -import static com.example.solidconnection.type.SemesterAvailableForDispatch.ONE_SEMESTER; -import static com.example.solidconnection.type.TuitionFeeType.HOME_UNIVERSITY_PAYMENT; - @Component @RequiredArgsConstructor public class UniversityInfoForApplyFixture { - private final UniversityInfoForApplyRepository universityInfoForApplyRepository; - - public UniversityInfoForApplyBuilder universityInfoForApply() { - return new UniversityInfoForApplyBuilder(); - } - - public class UniversityInfoForApplyBuilder { - - private String term; - private String koreanName; - private University university; - - public UniversityInfoForApplyBuilder term(String term) { - this.term = term; - return this; - } - - public UniversityInfoForApplyBuilder koreanName(String koreanName) { - this.koreanName = koreanName; - return this; - } - - public UniversityInfoForApplyBuilder university(University university) { - this.university = university; - return this; - } + private final UniversityInfoForApplyFixtureBuilder universityInfoForApplyFixtureBuilder; + private final UniversityFixture universityFixture; - public UniversityInfoForApply create() { - UniversityInfoForApply universityInfoForApply = new UniversityInfoForApply( - null, term, koreanName, 1, HOME_UNIVERSITY_PAYMENT, ONE_SEMESTER, - "1", "detailsForLanguage", "gpaRequirement", - "gpaRequirementCriteria", "detailsForApply", "detailsForMajor", - "detailsForAccommodation", "detailsForEnglishCourse", "details", - new HashSet<>(), university - ); - return universityInfoForApplyRepository.save(universityInfoForApply); - } + public UniversityInfoForApply 괌대학_A_지원_정보() { + return universityInfoForApplyFixtureBuilder.universityInfoForApply() + .term("2024-1") + .koreanName("괌대학 A 지원 정보") + .university(universityFixture.괌_대학()) + .create(); } } diff --git a/src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixtureBuilder.java b/src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixtureBuilder.java new file mode 100644 index 000000000..2b3d39a35 --- /dev/null +++ b/src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixtureBuilder.java @@ -0,0 +1,53 @@ +package com.example.solidconnection.support.fixture; + +import com.example.solidconnection.university.domain.University; +import com.example.solidconnection.university.domain.UniversityInfoForApply; +import com.example.solidconnection.university.repository.UniversityInfoForApplyRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.test.context.TestComponent; + +import java.util.HashSet; + +import static com.example.solidconnection.type.SemesterAvailableForDispatch.ONE_SEMESTER; +import static com.example.solidconnection.type.TuitionFeeType.HOME_UNIVERSITY_PAYMENT; + +@TestComponent +@RequiredArgsConstructor +public class UniversityInfoForApplyFixtureBuilder { + + private final UniversityInfoForApplyRepository universityInfoForApplyRepository; + + private String term; + private String koreanName; + private University university; + + public UniversityInfoForApplyFixtureBuilder universityInfoForApply() { + return new UniversityInfoForApplyFixtureBuilder(universityInfoForApplyRepository); + } + + public UniversityInfoForApplyFixtureBuilder term(String term) { + this.term = term; + return this; + } + + public UniversityInfoForApplyFixtureBuilder koreanName(String koreanName) { + this.koreanName = koreanName; + return this; + } + + public UniversityInfoForApplyFixtureBuilder university(University university) { + this.university = university; + return this; + } + + public UniversityInfoForApply create() { + UniversityInfoForApply universityInfoForApply = new UniversityInfoForApply( + null, term, koreanName, 1, HOME_UNIVERSITY_PAYMENT, ONE_SEMESTER, + "1", "detailsForLanguage", "gpaRequirement", + "gpaRequirementCriteria", "detailsForApply", "detailsForMajor", + "detailsForAccommodation", "detailsForEnglishCourse", "details", + new HashSet<>(), university + ); + return universityInfoForApplyRepository.save(universityInfoForApply); + } +} diff --git a/src/test/java/com/example/solidconnection/university/fixture/UniversityFixtureHelper.java b/src/test/java/com/example/solidconnection/university/fixture/UniversityFixtureHelper.java index 1fb039fef..44d92fe07 100644 --- a/src/test/java/com/example/solidconnection/university/fixture/UniversityFixtureHelper.java +++ b/src/test/java/com/example/solidconnection/university/fixture/UniversityFixtureHelper.java @@ -2,11 +2,11 @@ import com.example.solidconnection.entity.Country; import com.example.solidconnection.entity.Region; -import com.example.solidconnection.support.fixture.CountryFixture; +import com.example.solidconnection.support.fixture.CountryFixtureBuilder; import com.example.solidconnection.support.fixture.LanguageRequirementFixture; -import com.example.solidconnection.support.fixture.RegionFixture; -import com.example.solidconnection.support.fixture.UniversityFixture; -import com.example.solidconnection.support.fixture.UniversityInfoForApplyFixture; +import com.example.solidconnection.support.fixture.RegionFixtureBuilder; +import com.example.solidconnection.support.fixture.UniversityFixtureBuilder; +import com.example.solidconnection.support.fixture.UniversityInfoForApplyFixtureBuilder; import com.example.solidconnection.type.LanguageTestType; import com.example.solidconnection.university.domain.LanguageRequirement; import com.example.solidconnection.university.domain.University; @@ -23,10 +23,10 @@ @RequiredArgsConstructor public class UniversityFixtureHelper { - private final CountryFixture countryFixture; - private final RegionFixture regionFixture; - private final UniversityFixture universityFixture; - private final UniversityInfoForApplyFixture universityInfoForApplyFixture; + private final CountryFixtureBuilder countryFixture; + private final RegionFixtureBuilder regionFixture; + private final UniversityFixtureBuilder universityFixture; + private final UniversityInfoForApplyFixtureBuilder universityInfoForApplyFixture; private final LanguageRequirementFixture languageRequirementFixture; @Value("${university.term}") @@ -59,18 +59,17 @@ public class UniversityFixtureHelper { Region region = regionFixture.region() .code(regionCode) .koreanName(regionKoreanName) - .create(); + .findOrCreate(); Country country = countryFixture.country() .code(countryCode) .koreanName(countryKoreanName) .region(region) - .create(); + .findOrCreate(); University university = universityFixture.university() .koreanName(universityKoreanName) .englishName(universityEnglishName) - .formatName(universityFormatName) .country(country) .region(region) .create(); diff --git a/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java b/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java index 08e56f70d..a64378d08 100644 --- a/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java +++ b/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java @@ -2,11 +2,12 @@ import com.example.solidconnection.custom.exception.CustomException; import com.example.solidconnection.support.TestContainerSpringBootTest; +import com.example.solidconnection.support.fixture.UniversityInfoForApplyFixture; import com.example.solidconnection.type.LanguageTestType; +import com.example.solidconnection.university.domain.UniversityInfoForApply; import com.example.solidconnection.university.dto.UniversityDetailResponse; import com.example.solidconnection.university.dto.UniversityInfoForApplyPreviewResponse; import com.example.solidconnection.university.dto.UniversityInfoForApplyPreviewResponses; -import com.example.solidconnection.university.fixture.UniversityData; import com.example.solidconnection.university.fixture.UniversityFixtureHelper; import com.example.solidconnection.university.repository.UniversityInfoForApplyRepository; import com.example.solidconnection.university.repository.custom.UniversityFilterRepository; @@ -40,29 +41,32 @@ class UniversityQueryServiceTest { @SpyBean private UniversityInfoForApplyRepository universityInfoForApplyRepository; - private UniversityData 괌대학_A; + private UniversityInfoForApply 괌대학_A_지원_정보; + + @Autowired + private UniversityInfoForApplyFixture universityInfoForApplyFixture; @BeforeEach void setUp() { - 괌대학_A = universityFixtureHelper.괌대학_A_생성(); + 괌대학_A_지원_정보 = universityInfoForApplyFixture.괌대학_A_지원_정보(); } @Test void 대학_상세정보를_정상_조회한다() { // given - Long universityId = 괌대학_A.대학().getId(); + Long universityId = 괌대학_A_지원_정보.getId(); // when UniversityDetailResponse response = universityQueryService.getUniversityDetail(universityId); // then - assertThat(response.id()).isEqualTo(괌대학_A.대학_지원_정보().getId()); + assertThat(response.id()).isEqualTo(괌대학_A_지원_정보.getId()); } @Test void 대학_상세정보_조회시_캐시가_적용된다() { // given - Long universityId = 괌대학_A.대학().getId(); + Long universityId = 괌대학_A_지원_정보.getId(); // when UniversityDetailResponse firstResponse = universityQueryService.getUniversityDetail(universityId); @@ -95,7 +99,7 @@ void setUp() { // then assertThat(response.universityInfoForApplyPreviewResponses()) .containsExactlyInAnyOrder( - UniversityInfoForApplyPreviewResponse.from(괌대학_A.대학_지원_정보()) + UniversityInfoForApplyPreviewResponse.from(괌대학_A_지원_정보) // UniversityInfoForApplyPreviewResponse.from(괌대학_B_지원_정보), // UniversityInfoForApplyPreviewResponse.from(네바다주립대학_라스베이거스_지원_정보), // UniversityInfoForApplyPreviewResponse.from(메모리얼대학_세인트존스_A_지원_정보), @@ -139,7 +143,7 @@ void setUp() { // then assertThat(response.universityInfoForApplyPreviewResponses()) .containsExactlyInAnyOrder( - UniversityInfoForApplyPreviewResponse.from(괌대학_A.대학_지원_정보()) + UniversityInfoForApplyPreviewResponse.from(괌대학_A_지원_정보) // UniversityInfoForApplyPreviewResponse.from(괌대학_B_지원_정보), // UniversityInfoForApplyPreviewResponse.from(네바다주립대학_라스베이거스_지원_정보), // UniversityInfoForApplyPreviewResponse.from(메모리얼대학_세인트존스_A_지원_정보) From 3553287d2eaa7333a4da70cd6df34224ee3f1737 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Wed, 7 May 2025 00:19:13 +0900 Subject: [PATCH 09/18] =?UTF-8?q?refactor:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20?= =?UTF-8?q?@TestComponent=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fixture/LanguageRequirementFixture.java | 4 +- .../support/fixture/RegionFixture.java | 4 +- .../support/fixture/UniversityFixture.java | 4 +- .../UniversityInfoForApplyFixture.java | 4 +- .../university/fixture/UniversityData.java | 18 ---- .../fixture/UniversityFixtureHelper.java | 102 ------------------ .../service/UniversityQueryServiceTest.java | 4 - 7 files changed, 8 insertions(+), 132 deletions(-) delete mode 100644 src/test/java/com/example/solidconnection/university/fixture/UniversityData.java delete mode 100644 src/test/java/com/example/solidconnection/university/fixture/UniversityFixtureHelper.java diff --git a/src/test/java/com/example/solidconnection/support/fixture/LanguageRequirementFixture.java b/src/test/java/com/example/solidconnection/support/fixture/LanguageRequirementFixture.java index 30cf9ee71..22fd3d76b 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/LanguageRequirementFixture.java +++ b/src/test/java/com/example/solidconnection/support/fixture/LanguageRequirementFixture.java @@ -5,9 +5,9 @@ import com.example.solidconnection.university.domain.UniversityInfoForApply; import com.example.solidconnection.university.repository.LanguageRequirementRepository; import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; +import org.springframework.boot.test.context.TestComponent; -@Component +@TestComponent @RequiredArgsConstructor public class LanguageRequirementFixture { diff --git a/src/test/java/com/example/solidconnection/support/fixture/RegionFixture.java b/src/test/java/com/example/solidconnection/support/fixture/RegionFixture.java index 56a99e4d3..86c20eb08 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/RegionFixture.java +++ b/src/test/java/com/example/solidconnection/support/fixture/RegionFixture.java @@ -2,9 +2,9 @@ import com.example.solidconnection.entity.Region; import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; +import org.springframework.boot.test.context.TestComponent; -@Component +@TestComponent @RequiredArgsConstructor public class RegionFixture { diff --git a/src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java b/src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java index b3c435b0c..32fde039c 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java +++ b/src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java @@ -2,9 +2,9 @@ import com.example.solidconnection.university.domain.University; import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; +import org.springframework.boot.test.context.TestComponent; -@Component +@TestComponent @RequiredArgsConstructor public final class UniversityFixture { diff --git a/src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixture.java b/src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixture.java index 1e21ab72f..e219d35d6 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixture.java +++ b/src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixture.java @@ -2,9 +2,9 @@ import com.example.solidconnection.university.domain.UniversityInfoForApply; import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; +import org.springframework.boot.test.context.TestComponent; -@Component +@TestComponent @RequiredArgsConstructor public class UniversityInfoForApplyFixture { diff --git a/src/test/java/com/example/solidconnection/university/fixture/UniversityData.java b/src/test/java/com/example/solidconnection/university/fixture/UniversityData.java deleted file mode 100644 index 700136cd0..000000000 --- a/src/test/java/com/example/solidconnection/university/fixture/UniversityData.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.example.solidconnection.university.fixture; - -import com.example.solidconnection.entity.Country; -import com.example.solidconnection.entity.Region; -import com.example.solidconnection.university.domain.LanguageRequirement; -import com.example.solidconnection.university.domain.University; -import com.example.solidconnection.university.domain.UniversityInfoForApply; - -import java.util.Set; - -public record UniversityData( - Region 지역, - Country 국가, - University 대학, - UniversityInfoForApply 대학_지원_정보, - Set 언어_요구사항들 -) { -} diff --git a/src/test/java/com/example/solidconnection/university/fixture/UniversityFixtureHelper.java b/src/test/java/com/example/solidconnection/university/fixture/UniversityFixtureHelper.java deleted file mode 100644 index 44d92fe07..000000000 --- a/src/test/java/com/example/solidconnection/university/fixture/UniversityFixtureHelper.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.example.solidconnection.university.fixture; - -import com.example.solidconnection.entity.Country; -import com.example.solidconnection.entity.Region; -import com.example.solidconnection.support.fixture.CountryFixtureBuilder; -import com.example.solidconnection.support.fixture.LanguageRequirementFixture; -import com.example.solidconnection.support.fixture.RegionFixtureBuilder; -import com.example.solidconnection.support.fixture.UniversityFixtureBuilder; -import com.example.solidconnection.support.fixture.UniversityInfoForApplyFixtureBuilder; -import com.example.solidconnection.type.LanguageTestType; -import com.example.solidconnection.university.domain.LanguageRequirement; -import com.example.solidconnection.university.domain.University; -import com.example.solidconnection.university.domain.UniversityInfoForApply; -import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -@Component -@RequiredArgsConstructor -public class UniversityFixtureHelper { - - private final CountryFixtureBuilder countryFixture; - private final RegionFixtureBuilder regionFixture; - private final UniversityFixtureBuilder universityFixture; - private final UniversityInfoForApplyFixtureBuilder universityInfoForApplyFixture; - private final LanguageRequirementFixture languageRequirementFixture; - - @Value("${university.term}") - public String term; - - public UniversityData 괌대학_A_생성() { - return 대학_생성( - "AMERICAS", "영미권", - "US", "미국", - "괌대학", "University of Guam", "university_of_guam", - "괌대학(A형)", - Map.of( - LanguageTestType.TOEFL_IBT, "80", - LanguageTestType.TOEIC, "800" - ) - ); - } - - private UniversityData 대학_생성( - String regionCode, - String regionKoreanName, - String countryCode, - String countryKoreanName, - String universityKoreanName, - String universityEnglishName, - String universityFormatName, - String infoKoreanName, - Map languageRequirementMap) { - - Region region = regionFixture.region() - .code(regionCode) - .koreanName(regionKoreanName) - .findOrCreate(); - - Country country = countryFixture.country() - .code(countryCode) - .koreanName(countryKoreanName) - .region(region) - .findOrCreate(); - - University university = universityFixture.university() - .koreanName(universityKoreanName) - .englishName(universityEnglishName) - .country(country) - .region(region) - .create(); - - UniversityInfoForApply universityInfoForApply = universityInfoForApplyFixture.universityInfoForApply() - .term(term) - .koreanName(infoKoreanName) - .university(university) - .create(); - - Set languageRequirements = new HashSet<>(); - for (Map.Entry entry : languageRequirementMap.entrySet()) { - LanguageRequirement languageRequirement = languageRequirementFixture.languageRequirement() - .languageTestType(entry.getKey()) - .minScore(entry.getValue()) - .universityInfoForApply(universityInfoForApply) - .create(); - languageRequirements.add(languageRequirement); - universityInfoForApply.addLanguageRequirements(languageRequirement); - } - - return new UniversityData( - region, - country, - university, - universityInfoForApply, - languageRequirements - ); - } -} diff --git a/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java b/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java index a64378d08..ea32c73e1 100644 --- a/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java +++ b/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java @@ -8,7 +8,6 @@ import com.example.solidconnection.university.dto.UniversityDetailResponse; import com.example.solidconnection.university.dto.UniversityInfoForApplyPreviewResponse; import com.example.solidconnection.university.dto.UniversityInfoForApplyPreviewResponses; -import com.example.solidconnection.university.fixture.UniversityFixtureHelper; import com.example.solidconnection.university.repository.UniversityInfoForApplyRepository; import com.example.solidconnection.university.repository.custom.UniversityFilterRepository; import org.junit.jupiter.api.BeforeEach; @@ -32,9 +31,6 @@ class UniversityQueryServiceTest { @Autowired private UniversityQueryService universityQueryService; - @Autowired - private UniversityFixtureHelper universityFixtureHelper; - @SpyBean private UniversityFilterRepository universityFilterRepository; From 28ea0cb7e0cd7f0b9907d8ca7d23bf9e8ae25191 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Sat, 10 May 2025 14:32:47 +0900 Subject: [PATCH 10/18] =?UTF-8?q?refactor:=20=ED=8C=A8=ED=82=A4=EC=A7=80?= =?UTF-8?q?=20=EA=B5=AC=EC=A1=B0=EB=A5=BC=20=EB=8F=84=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EC=A4=91=EC=8B=AC=EC=9C=BC=EB=A1=9C=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{support => country}/fixture/CountryFixture.java | 3 ++- .../{support => country}/fixture/CountryFixtureBuilder.java | 3 ++- .../repository}/CountryRepositoryForTest.java | 4 +--- .../{support => region}/fixture/RegionFixture.java | 2 +- .../{support => region}/fixture/RegionFixtureBuilder.java | 3 ++- .../repository}/RegionRepositoryForTest.java | 4 +--- .../solidconnection/support/TestContainerSpringBootTest.java | 2 +- .../fixture/LanguageRequirementFixture.java | 2 +- .../{support => university}/fixture/UniversityFixture.java | 4 +++- .../fixture/UniversityFixtureBuilder.java | 2 +- .../fixture/UniversityInfoForApplyFixture.java | 2 +- .../fixture/UniversityInfoForApplyFixtureBuilder.java | 2 +- .../university/service/UniversityQueryServiceTest.java | 2 +- 13 files changed, 18 insertions(+), 17 deletions(-) rename src/test/java/com/example/solidconnection/{support => country}/fixture/CountryFixture.java (82%) rename src/test/java/com/example/solidconnection/{support => country}/fixture/CountryFixtureBuilder.java (89%) rename src/test/java/com/example/solidconnection/{support/fixture => country/repository}/CountryRepositoryForTest.java (70%) rename src/test/java/com/example/solidconnection/{support => region}/fixture/RegionFixture.java (89%) rename src/test/java/com/example/solidconnection/{support => region}/fixture/RegionFixtureBuilder.java (87%) rename src/test/java/com/example/solidconnection/{support/fixture => region/repository}/RegionRepositoryForTest.java (70%) rename src/test/java/com/example/solidconnection/{support => university}/fixture/LanguageRequirementFixture.java (96%) rename src/test/java/com/example/solidconnection/{support => university}/fixture/UniversityFixture.java (79%) rename src/test/java/com/example/solidconnection/{support => university}/fixture/UniversityFixtureBuilder.java (96%) rename src/test/java/com/example/solidconnection/{support => university}/fixture/UniversityInfoForApplyFixture.java (92%) rename src/test/java/com/example/solidconnection/{support => university}/fixture/UniversityInfoForApplyFixtureBuilder.java (97%) diff --git a/src/test/java/com/example/solidconnection/support/fixture/CountryFixture.java b/src/test/java/com/example/solidconnection/country/fixture/CountryFixture.java similarity index 82% rename from src/test/java/com/example/solidconnection/support/fixture/CountryFixture.java rename to src/test/java/com/example/solidconnection/country/fixture/CountryFixture.java index 05d0641c2..0a8a2a262 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/CountryFixture.java +++ b/src/test/java/com/example/solidconnection/country/fixture/CountryFixture.java @@ -1,6 +1,7 @@ -package com.example.solidconnection.support.fixture; +package com.example.solidconnection.country.fixture; import com.example.solidconnection.entity.Country; +import com.example.solidconnection.region.fixture.RegionFixture; import lombok.RequiredArgsConstructor; import org.springframework.boot.test.context.TestComponent; diff --git a/src/test/java/com/example/solidconnection/support/fixture/CountryFixtureBuilder.java b/src/test/java/com/example/solidconnection/country/fixture/CountryFixtureBuilder.java similarity index 89% rename from src/test/java/com/example/solidconnection/support/fixture/CountryFixtureBuilder.java rename to src/test/java/com/example/solidconnection/country/fixture/CountryFixtureBuilder.java index debed8916..e3ea004c5 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/CountryFixtureBuilder.java +++ b/src/test/java/com/example/solidconnection/country/fixture/CountryFixtureBuilder.java @@ -1,7 +1,8 @@ -package com.example.solidconnection.support.fixture; +package com.example.solidconnection.country.fixture; import com.example.solidconnection.entity.Country; import com.example.solidconnection.entity.Region; +import com.example.solidconnection.country.repository.CountryRepositoryForTest; import lombok.RequiredArgsConstructor; import org.springframework.boot.test.context.TestComponent; diff --git a/src/test/java/com/example/solidconnection/support/fixture/CountryRepositoryForTest.java b/src/test/java/com/example/solidconnection/country/repository/CountryRepositoryForTest.java similarity index 70% rename from src/test/java/com/example/solidconnection/support/fixture/CountryRepositoryForTest.java rename to src/test/java/com/example/solidconnection/country/repository/CountryRepositoryForTest.java index c58e0d4e9..fc5dab0f9 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/CountryRepositoryForTest.java +++ b/src/test/java/com/example/solidconnection/country/repository/CountryRepositoryForTest.java @@ -1,12 +1,10 @@ -package com.example.solidconnection.support.fixture; +package com.example.solidconnection.country.repository; import com.example.solidconnection.entity.Country; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; import java.util.Optional; -@Repository public interface CountryRepositoryForTest extends JpaRepository { Optional findByCode(String code); diff --git a/src/test/java/com/example/solidconnection/support/fixture/RegionFixture.java b/src/test/java/com/example/solidconnection/region/fixture/RegionFixture.java similarity index 89% rename from src/test/java/com/example/solidconnection/support/fixture/RegionFixture.java rename to src/test/java/com/example/solidconnection/region/fixture/RegionFixture.java index 86c20eb08..602622086 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/RegionFixture.java +++ b/src/test/java/com/example/solidconnection/region/fixture/RegionFixture.java @@ -1,4 +1,4 @@ -package com.example.solidconnection.support.fixture; +package com.example.solidconnection.region.fixture; import com.example.solidconnection.entity.Region; import lombok.RequiredArgsConstructor; diff --git a/src/test/java/com/example/solidconnection/support/fixture/RegionFixtureBuilder.java b/src/test/java/com/example/solidconnection/region/fixture/RegionFixtureBuilder.java similarity index 87% rename from src/test/java/com/example/solidconnection/support/fixture/RegionFixtureBuilder.java rename to src/test/java/com/example/solidconnection/region/fixture/RegionFixtureBuilder.java index 386da2fd8..a385a53f8 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/RegionFixtureBuilder.java +++ b/src/test/java/com/example/solidconnection/region/fixture/RegionFixtureBuilder.java @@ -1,6 +1,7 @@ -package com.example.solidconnection.support.fixture; +package com.example.solidconnection.region.fixture; import com.example.solidconnection.entity.Region; +import com.example.solidconnection.region.repository.RegionRepositoryForTest; import lombok.RequiredArgsConstructor; import org.springframework.boot.test.context.TestComponent; diff --git a/src/test/java/com/example/solidconnection/support/fixture/RegionRepositoryForTest.java b/src/test/java/com/example/solidconnection/region/repository/RegionRepositoryForTest.java similarity index 70% rename from src/test/java/com/example/solidconnection/support/fixture/RegionRepositoryForTest.java rename to src/test/java/com/example/solidconnection/region/repository/RegionRepositoryForTest.java index 274b6c0a7..00c35c02d 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/RegionRepositoryForTest.java +++ b/src/test/java/com/example/solidconnection/region/repository/RegionRepositoryForTest.java @@ -1,12 +1,10 @@ -package com.example.solidconnection.support.fixture; +package com.example.solidconnection.region.repository; import com.example.solidconnection.entity.Region; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; import java.util.Optional; -@Repository public interface RegionRepositoryForTest extends JpaRepository { Optional findByCode(String code); diff --git a/src/test/java/com/example/solidconnection/support/TestContainerSpringBootTest.java b/src/test/java/com/example/solidconnection/support/TestContainerSpringBootTest.java index 511412174..462400400 100644 --- a/src/test/java/com/example/solidconnection/support/TestContainerSpringBootTest.java +++ b/src/test/java/com/example/solidconnection/support/TestContainerSpringBootTest.java @@ -12,7 +12,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -@ComponentScan(basePackages = "com.example.solidconnection.support.fixture") +@ComponentScan(basePackages = "com.example.solidconnection") @ExtendWith({DatabaseClearExtension.class}) @ContextConfiguration(initializers = {RedisTestContainer.class, MySQLTestContainer.class}) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) diff --git a/src/test/java/com/example/solidconnection/support/fixture/LanguageRequirementFixture.java b/src/test/java/com/example/solidconnection/university/fixture/LanguageRequirementFixture.java similarity index 96% rename from src/test/java/com/example/solidconnection/support/fixture/LanguageRequirementFixture.java rename to src/test/java/com/example/solidconnection/university/fixture/LanguageRequirementFixture.java index 22fd3d76b..13d5a9120 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/LanguageRequirementFixture.java +++ b/src/test/java/com/example/solidconnection/university/fixture/LanguageRequirementFixture.java @@ -1,4 +1,4 @@ -package com.example.solidconnection.support.fixture; +package com.example.solidconnection.university.fixture; import com.example.solidconnection.type.LanguageTestType; import com.example.solidconnection.university.domain.LanguageRequirement; diff --git a/src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java b/src/test/java/com/example/solidconnection/university/fixture/UniversityFixture.java similarity index 79% rename from src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java rename to src/test/java/com/example/solidconnection/university/fixture/UniversityFixture.java index 32fde039c..2977bc8fd 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/UniversityFixture.java +++ b/src/test/java/com/example/solidconnection/university/fixture/UniversityFixture.java @@ -1,5 +1,7 @@ -package com.example.solidconnection.support.fixture; +package com.example.solidconnection.university.fixture; +import com.example.solidconnection.country.fixture.CountryFixture; +import com.example.solidconnection.region.fixture.RegionFixture; import com.example.solidconnection.university.domain.University; import lombok.RequiredArgsConstructor; import org.springframework.boot.test.context.TestComponent; diff --git a/src/test/java/com/example/solidconnection/support/fixture/UniversityFixtureBuilder.java b/src/test/java/com/example/solidconnection/university/fixture/UniversityFixtureBuilder.java similarity index 96% rename from src/test/java/com/example/solidconnection/support/fixture/UniversityFixtureBuilder.java rename to src/test/java/com/example/solidconnection/university/fixture/UniversityFixtureBuilder.java index 33d2ffceb..f51ea9677 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/UniversityFixtureBuilder.java +++ b/src/test/java/com/example/solidconnection/university/fixture/UniversityFixtureBuilder.java @@ -1,4 +1,4 @@ -package com.example.solidconnection.support.fixture; +package com.example.solidconnection.university.fixture; import com.example.solidconnection.entity.Country; import com.example.solidconnection.entity.Region; diff --git a/src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixture.java b/src/test/java/com/example/solidconnection/university/fixture/UniversityInfoForApplyFixture.java similarity index 92% rename from src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixture.java rename to src/test/java/com/example/solidconnection/university/fixture/UniversityInfoForApplyFixture.java index e219d35d6..1ad43e4f8 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixture.java +++ b/src/test/java/com/example/solidconnection/university/fixture/UniversityInfoForApplyFixture.java @@ -1,4 +1,4 @@ -package com.example.solidconnection.support.fixture; +package com.example.solidconnection.university.fixture; import com.example.solidconnection.university.domain.UniversityInfoForApply; import lombok.RequiredArgsConstructor; diff --git a/src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixtureBuilder.java b/src/test/java/com/example/solidconnection/university/fixture/UniversityInfoForApplyFixtureBuilder.java similarity index 97% rename from src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixtureBuilder.java rename to src/test/java/com/example/solidconnection/university/fixture/UniversityInfoForApplyFixtureBuilder.java index 2b3d39a35..8041bda1e 100644 --- a/src/test/java/com/example/solidconnection/support/fixture/UniversityInfoForApplyFixtureBuilder.java +++ b/src/test/java/com/example/solidconnection/university/fixture/UniversityInfoForApplyFixtureBuilder.java @@ -1,4 +1,4 @@ -package com.example.solidconnection.support.fixture; +package com.example.solidconnection.university.fixture; import com.example.solidconnection.university.domain.University; import com.example.solidconnection.university.domain.UniversityInfoForApply; diff --git a/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java b/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java index ea32c73e1..1b892ac45 100644 --- a/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java +++ b/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java @@ -2,7 +2,7 @@ import com.example.solidconnection.custom.exception.CustomException; import com.example.solidconnection.support.TestContainerSpringBootTest; -import com.example.solidconnection.support.fixture.UniversityInfoForApplyFixture; +import com.example.solidconnection.university.fixture.UniversityInfoForApplyFixture; import com.example.solidconnection.type.LanguageTestType; import com.example.solidconnection.university.domain.UniversityInfoForApply; import com.example.solidconnection.university.dto.UniversityDetailResponse; From 602e4942367e99ae717db76f85c927077afb867d Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Sat, 10 May 2025 14:35:43 +0900 Subject: [PATCH 11/18] =?UTF-8?q?feat:=20RegionFixture=EC=97=90=20?= =?UTF-8?q?=EC=A7=80=EC=97=AD=20=EC=83=9D=EC=84=B1=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../region/fixture/RegionFixture.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/test/java/com/example/solidconnection/region/fixture/RegionFixture.java b/src/test/java/com/example/solidconnection/region/fixture/RegionFixture.java index 602622086..a1cd97e56 100644 --- a/src/test/java/com/example/solidconnection/region/fixture/RegionFixture.java +++ b/src/test/java/com/example/solidconnection/region/fixture/RegionFixture.java @@ -16,4 +16,18 @@ public class RegionFixture { .koreanName("영미권") .findOrCreate(); } + + public Region 유럽() { + return regionFixtureBuilder.region() + .code("EUROPE") + .koreanName("유럽") + .findOrCreate(); + } + + public Region 아시아() { + return regionFixtureBuilder.region() + .code("ASIA") + .koreanName("아시아") + .findOrCreate(); + } } From efa00128333da465b878ec4696ce5108e2ac4826 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Sat, 10 May 2025 14:37:33 +0900 Subject: [PATCH 12/18] =?UTF-8?q?feat:=20CountryFixture=EC=97=90=20?= =?UTF-8?q?=EA=B5=AD=EA=B0=80=20=EC=83=9D=EC=84=B1=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../country/fixture/CountryFixture.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/test/java/com/example/solidconnection/country/fixture/CountryFixture.java b/src/test/java/com/example/solidconnection/country/fixture/CountryFixture.java index 0a8a2a262..53f394eae 100644 --- a/src/test/java/com/example/solidconnection/country/fixture/CountryFixture.java +++ b/src/test/java/com/example/solidconnection/country/fixture/CountryFixture.java @@ -19,4 +19,36 @@ public class CountryFixture { .region(regionFixture.영미권()) .findOrCreate(); } + + public Country 캐나다() { + return countryFixtureBuilder.country() + .code("CA") + .koreanName("캐나다") + .region(regionFixture.영미권()) + .findOrCreate(); + } + + public Country 덴마크() { + return countryFixtureBuilder.country() + .code("DK") + .koreanName("덴마크") + .region(regionFixture.유럽()) + .findOrCreate(); + } + + public Country 오스트리아() { + return countryFixtureBuilder.country() + .code("AT") + .koreanName("오스트리아") + .region(regionFixture.유럽()) + .findOrCreate(); + } + + public Country 일본() { + return countryFixtureBuilder.country() + .code("JP") + .koreanName("일본") + .region(regionFixture.아시아()) + .findOrCreate(); + } } From d47db4cea1ccfa75b591184ef2ad8a5b613499ac Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Sat, 10 May 2025 14:44:05 +0900 Subject: [PATCH 13/18] =?UTF-8?q?feat:=20UniversityFixture=EC=97=90=20?= =?UTF-8?q?=EB=8C=80=ED=95=99=20=EC=83=9D=EC=84=B1=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../university/fixture/UniversityFixture.java | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/src/test/java/com/example/solidconnection/university/fixture/UniversityFixture.java b/src/test/java/com/example/solidconnection/university/fixture/UniversityFixture.java index 2977bc8fd..f3a41515f 100644 --- a/src/test/java/com/example/solidconnection/university/fixture/UniversityFixture.java +++ b/src/test/java/com/example/solidconnection/university/fixture/UniversityFixture.java @@ -22,4 +22,76 @@ public final class UniversityFixture { .region(regionFixture.영미권()) .create(); } + + public University 네바다주립_대학_라스베이거스() { + return universityFixtureBuilder.university() + .koreanName("네바다주립 대학 라스베이거스") + .englishName("University of Nevada, Las Vegas") + .country(countryFixture.미국()) + .region(regionFixture.영미권()) + .create(); + } + + public University 메모리얼_대학_세인트존스() { + return universityFixtureBuilder.university() + .koreanName("메모리얼 대학 세인트존스") + .englishName("Memorial University of Newfoundland St. John's") + .country(countryFixture.캐나다()) + .region(regionFixture.영미권()) + .create(); + } + + public University 서던덴마크_대학() { + return universityFixtureBuilder.university() + .koreanName("서던덴마크 대학") + .englishName("University of Southern Denmark") + .country(countryFixture.덴마크()) + .region(regionFixture.유럽()) + .create(); + } + + public University 코펜하겐IT_대학() { + return universityFixtureBuilder.university() + .koreanName("코펜하겐IT 대학") + .englishName("IT University of Copenhagen") + .country(countryFixture.덴마크()) + .region(regionFixture.유럽()) + .create(); + } + + public University 그라츠_대학() { + return universityFixtureBuilder.university() + .koreanName("그라츠 대학") + .englishName("University of Graz") + .country(countryFixture.오스트리아()) + .region(regionFixture.유럽()) + .create(); + } + + public University 그라츠공과_대학() { + return universityFixtureBuilder.university() + .koreanName("그라츠공과 대학") + .englishName("Graz University of Technology") + .country(countryFixture.오스트리아()) + .region(regionFixture.유럽()) + .create(); + } + + public University 린츠_카톨릭_대학() { + return universityFixtureBuilder.university() + .koreanName("린츠 카톨릭 대학") + .englishName("Catholic Private University Linz") + .country(countryFixture.오스트리아()) + .region(regionFixture.유럽()) + .create(); + } + + public University 메이지_대학() { + return universityFixtureBuilder.university() + .koreanName("메이지 대학") + .englishName("Meiji University") + .country(countryFixture.일본()) + .region(regionFixture.아시아()) + .create(); + } } From c0acfb10937a74f18849d43761169906000dab69 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Sat, 10 May 2025 14:49:56 +0900 Subject: [PATCH 14/18] =?UTF-8?q?feat:=20UniversityInfoForApplyFixture?= =?UTF-8?q?=EC=97=90=20=EB=8C=80=ED=95=99=20=EC=A7=80=EC=9B=90=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UniversityInfoForApplyFixture.java | 78 ++++++++++++++++++- 1 file changed, 77 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/example/solidconnection/university/fixture/UniversityInfoForApplyFixture.java b/src/test/java/com/example/solidconnection/university/fixture/UniversityInfoForApplyFixture.java index 1ad43e4f8..bb0290b57 100644 --- a/src/test/java/com/example/solidconnection/university/fixture/UniversityInfoForApplyFixture.java +++ b/src/test/java/com/example/solidconnection/university/fixture/UniversityInfoForApplyFixture.java @@ -2,6 +2,7 @@ import com.example.solidconnection.university.domain.UniversityInfoForApply; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.TestComponent; @TestComponent @@ -11,11 +12,86 @@ public class UniversityInfoForApplyFixture { private final UniversityInfoForApplyFixtureBuilder universityInfoForApplyFixtureBuilder; private final UniversityFixture universityFixture; + @Value("${university.term}") + public String term; + public UniversityInfoForApply 괌대학_A_지원_정보() { return universityInfoForApplyFixtureBuilder.universityInfoForApply() - .term("2024-1") + .term(term) .koreanName("괌대학 A 지원 정보") .university(universityFixture.괌_대학()) .create(); } + + public UniversityInfoForApply 괌대학_B_지원_정보() { + return universityInfoForApplyFixtureBuilder.universityInfoForApply() + .term(term) + .koreanName("괌대학 B 지원 정보") + .university(universityFixture.괌_대학()) + .create(); + } + + public UniversityInfoForApply 네바다주립대학_라스베이거스_지원_정보() { + return universityInfoForApplyFixtureBuilder.universityInfoForApply() + .term(term) + .koreanName("네바다주립대학 라스베이거스 지원 정보") + .university(universityFixture.네바다주립_대학_라스베이거스()) + .create(); + } + + public UniversityInfoForApply 메모리얼대학_세인트존스_A_지원_정보() { + return universityInfoForApplyFixtureBuilder.universityInfoForApply() + .term(term) + .koreanName("메모리얼대학 세인트존스 A 지원 정보") + .university(universityFixture.메모리얼_대학_세인트존스()) + .create(); + } + + public UniversityInfoForApply 서던덴마크대학교_지원_정보() { + return universityInfoForApplyFixtureBuilder.universityInfoForApply() + .term(term) + .koreanName("서던덴마크대학교 지원 정보") + .university(universityFixture.서던덴마크_대학()) + .create(); + } + + public UniversityInfoForApply 코펜하겐IT대학_지원_정보() { + return universityInfoForApplyFixtureBuilder.universityInfoForApply() + .term(term) + .koreanName("코펜하겐IT대학 지원 정보") + .university(universityFixture.코펜하겐IT_대학()) + .create(); + } + + public UniversityInfoForApply 그라츠대학_지원_정보() { + return universityInfoForApplyFixtureBuilder.universityInfoForApply() + .term(term) + .koreanName("그라츠대학 지원 정보") + .university(universityFixture.그라츠_대학()) + .create(); + } + + public UniversityInfoForApply 그라츠공과대학_지원_정보() { + return universityInfoForApplyFixtureBuilder.universityInfoForApply() + .term(term) + .koreanName("그라츠공과대학 지원 정보") + .university(universityFixture.그라츠공과_대학()) + .create(); + } + + public UniversityInfoForApply 린츠_카톨릭대학_지원_정보() { + return universityInfoForApplyFixtureBuilder.universityInfoForApply() + .term(term) + .koreanName("린츠 카톨릭대학 지원 정보") + .university(universityFixture.린츠_카톨릭_대학()) + .create(); + } + + public UniversityInfoForApply 메이지대학_지원_정보() { + return universityInfoForApplyFixtureBuilder.universityInfoForApply() + .term(term) + .koreanName("메이지대학 지원 정보") + .university(universityFixture.메이지_대학()) + .create(); + } } From c3a822e0f3e1510f7a0f4996b1eecc22cd0f4a8b Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Sat, 10 May 2025 16:09:39 +0900 Subject: [PATCH 15/18] =?UTF-8?q?feat:=20LanguageRequirementFixture?= =?UTF-8?q?=EC=97=90=20=EC=96=B8=EC=96=B4=20=EC=9A=94=EA=B5=AC=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20=EC=83=9D=EC=84=B1=20=EB=A9=94=EC=84=9C=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 --- .../fixture/LanguageRequirementFixture.java | 122 +++++++++++++----- .../LanguageRequirementFixtureBuilder.java | 45 +++++++ 2 files changed, 137 insertions(+), 30 deletions(-) create mode 100644 src/test/java/com/example/solidconnection/university/fixture/LanguageRequirementFixtureBuilder.java diff --git a/src/test/java/com/example/solidconnection/university/fixture/LanguageRequirementFixture.java b/src/test/java/com/example/solidconnection/university/fixture/LanguageRequirementFixture.java index 13d5a9120..d1f791026 100644 --- a/src/test/java/com/example/solidconnection/university/fixture/LanguageRequirementFixture.java +++ b/src/test/java/com/example/solidconnection/university/fixture/LanguageRequirementFixture.java @@ -1,9 +1,7 @@ package com.example.solidconnection.university.fixture; import com.example.solidconnection.type.LanguageTestType; -import com.example.solidconnection.university.domain.LanguageRequirement; import com.example.solidconnection.university.domain.UniversityInfoForApply; -import com.example.solidconnection.university.repository.LanguageRequirementRepository; import lombok.RequiredArgsConstructor; import org.springframework.boot.test.context.TestComponent; @@ -11,41 +9,105 @@ @RequiredArgsConstructor public class LanguageRequirementFixture { - private final LanguageRequirementRepository languageRequirementRepository; + private final LanguageRequirementFixtureBuilder languageRequirementFixtureBuilder; - public LanguageRequirementBuilder languageRequirement() { - return new LanguageRequirementBuilder(); + public UniversityInfoForApply 괌대학_A_언어요구사항(UniversityInfoForApply universityInfo) { + languageRequirementFixtureBuilder + .languageTestType(LanguageTestType.TOEFL_IBT) + .minScore("80") + .universityInfoForApply(universityInfo) + .create(); + languageRequirementFixtureBuilder + .languageTestType(LanguageTestType.TOEIC) + .minScore("800") + .universityInfoForApply(universityInfo) + .create(); + return universityInfo; } - public class LanguageRequirementBuilder { + public UniversityInfoForApply 괌대학_B_언어요구사항(UniversityInfoForApply universityInfo) { + languageRequirementFixtureBuilder + .languageTestType(LanguageTestType.TOEFL_IBT) + .minScore("70") + .universityInfoForApply(universityInfo) + .create(); + languageRequirementFixtureBuilder + .languageTestType(LanguageTestType.TOEIC) + .minScore("900") + .universityInfoForApply(universityInfo) + .create(); + return universityInfo; + } + + public UniversityInfoForApply 네바다주립_대학_라스베이거스_언어요구사항(UniversityInfoForApply universityInfo) { + languageRequirementFixtureBuilder + .languageTestType(LanguageTestType.TOEIC) + .minScore("800") + .universityInfoForApply(universityInfo) + .create(); + return universityInfo; + } - private LanguageTestType languageTestType; - private String minScore; - private UniversityInfoForApply universityInfoForApply; + public UniversityInfoForApply 메모리얼_대학_세인트존스_언어요구사항(UniversityInfoForApply universityInfo) { + languageRequirementFixtureBuilder + .languageTestType(LanguageTestType.TOEIC) + .minScore("800") + .universityInfoForApply(universityInfo) + .create(); + return universityInfo; + } - public LanguageRequirementBuilder languageTestType(LanguageTestType languageTestType) { - this.languageTestType = languageTestType; - return this; - } + public UniversityInfoForApply 서던덴마크_대학_언어요구사항(UniversityInfoForApply universityInfo) { + languageRequirementFixtureBuilder + .languageTestType(LanguageTestType.TOEFL_IBT) + .minScore("70") + .universityInfoForApply(universityInfo) + .create(); + return universityInfo; + } - public LanguageRequirementBuilder minScore(String minScore) { - this.minScore = minScore; - return this; - } + public UniversityInfoForApply 코펜하겐IT대학_언어요구사항(UniversityInfoForApply universityInfo) { + languageRequirementFixtureBuilder + .languageTestType(LanguageTestType.TOEFL_IBT) + .minScore("80") + .universityInfoForApply(universityInfo) + .create(); + return universityInfo; + } - public LanguageRequirementBuilder universityInfoForApply(UniversityInfoForApply universityInfoForApply) { - this.universityInfoForApply = universityInfoForApply; - return this; - } + public UniversityInfoForApply 그라츠대학_언어요구사항(UniversityInfoForApply universityInfo) { + languageRequirementFixtureBuilder + .languageTestType(LanguageTestType.TOEFL_IBT) + .minScore("80") + .universityInfoForApply(universityInfo) + .create(); + return universityInfo; + } + + public UniversityInfoForApply 그라츠공과대학_언어요구사항(UniversityInfoForApply universityInfo) { + languageRequirementFixtureBuilder + .languageTestType(LanguageTestType.TOEIC) + .minScore("800") + .universityInfoForApply(universityInfo) + .create(); + return universityInfo; + } + + public UniversityInfoForApply 린츠_카톨릭대학_언어요구사항(UniversityInfoForApply universityInfo) { + languageRequirementFixtureBuilder + .languageTestType(LanguageTestType.TOEIC) + .minScore("800") + .universityInfoForApply(universityInfo) + .create(); + return universityInfo; + } - public LanguageRequirement create() { - LanguageRequirement languageRequirement = new LanguageRequirement( - null, - languageTestType, - minScore, - universityInfoForApply - ); - return languageRequirementRepository.save(languageRequirement); - } + public UniversityInfoForApply 메이지대학_언어요구사항(UniversityInfoForApply universityInfo) { + languageRequirementFixtureBuilder + .languageTestType(LanguageTestType.JLPT) + .minScore("N2") + .universityInfoForApply(universityInfo) + .create(); + return universityInfo; } } diff --git a/src/test/java/com/example/solidconnection/university/fixture/LanguageRequirementFixtureBuilder.java b/src/test/java/com/example/solidconnection/university/fixture/LanguageRequirementFixtureBuilder.java new file mode 100644 index 000000000..e6f3fd4d5 --- /dev/null +++ b/src/test/java/com/example/solidconnection/university/fixture/LanguageRequirementFixtureBuilder.java @@ -0,0 +1,45 @@ +package com.example.solidconnection.university.fixture; + +import com.example.solidconnection.type.LanguageTestType; +import com.example.solidconnection.university.domain.LanguageRequirement; +import com.example.solidconnection.university.domain.UniversityInfoForApply; +import com.example.solidconnection.university.repository.LanguageRequirementRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.test.context.TestComponent; + +@TestComponent +@RequiredArgsConstructor +public class LanguageRequirementFixtureBuilder { + + private final LanguageRequirementRepository languageRequirementRepository; + + private LanguageTestType languageTestType; + private String minScore; + private UniversityInfoForApply universityInfoForApply; + + public LanguageRequirementFixtureBuilder languageTestType(LanguageTestType languageTestType) { + this.languageTestType = languageTestType; + return this; + } + + public LanguageRequirementFixtureBuilder minScore(String minScore) { + this.minScore = minScore; + return this; + } + + public LanguageRequirementFixtureBuilder universityInfoForApply(UniversityInfoForApply universityInfoForApply) { + this.universityInfoForApply = universityInfoForApply; + return this; + } + + public LanguageRequirement create() { + LanguageRequirement languageRequirement = new LanguageRequirement( + null, + languageTestType, + minScore, + universityInfoForApply + ); + universityInfoForApply.addLanguageRequirements(languageRequirement); + return languageRequirementRepository.save(languageRequirement); + } +} From 974f9ebe042a8b15ae35c18d1197f89da6543d2f Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Sat, 10 May 2025 16:10:24 +0900 Subject: [PATCH 16/18] =?UTF-8?q?test:=20=EC=B6=94=EA=B0=80=ED=95=9C=20Fix?= =?UTF-8?q?ture=20=ED=95=A8=EC=88=98=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=97=90=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/UniversityQueryServiceTest.java | 87 +++++++++++-------- 1 file changed, 49 insertions(+), 38 deletions(-) diff --git a/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java b/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java index 1b892ac45..564df821d 100644 --- a/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java +++ b/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java @@ -2,6 +2,7 @@ import com.example.solidconnection.custom.exception.CustomException; import com.example.solidconnection.support.TestContainerSpringBootTest; +import com.example.solidconnection.university.fixture.LanguageRequirementFixture; import com.example.solidconnection.university.fixture.UniversityInfoForApplyFixture; import com.example.solidconnection.type.LanguageTestType; import com.example.solidconnection.university.domain.UniversityInfoForApply; @@ -10,7 +11,6 @@ import com.example.solidconnection.university.dto.UniversityInfoForApplyPreviewResponses; import com.example.solidconnection.university.repository.UniversityInfoForApplyRepository; import com.example.solidconnection.university.repository.custom.UniversityFilterRepository; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -37,23 +37,19 @@ class UniversityQueryServiceTest { @SpyBean private UniversityInfoForApplyRepository universityInfoForApplyRepository; - private UniversityInfoForApply 괌대학_A_지원_정보; - @Autowired private UniversityInfoForApplyFixture universityInfoForApplyFixture; - @BeforeEach - void setUp() { - 괌대학_A_지원_정보 = universityInfoForApplyFixture.괌대학_A_지원_정보(); - } + @Autowired + private LanguageRequirementFixture languageRequirementFixture; @Test void 대학_상세정보를_정상_조회한다() { // given - Long universityId = 괌대학_A_지원_정보.getId(); + UniversityInfoForApply 괌대학_A_지원_정보 = universityInfoForApplyFixture.괌대학_A_지원_정보(); // when - UniversityDetailResponse response = universityQueryService.getUniversityDetail(universityId); + UniversityDetailResponse response = universityQueryService.getUniversityDetail(괌대학_A_지원_정보.getId()); // then assertThat(response.id()).isEqualTo(괌대학_A_지원_정보.getId()); @@ -62,15 +58,15 @@ void setUp() { @Test void 대학_상세정보_조회시_캐시가_적용된다() { // given - Long universityId = 괌대학_A_지원_정보.getId(); + UniversityInfoForApply 괌대학_A_지원_정보 = universityInfoForApplyFixture.괌대학_A_지원_정보(); // when - UniversityDetailResponse firstResponse = universityQueryService.getUniversityDetail(universityId); - UniversityDetailResponse secondResponse = universityQueryService.getUniversityDetail(universityId); + UniversityDetailResponse firstResponse = universityQueryService.getUniversityDetail(괌대학_A_지원_정보.getId()); + UniversityDetailResponse secondResponse = universityQueryService.getUniversityDetail(괌대학_A_지원_정보.getId()); // then assertThat(firstResponse).isEqualTo(secondResponse); - then(universityInfoForApplyRepository).should(times(1)).getUniversityInfoForApplyById(universityId); + then(universityInfoForApplyRepository).should(times(1)).getUniversityInfoForApplyById(괌대학_A_지원_정보.getId()); } @Test @@ -88,6 +84,14 @@ void setUp() { @Test void 전체_대학을_조회한다() { + // given + UniversityInfoForApply 괌대학_A_지원_정보 = universityInfoForApplyFixture.괌대학_A_지원_정보(); + UniversityInfoForApply 괌대학_B_지원_정보 = universityInfoForApplyFixture.괌대학_B_지원_정보(); + UniversityInfoForApply 네바다주립대학_라스베이거스_지원_정보 = universityInfoForApplyFixture.네바다주립대학_라스베이거스_지원_정보(); + UniversityInfoForApply 서던덴마크대학교_지원_정보 = universityInfoForApplyFixture.서던덴마크대학교_지원_정보(); + UniversityInfoForApply 그라츠대학_지원_정보 = universityInfoForApplyFixture.그라츠대학_지원_정보(); + UniversityInfoForApply 메이지대학_지원_정보 = universityInfoForApplyFixture.메이지대학_지원_정보(); + // when UniversityInfoForApplyPreviewResponses response = universityQueryService.searchUniversity( null, List.of(), null, null); @@ -95,22 +99,19 @@ void setUp() { // then assertThat(response.universityInfoForApplyPreviewResponses()) .containsExactlyInAnyOrder( - UniversityInfoForApplyPreviewResponse.from(괌대학_A_지원_정보) -// UniversityInfoForApplyPreviewResponse.from(괌대학_B_지원_정보), -// UniversityInfoForApplyPreviewResponse.from(네바다주립대학_라스베이거스_지원_정보), -// UniversityInfoForApplyPreviewResponse.from(메모리얼대학_세인트존스_A_지원_정보), -// UniversityInfoForApplyPreviewResponse.from(서던덴마크대학교_지원_정보), -// UniversityInfoForApplyPreviewResponse.from(코펜하겐IT대학_지원_정보), -// UniversityInfoForApplyPreviewResponse.from(그라츠대학_지원_정보), -// UniversityInfoForApplyPreviewResponse.from(그라츠공과대학_지원_정보), -// UniversityInfoForApplyPreviewResponse.from(린츠_카톨릭대학_지원_정보), -// UniversityInfoForApplyPreviewResponse.from(메이지대학_지원_정보) + UniversityInfoForApplyPreviewResponse.from(괌대학_A_지원_정보), + UniversityInfoForApplyPreviewResponse.from(괌대학_B_지원_정보), + UniversityInfoForApplyPreviewResponse.from(네바다주립대학_라스베이거스_지원_정보), + UniversityInfoForApplyPreviewResponse.from(서던덴마크대학교_지원_정보), + UniversityInfoForApplyPreviewResponse.from(그라츠대학_지원_정보), + UniversityInfoForApplyPreviewResponse.from(메이지대학_지원_정보) ); } @Test void 대학_조회시_캐시가_적용된다() { // given + universityInfoForApplyFixture.괌대학_A_지원_정보(); String regionCode = "AMERICAS"; List keywords = List.of("괌"); LanguageTestType testType = LanguageTestType.TOEFL_IBT; @@ -132,22 +133,28 @@ void setUp() { @Test void 지역으로_대학을_필터링한다() { + // given + UniversityInfoForApply 괌대학_A_지원_정보 = universityInfoForApplyFixture.괌대학_A_지원_정보(); + universityInfoForApplyFixture.코펜하겐IT대학_지원_정보(); + universityInfoForApplyFixture.그라츠공과대학_지원_정보(); + universityInfoForApplyFixture.메이지대학_지원_정보(); + // when UniversityInfoForApplyPreviewResponses response = universityQueryService.searchUniversity( "AMERICAS", List.of(), null, null); // then assertThat(response.universityInfoForApplyPreviewResponses()) - .containsExactlyInAnyOrder( - UniversityInfoForApplyPreviewResponse.from(괌대학_A_지원_정보) -// UniversityInfoForApplyPreviewResponse.from(괌대학_B_지원_정보), -// UniversityInfoForApplyPreviewResponse.from(네바다주립대학_라스베이거스_지원_정보), -// UniversityInfoForApplyPreviewResponse.from(메모리얼대학_세인트존스_A_지원_정보) - ); + .containsExactlyInAnyOrder(UniversityInfoForApplyPreviewResponse.from(괌대학_A_지원_정보)); } @Test void 키워드로_대학을_필터링한다() { + // given + universityInfoForApplyFixture.괌대학_A_지원_정보(); + UniversityInfoForApply 그라츠대학_지원_정보 = universityInfoForApplyFixture.그라츠대학_지원_정보(); + UniversityInfoForApply 메이지대학_지원_정보 = universityInfoForApplyFixture.메이지대학_지원_정보(); + // when UniversityInfoForApplyPreviewResponses response = universityQueryService.searchUniversity( null, List.of("라", "일본"), null, null); @@ -155,34 +162,38 @@ void setUp() { // then assertThat(response.universityInfoForApplyPreviewResponses()) .containsExactlyInAnyOrder( -// UniversityInfoForApplyPreviewResponse.from(네바다주립대학_라스베이거스_지원_정보), -// UniversityInfoForApplyPreviewResponse.from(그라츠대학_지원_정보), -// UniversityInfoForApplyPreviewResponse.from(그라츠공과대학_지원_정보), -// UniversityInfoForApplyPreviewResponse.from(메이지대학_지원_정보) + UniversityInfoForApplyPreviewResponse.from(그라츠대학_지원_정보), + UniversityInfoForApplyPreviewResponse.from(메이지대학_지원_정보) ); } @Test void 어학시험_조건으로_대학을_필터링한다() { + // given + UniversityInfoForApply 괌대학_B_지원_정보 = languageRequirementFixture.괌대학_B_언어요구사항(universityInfoForApplyFixture.괌대학_B_지원_정보()); + languageRequirementFixture.괌대학_A_언어요구사항(universityInfoForApplyFixture.괌대학_A_지원_정보()); + // when UniversityInfoForApplyPreviewResponses response = universityQueryService.searchUniversity( null, List.of(), LanguageTestType.TOEFL_IBT, "70"); // then assertThat(response.universityInfoForApplyPreviewResponses()) - .containsExactlyInAnyOrder( -// UniversityInfoForApplyPreviewResponse.from(괌대학_B_지원_정보), -// UniversityInfoForApplyPreviewResponse.from(서던덴마크대학교_지원_정보) - ); + .containsExactlyInAnyOrder(UniversityInfoForApplyPreviewResponse.from(괌대학_B_지원_정보)); } @Test void 모든_조건으로_대학을_필터링한다() { + // given + UniversityInfoForApply 서던덴마크대학교_지원_정보 = languageRequirementFixture.서던덴마크_대학_언어요구사항(universityInfoForApplyFixture.서던덴마크대학교_지원_정보()); + languageRequirementFixture.괌대학_A_언어요구사항(universityInfoForApplyFixture.괌대학_A_지원_정보()); + // when UniversityInfoForApplyPreviewResponses response = universityQueryService.searchUniversity( "EUROPE", List.of(), LanguageTestType.TOEFL_IBT, "70"); // then - //assertThat(response.universityInfoForApplyPreviewResponses()).containsExactly(UniversityInfoForApplyPreviewResponse.from(서던덴마크대학교_지원_정보)); + assertThat(response.universityInfoForApplyPreviewResponses()) + .containsExactly(UniversityInfoForApplyPreviewResponse.from(서던덴마크대학교_지원_정보)); } } From 02d3efa48edfa97e47b817153488153d7d35c9c7 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Sun, 11 May 2025 17:36:34 +0900 Subject: [PATCH 17/18] =?UTF-8?q?chore:=20=EB=8C=80=ED=95=99=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EC=9D=B4=EB=A6=84=20=EC=8B=A4=EC=A0=9C=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=EC=99=80=20=EC=9D=BC=EC=B9=98=ED=95=98?= =?UTF-8?q?=EA=B2=8C=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UniversityInfoForApplyFixture.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/test/java/com/example/solidconnection/university/fixture/UniversityInfoForApplyFixture.java b/src/test/java/com/example/solidconnection/university/fixture/UniversityInfoForApplyFixture.java index bb0290b57..32a32cf6d 100644 --- a/src/test/java/com/example/solidconnection/university/fixture/UniversityInfoForApplyFixture.java +++ b/src/test/java/com/example/solidconnection/university/fixture/UniversityInfoForApplyFixture.java @@ -18,7 +18,7 @@ public class UniversityInfoForApplyFixture { public UniversityInfoForApply 괌대학_A_지원_정보() { return universityInfoForApplyFixtureBuilder.universityInfoForApply() .term(term) - .koreanName("괌대학 A 지원 정보") + .koreanName("괌대학(A형)") .university(universityFixture.괌_대학()) .create(); } @@ -26,7 +26,7 @@ public class UniversityInfoForApplyFixture { public UniversityInfoForApply 괌대학_B_지원_정보() { return universityInfoForApplyFixtureBuilder.universityInfoForApply() .term(term) - .koreanName("괌대학 B 지원 정보") + .koreanName("괌대학(B형)") .university(universityFixture.괌_대학()) .create(); } @@ -34,7 +34,7 @@ public class UniversityInfoForApplyFixture { public UniversityInfoForApply 네바다주립대학_라스베이거스_지원_정보() { return universityInfoForApplyFixtureBuilder.universityInfoForApply() .term(term) - .koreanName("네바다주립대학 라스베이거스 지원 정보") + .koreanName("네바다주립대학 라스베이거스(B형)") .university(universityFixture.네바다주립_대학_라스베이거스()) .create(); } @@ -42,7 +42,7 @@ public class UniversityInfoForApplyFixture { public UniversityInfoForApply 메모리얼대학_세인트존스_A_지원_정보() { return universityInfoForApplyFixtureBuilder.universityInfoForApply() .term(term) - .koreanName("메모리얼대학 세인트존스 A 지원 정보") + .koreanName("메모리얼 대학 세인트존스(A형)") .university(universityFixture.메모리얼_대학_세인트존스()) .create(); } @@ -50,7 +50,7 @@ public class UniversityInfoForApplyFixture { public UniversityInfoForApply 서던덴마크대학교_지원_정보() { return universityInfoForApplyFixtureBuilder.universityInfoForApply() .term(term) - .koreanName("서던덴마크대학교 지원 정보") + .koreanName("서던덴마크대학교") .university(universityFixture.서던덴마크_대학()) .create(); } @@ -58,7 +58,7 @@ public class UniversityInfoForApplyFixture { public UniversityInfoForApply 코펜하겐IT대학_지원_정보() { return universityInfoForApplyFixtureBuilder.universityInfoForApply() .term(term) - .koreanName("코펜하겐IT대학 지원 정보") + .koreanName("코펜하겐 IT대학") .university(universityFixture.코펜하겐IT_대학()) .create(); } @@ -66,7 +66,7 @@ public class UniversityInfoForApplyFixture { public UniversityInfoForApply 그라츠대학_지원_정보() { return universityInfoForApplyFixtureBuilder.universityInfoForApply() .term(term) - .koreanName("그라츠대학 지원 정보") + .koreanName("그라츠 대학") .university(universityFixture.그라츠_대학()) .create(); } @@ -74,7 +74,7 @@ public class UniversityInfoForApplyFixture { public UniversityInfoForApply 그라츠공과대학_지원_정보() { return universityInfoForApplyFixtureBuilder.universityInfoForApply() .term(term) - .koreanName("그라츠공과대학 지원 정보") + .koreanName("그라츠공과대학") .university(universityFixture.그라츠공과_대학()) .create(); } @@ -82,7 +82,7 @@ public class UniversityInfoForApplyFixture { public UniversityInfoForApply 린츠_카톨릭대학_지원_정보() { return universityInfoForApplyFixtureBuilder.universityInfoForApply() .term(term) - .koreanName("린츠 카톨릭대학 지원 정보") + .koreanName("린츠 카톨릭 대학교") .university(universityFixture.린츠_카톨릭_대학()) .create(); } @@ -90,7 +90,7 @@ public class UniversityInfoForApplyFixture { public UniversityInfoForApply 메이지대학_지원_정보() { return universityInfoForApplyFixtureBuilder.universityInfoForApply() .term(term) - .koreanName("메이지대학 지원 정보") + .koreanName("메이지대학") .university(universityFixture.메이지_대학()) .create(); } From d757be8319e1ae4954449753c800f8d1bc23e6b9 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Sun, 11 May 2025 17:57:37 +0900 Subject: [PATCH 18/18] =?UTF-8?q?refactor:=20=EC=96=B8=EC=96=B4=20?= =?UTF-8?q?=EC=9A=94=EA=B5=AC=EC=82=AC=ED=95=AD=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=EC=84=B8=ED=8C=85=20=EB=B0=A9=EC=8B=9D=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fixture/LanguageRequirementFixture.java | 83 +++---------------- .../service/UniversityQueryServiceTest.java | 15 +++- 2 files changed, 23 insertions(+), 75 deletions(-) diff --git a/src/test/java/com/example/solidconnection/university/fixture/LanguageRequirementFixture.java b/src/test/java/com/example/solidconnection/university/fixture/LanguageRequirementFixture.java index d1f791026..ba32c1b27 100644 --- a/src/test/java/com/example/solidconnection/university/fixture/LanguageRequirementFixture.java +++ b/src/test/java/com/example/solidconnection/university/fixture/LanguageRequirementFixture.java @@ -1,6 +1,7 @@ package com.example.solidconnection.university.fixture; import com.example.solidconnection.type.LanguageTestType; +import com.example.solidconnection.university.domain.LanguageRequirement; import com.example.solidconnection.university.domain.UniversityInfoForApply; import lombok.RequiredArgsConstructor; import org.springframework.boot.test.context.TestComponent; @@ -11,103 +12,43 @@ public class LanguageRequirementFixture { private final LanguageRequirementFixtureBuilder languageRequirementFixtureBuilder; - public UniversityInfoForApply 괌대학_A_언어요구사항(UniversityInfoForApply universityInfo) { - languageRequirementFixtureBuilder + public LanguageRequirement 토플_80(UniversityInfoForApply universityInfo) { + return languageRequirementFixtureBuilder .languageTestType(LanguageTestType.TOEFL_IBT) .minScore("80") .universityInfoForApply(universityInfo) .create(); - languageRequirementFixtureBuilder - .languageTestType(LanguageTestType.TOEIC) - .minScore("800") - .universityInfoForApply(universityInfo) - .create(); - return universityInfo; - } - - public UniversityInfoForApply 괌대학_B_언어요구사항(UniversityInfoForApply universityInfo) { - languageRequirementFixtureBuilder - .languageTestType(LanguageTestType.TOEFL_IBT) - .minScore("70") - .universityInfoForApply(universityInfo) - .create(); - languageRequirementFixtureBuilder - .languageTestType(LanguageTestType.TOEIC) - .minScore("900") - .universityInfoForApply(universityInfo) - .create(); - return universityInfo; - } - - public UniversityInfoForApply 네바다주립_대학_라스베이거스_언어요구사항(UniversityInfoForApply universityInfo) { - languageRequirementFixtureBuilder - .languageTestType(LanguageTestType.TOEIC) - .minScore("800") - .universityInfoForApply(universityInfo) - .create(); - return universityInfo; } - public UniversityInfoForApply 메모리얼_대학_세인트존스_언어요구사항(UniversityInfoForApply universityInfo) { - languageRequirementFixtureBuilder - .languageTestType(LanguageTestType.TOEIC) - .minScore("800") - .universityInfoForApply(universityInfo) - .create(); - return universityInfo; - } - - public UniversityInfoForApply 서던덴마크_대학_언어요구사항(UniversityInfoForApply universityInfo) { - languageRequirementFixtureBuilder + public LanguageRequirement 토플_70(UniversityInfoForApply universityInfo) { + return languageRequirementFixtureBuilder .languageTestType(LanguageTestType.TOEFL_IBT) .minScore("70") .universityInfoForApply(universityInfo) .create(); - return universityInfo; - } - - public UniversityInfoForApply 코펜하겐IT대학_언어요구사항(UniversityInfoForApply universityInfo) { - languageRequirementFixtureBuilder - .languageTestType(LanguageTestType.TOEFL_IBT) - .minScore("80") - .universityInfoForApply(universityInfo) - .create(); - return universityInfo; - } - - public UniversityInfoForApply 그라츠대학_언어요구사항(UniversityInfoForApply universityInfo) { - languageRequirementFixtureBuilder - .languageTestType(LanguageTestType.TOEFL_IBT) - .minScore("80") - .universityInfoForApply(universityInfo) - .create(); - return universityInfo; } - public UniversityInfoForApply 그라츠공과대학_언어요구사항(UniversityInfoForApply universityInfo) { - languageRequirementFixtureBuilder + public LanguageRequirement 토익_800(UniversityInfoForApply universityInfo) { + return languageRequirementFixtureBuilder .languageTestType(LanguageTestType.TOEIC) .minScore("800") .universityInfoForApply(universityInfo) .create(); - return universityInfo; } - public UniversityInfoForApply 린츠_카톨릭대학_언어요구사항(UniversityInfoForApply universityInfo) { - languageRequirementFixtureBuilder + public LanguageRequirement 토익_900(UniversityInfoForApply universityInfo) { + return languageRequirementFixtureBuilder .languageTestType(LanguageTestType.TOEIC) - .minScore("800") + .minScore("900") .universityInfoForApply(universityInfo) .create(); - return universityInfo; } - public UniversityInfoForApply 메이지대학_언어요구사항(UniversityInfoForApply universityInfo) { - languageRequirementFixtureBuilder + public LanguageRequirement JLPT_N2(UniversityInfoForApply universityInfo) { + return languageRequirementFixtureBuilder .languageTestType(LanguageTestType.JLPT) .minScore("N2") .universityInfoForApply(universityInfo) .create(); - return universityInfo; } } diff --git a/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java b/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java index 564df821d..731ccec5b 100644 --- a/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java +++ b/src/test/java/com/example/solidconnection/university/service/UniversityQueryServiceTest.java @@ -170,8 +170,12 @@ class UniversityQueryServiceTest { @Test void 어학시험_조건으로_대학을_필터링한다() { // given - UniversityInfoForApply 괌대학_B_지원_정보 = languageRequirementFixture.괌대학_B_언어요구사항(universityInfoForApplyFixture.괌대학_B_지원_정보()); - languageRequirementFixture.괌대학_A_언어요구사항(universityInfoForApplyFixture.괌대학_A_지원_정보()); + UniversityInfoForApply 괌대학_A_지원_정보 = universityInfoForApplyFixture.괌대학_A_지원_정보(); + languageRequirementFixture.토플_80(괌대학_A_지원_정보); + languageRequirementFixture.토익_800(괌대학_A_지원_정보); + UniversityInfoForApply 괌대학_B_지원_정보 = universityInfoForApplyFixture.괌대학_B_지원_정보(); + languageRequirementFixture.토플_70(괌대학_B_지원_정보); + languageRequirementFixture.토익_900(괌대학_B_지원_정보); // when UniversityInfoForApplyPreviewResponses response = universityQueryService.searchUniversity( @@ -185,8 +189,11 @@ class UniversityQueryServiceTest { @Test void 모든_조건으로_대학을_필터링한다() { // given - UniversityInfoForApply 서던덴마크대학교_지원_정보 = languageRequirementFixture.서던덴마크_대학_언어요구사항(universityInfoForApplyFixture.서던덴마크대학교_지원_정보()); - languageRequirementFixture.괌대학_A_언어요구사항(universityInfoForApplyFixture.괌대학_A_지원_정보()); + UniversityInfoForApply 괌대학_A_지원_정보 = universityInfoForApplyFixture.괌대학_A_지원_정보(); + languageRequirementFixture.토플_80(괌대학_A_지원_정보); + languageRequirementFixture.토익_800(괌대학_A_지원_정보); + UniversityInfoForApply 서던덴마크대학교_지원_정보 = universityInfoForApplyFixture.서던덴마크대학교_지원_정보(); + languageRequirementFixture.토플_70(서던덴마크대학교_지원_정보); // when UniversityInfoForApplyPreviewResponses response = universityQueryService.searchUniversity(