diff --git a/src/test/java/com/example/solidconnection/admin/service/AdminGpaScoreServiceTest.java b/src/test/java/com/example/solidconnection/admin/service/AdminGpaScoreServiceTest.java index a891759cd..c649e1ba9 100644 --- a/src/test/java/com/example/solidconnection/admin/service/AdminGpaScoreServiceTest.java +++ b/src/test/java/com/example/solidconnection/admin/service/AdminGpaScoreServiceTest.java @@ -4,14 +4,13 @@ import com.example.solidconnection.admin.dto.GpaScoreSearchResponse; import com.example.solidconnection.admin.dto.GpaScoreUpdateRequest; import com.example.solidconnection.admin.dto.ScoreSearchCondition; -import com.example.solidconnection.application.domain.Gpa; import com.example.solidconnection.application.domain.VerifyStatus; import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.score.domain.GpaScore; -import com.example.solidconnection.score.repository.GpaScoreRepository; +import com.example.solidconnection.score.fixture.GpaScoreFixture; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; -import com.example.solidconnection.support.integration.BaseIntegrationTest; +import com.example.solidconnection.support.TestContainerSpringBootTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -29,17 +28,18 @@ import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; import static org.junit.jupiter.api.Assertions.assertAll; +@TestContainerSpringBootTest @DisplayName("학점 검증 관리자 서비스 테스트") -class AdminGpaScoreServiceTest extends BaseIntegrationTest { +class AdminGpaScoreServiceTest { @Autowired private AdminGpaScoreService adminGpaScoreService; @Autowired - private GpaScoreRepository gpaScoreRepository; + private SiteUserFixture siteUserFixture; @Autowired - private SiteUserFixture siteUserFixture; + private GpaScoreFixture gpaScoreFixture; private GpaScore gpaScore1; private GpaScore gpaScore2; @@ -50,9 +50,9 @@ void setUp() { SiteUser user1 = siteUserFixture.사용자(1, "test1"); SiteUser user2 = siteUserFixture.사용자(2, "test2"); SiteUser user3 = siteUserFixture.사용자(3, "test3"); - gpaScore3 = createGpaScore(user3, VerifyStatus.REJECTED); - gpaScore2 = createGpaScore(user2, VerifyStatus.PENDING); - gpaScore1 = createGpaScore(user1, VerifyStatus.PENDING); + gpaScore1 = gpaScoreFixture.GPA_점수(VerifyStatus.PENDING, user1); + gpaScore2 = gpaScoreFixture.GPA_점수(VerifyStatus.PENDING, user2); + gpaScore3 = gpaScoreFixture.GPA_점수(VerifyStatus.REJECTED, user3); } @Nested @@ -69,19 +69,10 @@ class 지원한_GPA_목록_조회 { Page response = adminGpaScoreService.searchGpaScores(condition, pageable); // then + assertThat(response.getContent()).hasSize(expectedGpaScores.size()); assertThat(response.getContent()) - .hasSize(expectedGpaScores.size()) - .zipSatisfy(expectedGpaScores, (actual, expected) -> assertAll( - () -> assertThat(actual.gpaScoreStatusResponse().id()).isEqualTo(expected.getId()), - () -> assertThat(actual.gpaScoreStatusResponse().gpaResponse().gpa()).isEqualTo(expected.getGpa().getGpa()), - () -> assertThat(actual.gpaScoreStatusResponse().gpaResponse().gpaCriteria()).isEqualTo(expected.getGpa().getGpaCriteria()), - () -> assertThat(actual.gpaScoreStatusResponse().gpaResponse().gpaReportUrl()).isEqualTo(expected.getGpa().getGpaReportUrl()), - () -> assertThat(actual.gpaScoreStatusResponse().verifyStatus()).isEqualTo(expected.getVerifyStatus()), - - () -> assertThat(actual.siteUserResponse().id()).isEqualTo(expected.getSiteUser().getId()), - () -> assertThat(actual.siteUserResponse().profileImageUrl()).isEqualTo(expected.getSiteUser().getProfileImageUrl()), - () -> assertThat(actual.siteUserResponse().nickname()).isEqualTo(expected.getSiteUser().getNickname()) - )); + .extracting(content -> content.gpaScoreStatusResponse().verifyStatus()) + .containsOnly(VerifyStatus.PENDING); } @Test @@ -95,19 +86,10 @@ class 지원한_GPA_목록_조회 { Page response = adminGpaScoreService.searchGpaScores(condition, pageable); // then + assertThat(response.getContent()).hasSize(expectedGpaScores.size()); assertThat(response.getContent()) - .hasSize(expectedGpaScores.size()) - .zipSatisfy(expectedGpaScores, (actual, expected) -> assertAll( - () -> assertThat(actual.gpaScoreStatusResponse().id()).isEqualTo(expected.getId()), - () -> assertThat(actual.gpaScoreStatusResponse().gpaResponse().gpa()).isEqualTo(expected.getGpa().getGpa()), - () -> assertThat(actual.gpaScoreStatusResponse().gpaResponse().gpaCriteria()).isEqualTo(expected.getGpa().getGpaCriteria()), - () -> assertThat(actual.gpaScoreStatusResponse().gpaResponse().gpaReportUrl()).isEqualTo(expected.getGpa().getGpaReportUrl()), - () -> assertThat(actual.gpaScoreStatusResponse().verifyStatus()).isEqualTo(expected.getVerifyStatus()), - - () -> assertThat(actual.siteUserResponse().id()).isEqualTo(expected.getSiteUser().getId()), - () -> assertThat(actual.siteUserResponse().profileImageUrl()).isEqualTo(expected.getSiteUser().getProfileImageUrl()), - () -> assertThat(actual.siteUserResponse().nickname()).isEqualTo(expected.getSiteUser().getNickname()) - )); + .extracting(content -> content.siteUserResponse().nickname()) + .containsOnly("test1", "test2", "test3"); } @Test @@ -121,19 +103,13 @@ class 지원한_GPA_목록_조회 { Page response = adminGpaScoreService.searchGpaScores(condition, pageable); // then + assertThat(response.getContent()).hasSize(expectedGpaScores.size()); + assertThat(response.getContent()) + .extracting(content -> content.gpaScoreStatusResponse().verifyStatus()) + .containsOnly(VerifyStatus.PENDING); assertThat(response.getContent()) - .hasSize(expectedGpaScores.size()) - .zipSatisfy(expectedGpaScores, (actual, expected) -> assertAll( - () -> assertThat(actual.gpaScoreStatusResponse().id()).isEqualTo(expected.getId()), - () -> assertThat(actual.gpaScoreStatusResponse().gpaResponse().gpa()).isEqualTo(expected.getGpa().getGpa()), - () -> assertThat(actual.gpaScoreStatusResponse().gpaResponse().gpaCriteria()).isEqualTo(expected.getGpa().getGpaCriteria()), - () -> assertThat(actual.gpaScoreStatusResponse().gpaResponse().gpaReportUrl()).isEqualTo(expected.getGpa().getGpaReportUrl()), - () -> assertThat(actual.gpaScoreStatusResponse().verifyStatus()).isEqualTo(expected.getVerifyStatus()), - - () -> assertThat(actual.siteUserResponse().id()).isEqualTo(expected.getSiteUser().getId()), - () -> assertThat(actual.siteUserResponse().profileImageUrl()).isEqualTo(expected.getSiteUser().getProfileImageUrl()), - () -> assertThat(actual.siteUserResponse().nickname()).isEqualTo(expected.getSiteUser().getNickname()) - )); + .extracting(content -> content.siteUserResponse().nickname()) + .containsOnly("test1"); } } @@ -203,13 +179,4 @@ class GPA_점수_검증_및_수정 { .hasMessage(GPA_SCORE_NOT_FOUND.getMessage()); } } - - private GpaScore createGpaScore(SiteUser siteUser, VerifyStatus status) { - GpaScore gpaScore = new GpaScore( - new Gpa(4.0, 4.5, "/gpa-report.pdf"), - siteUser - ); - gpaScore.setVerifyStatus(status); - return gpaScoreRepository.save(gpaScore); - } } diff --git a/src/test/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreServiceTest.java b/src/test/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreServiceTest.java index 3fe3eb5a8..669c0b0be 100644 --- a/src/test/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreServiceTest.java +++ b/src/test/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreServiceTest.java @@ -4,14 +4,13 @@ import com.example.solidconnection.admin.dto.LanguageTestScoreSearchResponse; import com.example.solidconnection.admin.dto.LanguageTestScoreUpdateRequest; import com.example.solidconnection.admin.dto.ScoreSearchCondition; -import com.example.solidconnection.application.domain.LanguageTest; import com.example.solidconnection.application.domain.VerifyStatus; import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.score.domain.LanguageTestScore; -import com.example.solidconnection.score.repository.LanguageTestScoreRepository; +import com.example.solidconnection.score.fixture.LanguageTestScoreFixture; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; -import com.example.solidconnection.support.integration.BaseIntegrationTest; +import com.example.solidconnection.support.TestContainerSpringBootTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -30,17 +29,18 @@ import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; import static org.junit.jupiter.api.Assertions.assertAll; +@TestContainerSpringBootTest @DisplayName("어학 검증 관리자 서비스 테스트") -class AdminLanguageTestScoreServiceTest extends BaseIntegrationTest { +class AdminLanguageTestScoreServiceTest { @Autowired private AdminLanguageTestScoreService adminLanguageTestScoreService; @Autowired - private LanguageTestScoreRepository languageTestScoreRepository; + private SiteUserFixture siteUserFixture; @Autowired - private SiteUserFixture siteUserFixture; + private LanguageTestScoreFixture languageTestScoreFixture; private LanguageTestScore languageTestScore1; private LanguageTestScore languageTestScore2; @@ -51,9 +51,9 @@ void setUp() { SiteUser user1 = siteUserFixture.사용자(1, "test1"); SiteUser user2 = siteUserFixture.사용자(2, "test2"); SiteUser user3 = siteUserFixture.사용자(3, "test3"); - languageTestScore3 = createLanguageTestScore(user3, VerifyStatus.REJECTED); - languageTestScore2 = createLanguageTestScore(user2, VerifyStatus.PENDING); - languageTestScore1 = createLanguageTestScore(user1, VerifyStatus.PENDING); + languageTestScore1 = languageTestScoreFixture.어학_점수(VerifyStatus.PENDING, user1); + languageTestScore2 = languageTestScoreFixture.어학_점수(VerifyStatus.PENDING, user2); + languageTestScore3 = languageTestScoreFixture.어학_점수(VerifyStatus.REJECTED, user3); } @Nested @@ -70,22 +70,10 @@ class 지원한_어학_목록_조회 { Page response = adminLanguageTestScoreService.searchLanguageTestScores(condition, pageable); // then + assertThat(response.getContent()).hasSize(expectedLanguageTestScores.size()); assertThat(response.getContent()) - .hasSize(expectedLanguageTestScores.size()) - .zipSatisfy(expectedLanguageTestScores, (actual, expected) -> assertAll( - () -> assertThat(actual.languageTestScoreStatusResponse().id()).isEqualTo(expected.getId()), - () -> assertThat(actual.languageTestScoreStatusResponse().languageTestResponse().languageTestType()) - .isEqualTo(expected.getLanguageTest().getLanguageTestType()), - () -> assertThat(actual.languageTestScoreStatusResponse().languageTestResponse().languageTestScore()) - .isEqualTo(expected.getLanguageTest().getLanguageTestScore()), - () -> assertThat(actual.languageTestScoreStatusResponse().languageTestResponse().languageTestReportUrl()) - .isEqualTo(expected.getLanguageTest().getLanguageTestReportUrl()), - () -> assertThat(actual.languageTestScoreStatusResponse().verifyStatus()).isEqualTo(expected.getVerifyStatus()), - - () -> assertThat(actual.siteUserResponse().id()).isEqualTo(expected.getSiteUser().getId()), - () -> assertThat(actual.siteUserResponse().profileImageUrl()).isEqualTo(expected.getSiteUser().getProfileImageUrl()), - () -> assertThat(actual.siteUserResponse().nickname()).isEqualTo(expected.getSiteUser().getNickname()) - )); + .extracting(content -> content.languageTestScoreStatusResponse().verifyStatus()) + .containsOnly(VerifyStatus.PENDING); } @Test @@ -99,22 +87,10 @@ class 지원한_어학_목록_조회 { Page response = adminLanguageTestScoreService.searchLanguageTestScores(condition, pageable); // then + assertThat(response.getContent()).hasSize(expectedLanguageTestScores.size()); assertThat(response.getContent()) - .hasSize(expectedLanguageTestScores.size()) - .zipSatisfy(expectedLanguageTestScores, (actual, expected) -> assertAll( - () -> assertThat(actual.languageTestScoreStatusResponse().id()).isEqualTo(expected.getId()), - () -> assertThat(actual.languageTestScoreStatusResponse().languageTestResponse().languageTestType()) - .isEqualTo(expected.getLanguageTest().getLanguageTestType()), - () -> assertThat(actual.languageTestScoreStatusResponse().languageTestResponse().languageTestScore()) - .isEqualTo(expected.getLanguageTest().getLanguageTestScore()), - () -> assertThat(actual.languageTestScoreStatusResponse().languageTestResponse().languageTestReportUrl()) - .isEqualTo(expected.getLanguageTest().getLanguageTestReportUrl()), - () -> assertThat(actual.languageTestScoreStatusResponse().verifyStatus()).isEqualTo(expected.getVerifyStatus()), - - () -> assertThat(actual.siteUserResponse().id()).isEqualTo(expected.getSiteUser().getId()), - () -> assertThat(actual.siteUserResponse().profileImageUrl()).isEqualTo(expected.getSiteUser().getProfileImageUrl()), - () -> assertThat(actual.siteUserResponse().nickname()).isEqualTo(expected.getSiteUser().getNickname()) - )); + .extracting(content -> content.siteUserResponse().nickname()) + .containsOnly("test1", "test2", "test3"); } @Test @@ -128,22 +104,13 @@ class 지원한_어학_목록_조회 { Page response = adminLanguageTestScoreService.searchLanguageTestScores(condition, pageable); // then + assertThat(response.getContent()).hasSize(expectedLanguageTestScores.size()); + assertThat(response.getContent()) + .extracting(content -> content.languageTestScoreStatusResponse().verifyStatus()) + .containsOnly(VerifyStatus.PENDING); assertThat(response.getContent()) - .hasSize(expectedLanguageTestScores.size()) - .zipSatisfy(expectedLanguageTestScores, (actual, expected) -> assertAll( - () -> assertThat(actual.languageTestScoreStatusResponse().id()).isEqualTo(expected.getId()), - () -> assertThat(actual.languageTestScoreStatusResponse().languageTestResponse().languageTestType()) - .isEqualTo(expected.getLanguageTest().getLanguageTestType()), - () -> assertThat(actual.languageTestScoreStatusResponse().languageTestResponse().languageTestScore()) - .isEqualTo(expected.getLanguageTest().getLanguageTestScore()), - () -> assertThat(actual.languageTestScoreStatusResponse().languageTestResponse().languageTestReportUrl()) - .isEqualTo(expected.getLanguageTest().getLanguageTestReportUrl()), - () -> assertThat(actual.languageTestScoreStatusResponse().verifyStatus()).isEqualTo(expected.getVerifyStatus()), - - () -> assertThat(actual.siteUserResponse().id()).isEqualTo(expected.getSiteUser().getId()), - () -> assertThat(actual.siteUserResponse().profileImageUrl()).isEqualTo(expected.getSiteUser().getProfileImageUrl()), - () -> assertThat(actual.siteUserResponse().nickname()).isEqualTo(expected.getSiteUser().getNickname()) - )); + .extracting(content -> content.siteUserResponse().nickname()) + .containsOnly("test1"); } } @@ -213,13 +180,4 @@ class 어학점수_검증_및_수정 { .hasMessage(LANGUAGE_TEST_SCORE_NOT_FOUND.getMessage()); } } - - private LanguageTestScore createLanguageTestScore(SiteUser siteUser, VerifyStatus status) { - LanguageTestScore languageTestScore = new LanguageTestScore( - new LanguageTest(TOEIC, "500", "/toeic-report.pdf"), - siteUser - ); - languageTestScore.setVerifyStatus(status); - return languageTestScoreRepository.save(languageTestScore); - } } diff --git a/src/test/java/com/example/solidconnection/score/fixture/GpaScoreFixture.java b/src/test/java/com/example/solidconnection/score/fixture/GpaScoreFixture.java new file mode 100644 index 000000000..4a61d1557 --- /dev/null +++ b/src/test/java/com/example/solidconnection/score/fixture/GpaScoreFixture.java @@ -0,0 +1,23 @@ +package com.example.solidconnection.score.fixture; + +import com.example.solidconnection.application.domain.Gpa; +import com.example.solidconnection.application.domain.VerifyStatus; +import com.example.solidconnection.score.domain.GpaScore; +import com.example.solidconnection.siteuser.domain.SiteUser; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.test.context.TestComponent; + +@TestComponent +@RequiredArgsConstructor +public class GpaScoreFixture { + + private final GpaScoreFixtureBuilder gpaScoreFixtureBuilder; + + public GpaScore GPA_점수 (VerifyStatus verifyStatus, SiteUser siteUser) { + return gpaScoreFixtureBuilder.gpaScore() + .gpa(new Gpa(4.0, 4.5, "/gpa-report.pdf")) + .verifyStatus(verifyStatus) + .siteUser(siteUser) + .create(); + } +} diff --git a/src/test/java/com/example/solidconnection/score/fixture/GpaScoreFixtureBuilder.java b/src/test/java/com/example/solidconnection/score/fixture/GpaScoreFixtureBuilder.java new file mode 100644 index 000000000..7943008b4 --- /dev/null +++ b/src/test/java/com/example/solidconnection/score/fixture/GpaScoreFixtureBuilder.java @@ -0,0 +1,46 @@ +package com.example.solidconnection.score.fixture; + +import com.example.solidconnection.application.domain.Gpa; +import com.example.solidconnection.application.domain.VerifyStatus; +import com.example.solidconnection.score.domain.GpaScore; +import com.example.solidconnection.score.repository.GpaScoreRepository; +import com.example.solidconnection.siteuser.domain.SiteUser; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.test.context.TestComponent; + +@TestComponent +@RequiredArgsConstructor +public class GpaScoreFixtureBuilder { + + private final GpaScoreRepository gpaScoreRepository; + + private Gpa gpa; + private VerifyStatus verifyStatus; + private SiteUser siteUser; + + public GpaScoreFixtureBuilder gpaScore() { + return new GpaScoreFixtureBuilder(gpaScoreRepository); + } + + public GpaScoreFixtureBuilder gpa(Gpa gpa) { + this.gpa = gpa; + return this; + } + + public GpaScoreFixtureBuilder verifyStatus(VerifyStatus verifyStatus) { + this.verifyStatus = verifyStatus; + return this; + } + + public GpaScoreFixtureBuilder siteUser(SiteUser siteUser) { + this.siteUser = siteUser; + return this; + } + + public GpaScore create() { + GpaScore gpaScore = new GpaScore(gpa, siteUser); + gpaScore.setSiteUser(siteUser); + gpaScore.setVerifyStatus(verifyStatus); + return gpaScoreRepository.save(gpaScore); + } +} diff --git a/src/test/java/com/example/solidconnection/score/fixture/LanguageTestScoreFixture.java b/src/test/java/com/example/solidconnection/score/fixture/LanguageTestScoreFixture.java new file mode 100644 index 000000000..7805692e0 --- /dev/null +++ b/src/test/java/com/example/solidconnection/score/fixture/LanguageTestScoreFixture.java @@ -0,0 +1,26 @@ +package com.example.solidconnection.score.fixture; + +import com.example.solidconnection.application.domain.LanguageTest; +import com.example.solidconnection.application.domain.VerifyStatus; +import com.example.solidconnection.score.domain.LanguageTestScore; +import com.example.solidconnection.siteuser.domain.SiteUser; +import com.example.solidconnection.university.domain.LanguageTestType; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.test.context.TestComponent; + +import static com.example.solidconnection.university.domain.LanguageTestType.TOEIC; + +@TestComponent +@RequiredArgsConstructor +public class LanguageTestScoreFixture { + + private final LanguageTestScoreFixtureBuilder languageTestScoreFixtureBuilder; + + public LanguageTestScore 어학_점수 (VerifyStatus verifyStatus, SiteUser siteUser) { + return languageTestScoreFixtureBuilder.languageTestScore() + .languageTest(new LanguageTest(TOEIC, "500", "/language-report.pdf")) + .verifyStatus(verifyStatus) + .siteUser(siteUser) + .create(); + } +} diff --git a/src/test/java/com/example/solidconnection/score/fixture/LanguageTestScoreFixtureBuilder.java b/src/test/java/com/example/solidconnection/score/fixture/LanguageTestScoreFixtureBuilder.java new file mode 100644 index 000000000..fd5a8d417 --- /dev/null +++ b/src/test/java/com/example/solidconnection/score/fixture/LanguageTestScoreFixtureBuilder.java @@ -0,0 +1,46 @@ +package com.example.solidconnection.score.fixture; + +import com.example.solidconnection.application.domain.LanguageTest; +import com.example.solidconnection.application.domain.VerifyStatus; +import com.example.solidconnection.score.domain.LanguageTestScore; +import com.example.solidconnection.score.repository.LanguageTestScoreRepository; +import com.example.solidconnection.siteuser.domain.SiteUser; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.test.context.TestComponent; + +@TestComponent +@RequiredArgsConstructor +public class LanguageTestScoreFixtureBuilder { + + private final LanguageTestScoreRepository languageTestScoreRepository; + + private LanguageTest languageTest; + private VerifyStatus verifyStatus; + private SiteUser siteUser; + + public LanguageTestScoreFixtureBuilder languageTestScore() { + return new LanguageTestScoreFixtureBuilder(languageTestScoreRepository); + } + + public LanguageTestScoreFixtureBuilder languageTest(LanguageTest languageTest) { + this.languageTest = languageTest; + return this; + } + + public LanguageTestScoreFixtureBuilder verifyStatus(VerifyStatus verifyStatus) { + this.verifyStatus = verifyStatus; + return this; + } + + public LanguageTestScoreFixtureBuilder siteUser(SiteUser siteUser) { + this.siteUser = siteUser; + return this; + } + + public LanguageTestScore create() { + LanguageTestScore languageTestScore = new LanguageTestScore(languageTest, siteUser); + languageTestScore.setSiteUser(siteUser); + languageTestScore.setVerifyStatus(verifyStatus); + return languageTestScoreRepository.save(languageTestScore); + } +} diff --git a/src/test/java/com/example/solidconnection/score/service/ScoreServiceTest.java b/src/test/java/com/example/solidconnection/score/service/ScoreServiceTest.java index e03813607..0b1aa0718 100644 --- a/src/test/java/com/example/solidconnection/score/service/ScoreServiceTest.java +++ b/src/test/java/com/example/solidconnection/score/service/ScoreServiceTest.java @@ -1,7 +1,5 @@ package com.example.solidconnection.score.service; -import com.example.solidconnection.application.domain.Gpa; -import com.example.solidconnection.application.domain.LanguageTest; import com.example.solidconnection.application.domain.VerifyStatus; import com.example.solidconnection.s3.domain.ImgType; import com.example.solidconnection.s3.dto.UploadedFileUrlResponse; @@ -9,17 +7,16 @@ import com.example.solidconnection.score.domain.GpaScore; import com.example.solidconnection.score.domain.LanguageTestScore; import com.example.solidconnection.score.dto.GpaScoreRequest; -import com.example.solidconnection.score.dto.GpaScoreStatusResponse; import com.example.solidconnection.score.dto.GpaScoreStatusesResponse; import com.example.solidconnection.score.dto.LanguageTestScoreRequest; -import com.example.solidconnection.score.dto.LanguageTestScoreStatusResponse; import com.example.solidconnection.score.dto.LanguageTestScoreStatusesResponse; +import com.example.solidconnection.score.fixture.GpaScoreFixture; +import com.example.solidconnection.score.fixture.LanguageTestScoreFixture; import com.example.solidconnection.score.repository.GpaScoreRepository; import com.example.solidconnection.score.repository.LanguageTestScoreRepository; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; -import com.example.solidconnection.siteuser.repository.SiteUserRepository; -import com.example.solidconnection.support.integration.BaseIntegrationTest; +import com.example.solidconnection.support.TestContainerSpringBootTest; import com.example.solidconnection.university.domain.LanguageTestType; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -31,11 +28,11 @@ import java.util.List; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertAll; import static org.mockito.BDDMockito.given; +@TestContainerSpringBootTest @DisplayName("점수 서비스 테스트") -class ScoreServiceTest extends BaseIntegrationTest { +class ScoreServiceTest { @Autowired private ScoreService scoreService; @@ -43,9 +40,6 @@ class ScoreServiceTest extends BaseIntegrationTest { @Autowired private GpaScoreRepository gpaScoreRepository; - @Autowired - private SiteUserRepository siteUserRepository; - @Autowired private LanguageTestScoreRepository languageTestScoreRepository; @@ -55,6 +49,12 @@ class ScoreServiceTest extends BaseIntegrationTest { @Autowired private SiteUserFixture siteUserFixture; + @Autowired + private GpaScoreFixture gpaScoreFixture; + + @Autowired + private LanguageTestScoreFixture languageTestScoreFixture; + private SiteUser user; @BeforeEach @@ -66,21 +66,15 @@ void setUp() { void GPA_점수_상태를_조회한다() { // given List scores = List.of( - createGpaScore(user, 3.5, 4.5), - createGpaScore(user, 3.8, 4.5) + gpaScoreFixture.GPA_점수(VerifyStatus.PENDING, user), + gpaScoreFixture.GPA_점수(VerifyStatus.APPROVED, user) ); // when GpaScoreStatusesResponse response = scoreService.getGpaScoreStatus(user); // then - assertThat(response.gpaScoreStatusResponseList()) - .hasSize(scores.size()) - .containsExactlyInAnyOrder( - scores.stream() - .map(GpaScoreStatusResponse::from) - .toArray(GpaScoreStatusResponse[]::new) - ); + assertThat(response.gpaScoreStatusResponseList()).hasSize(scores.size()); } @Test @@ -96,22 +90,15 @@ void setUp() { void 어학_시험_점수_상태를_조회한다() { // given List scores = List.of( - createLanguageTestScore(user, LanguageTestType.TOEIC, "100"), - createLanguageTestScore(user, LanguageTestType.TOEFL_IBT, "7.5") + languageTestScoreFixture.어학_점수(VerifyStatus.PENDING, user), + languageTestScoreFixture.어학_점수(VerifyStatus.PENDING, user) ); - siteUserRepository.save(user); // when LanguageTestScoreStatusesResponse response = scoreService.getLanguageTestScoreStatus(user); // then - assertThat(response.languageTestScoreStatusResponseList()) - .hasSize(scores.size()) - .containsExactlyInAnyOrder( - scores.stream() - .map(LanguageTestScoreStatusResponse::from) - .toArray(LanguageTestScoreStatusResponse[]::new) - ); + assertThat(response.languageTestScoreStatusResponseList()).hasSize(scores.size()); } @Test @@ -136,13 +123,7 @@ void setUp() { GpaScore savedScore = gpaScoreRepository.findById(scoreId).orElseThrow(); // then - assertAll( - () -> assertThat(savedScore.getId()).isEqualTo(scoreId), - () -> assertThat(savedScore.getGpa().getGpa()).isEqualTo(request.gpa()), - () -> assertThat(savedScore.getGpa().getGpaCriteria()).isEqualTo(request.gpaCriteria()), - () -> assertThat(savedScore.getVerifyStatus()).isEqualTo(VerifyStatus.PENDING), - () -> assertThat(savedScore.getGpa().getGpaReportUrl()).isEqualTo(fileUrl) - ); + assertThat(savedScore.getId()).isEqualTo(scoreId); } @Test @@ -158,31 +139,7 @@ void setUp() { LanguageTestScore savedScore = languageTestScoreRepository.findById(scoreId).orElseThrow(); // then - assertAll( - () -> assertThat(savedScore.getId()).isEqualTo(scoreId), - () -> assertThat(savedScore.getLanguageTest().getLanguageTestType()).isEqualTo(request.languageTestType()), - () -> assertThat(savedScore.getLanguageTest().getLanguageTestScore()).isEqualTo(request.languageTestScore()), - () -> assertThat(savedScore.getVerifyStatus()).isEqualTo(VerifyStatus.PENDING), - () -> assertThat(savedScore.getLanguageTest().getLanguageTestReportUrl()).isEqualTo(fileUrl) - ); - } - - private GpaScore createGpaScore(SiteUser siteUser, double gpa, double gpaCriteria) { - GpaScore gpaScore = new GpaScore( - new Gpa(gpa, gpaCriteria, "/gpa-report.pdf"), - siteUser - ); - gpaScore.setSiteUser(siteUser); - return gpaScoreRepository.save(gpaScore); - } - - private LanguageTestScore createLanguageTestScore(SiteUser siteUser, LanguageTestType languageTestType, String score) { - LanguageTestScore languageTestScore = new LanguageTestScore( - new LanguageTest(languageTestType, score, "/gpa-report.pdf"), - siteUser - ); - languageTestScore.setSiteUser(siteUser); - return languageTestScoreRepository.save(languageTestScore); + assertThat(savedScore.getId()).isEqualTo(scoreId); } private GpaScoreRequest createGpaScoreRequest() {