From fa13dd54ee5dfa74ff321508e2f309474e30bddf Mon Sep 17 00:00:00 2001
From: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
Date: Tue, 1 Sep 2026 14:58:50 +0800
Subject: [PATCH] test(review): validate progress query on postgres
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
---
server/skillhub-app/pom.xml | 14 ++++++++++++
.../JpaReviewProgressQueryRepositoryTest.java | 22 +++++++++++++++++++
2 files changed, 36 insertions(+)
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");