diff --git a/server/skillhub-app/pom.xml b/server/skillhub-app/pom.xml index 413e7eaf..a946bf3f 100644 --- a/server/skillhub-app/pom.xml +++ b/server/skillhub-app/pom.xml @@ -13,6 +13,10 @@ skillhub-app + + 1.21.4 + + org.springframework.boot @@ -121,6 +125,16 @@ h2 test + + org.testcontainers + junit-jupiter + test + + + org.testcontainers + postgresql + test + diff --git a/server/skillhub-app/src/test/java/com/iflytek/skillhub/repository/JpaReviewProgressQueryRepositoryTest.java b/server/skillhub-app/src/test/java/com/iflytek/skillhub/repository/JpaReviewProgressQueryRepositoryTest.java index eaf05e5a..b08edf39 100644 --- a/server/skillhub-app/src/test/java/com/iflytek/skillhub/repository/JpaReviewProgressQueryRepositoryTest.java +++ b/server/skillhub-app/src/test/java/com/iflytek/skillhub/repository/JpaReviewProgressQueryRepositoryTest.java @@ -10,16 +10,37 @@ import com.iflytek.skillhub.domain.skill.SkillVisibility; import java.time.Instant; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager; import org.springframework.context.annotation.Import; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; import org.springframework.test.context.ActiveProfiles; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; @DataJpaTest +@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) @ActiveProfiles("test") @Import(JpaReviewProgressQueryRepository.class) +@Testcontainers class JpaReviewProgressQueryRepositoryTest { + @Container + private static final PostgreSQLContainer POSTGRES = + new PostgreSQLContainer<>("postgres:16-alpine"); + + @DynamicPropertySource + static void configurePostgres(DynamicPropertyRegistry registry) { + registry.add("spring.datasource.url", POSTGRES::getJdbcUrl); + registry.add("spring.datasource.username", POSTGRES::getUsername); + registry.add("spring.datasource.password", POSTGRES::getPassword); + registry.add("spring.datasource.driver-class-name", () -> "org.postgresql.Driver"); + registry.add("spring.jpa.database-platform", () -> "org.hibernate.dialect.PostgreSQLDialect"); + } + @Autowired private TestEntityManager entityManager; @@ -77,6 +98,7 @@ class JpaReviewProgressQueryRepositoryTest { var firstPage = repository.findMyProgress("author-1", null, "", 0, 1); + assertThat(firstPage.items()).hasSize(1); assertThat(firstPage.total()).isEqualTo(3); assertThat(firstPage.items()).singleElement().satisfies(item -> { assertThat(item.skillSlug()).isEqualTo("alpha-skill");