diff --git a/README.adoc b/README.adoc
index 02433ef..99c1715 100644
--- a/README.adoc
+++ b/README.adoc
@@ -20,7 +20,7 @@ You need to add the next dependency:
com.jupiter-tools
spring-test-jpa
- 0.2
+ 0.5
----
@@ -74,7 +74,7 @@ in your integration test, you can use PostgresTcExtension.
com.jupiter-tools
spring-test-postgres
- 0.2
+ 0.5
----
@@ -140,6 +140,11 @@ image:./images/pg-annotations.png[postgres annotation system]
You can build a necessary test configuration by using annotations which you need. Meta-annotations is a beautiful mechanism which will you a making configuration in a declarative style.
+By default, the *latest* version of PostgreSQL docker image will be used for test. But it can be overridden by setting necessary version via _resources/tc-extension.properties_ file:
+[source, properties]
+----
+tc-extension.postgres.docker-image-version=13.7-alpine
+----
### MySql Extension
@@ -151,7 +156,7 @@ in the configuration to use this datasource in tests.
com.jupiter-tools
spring-test-mysql
- 0.2
+ 0.5
----
@@ -196,7 +201,7 @@ and configure SpringBoot properties to work with this container.
com.jupiter-tools
spring-test-rabbitmq
- 0.2
+ 0.5
----
@@ -308,7 +313,7 @@ You need to use the next dependency:
com.jupiter-tools
spring-test-activemq
- 0.2
+ 0.5
----
@@ -401,7 +406,7 @@ web server with a mocked external controller and send HTTP requests to this serv
com.jupiter-tools
spring-test-web
- 0.2
+ 0.5
----
diff --git a/pom.xml b/pom.xml
index e79b897..8f4644c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
com.jupiter-tools
spring-boot-extensions-parent
- 0.4
+ 0.5
pom
spring-boot-extensions-parent
diff --git a/spring-test-activemq/pom.xml b/spring-test-activemq/pom.xml
index a3e3268..e1c0df9 100644
--- a/spring-test-activemq/pom.xml
+++ b/spring-test-activemq/pom.xml
@@ -6,7 +6,7 @@
com.jupiter-tools
spring-boot-extensions-parent
- 0.4
+ 0.5
spring-test-activemq
diff --git a/spring-test-core/pom.xml b/spring-test-core/pom.xml
index a8e6d7f..4656080 100644
--- a/spring-test-core/pom.xml
+++ b/spring-test-core/pom.xml
@@ -6,7 +6,7 @@
com.jupiter-tools
spring-boot-extensions-parent
- 0.4
+ 0.5
spring-test-core
diff --git a/spring-test-jpa/pom.xml b/spring-test-jpa/pom.xml
index ea1ce42..61feb21 100644
--- a/spring-test-jpa/pom.xml
+++ b/spring-test-jpa/pom.xml
@@ -6,7 +6,7 @@
com.jupiter-tools
spring-boot-extensions-parent
- 0.4
+ 0.5
spring-test-jpa
diff --git a/spring-test-mysql/pom.xml b/spring-test-mysql/pom.xml
index f116b9f..f2adcfe 100644
--- a/spring-test-mysql/pom.xml
+++ b/spring-test-mysql/pom.xml
@@ -6,7 +6,7 @@
com.jupiter-tools
spring-boot-extensions-parent
- 0.4
+ 0.5
spring-test-mysql
diff --git a/spring-test-postgres/pom.xml b/spring-test-postgres/pom.xml
index 923c620..1127b7f 100644
--- a/spring-test-postgres/pom.xml
+++ b/spring-test-postgres/pom.xml
@@ -6,7 +6,7 @@
com.jupiter-tools
spring-boot-extensions-parent
- 0.4
+ 0.5
spring-test-postgres
@@ -40,7 +40,7 @@
org.testcontainers
postgresql
- 1.11.4
+ 1.17.2
compile
diff --git a/spring-test-postgres/src/main/java/com/jupiter/tools/spring/test/postgres/extension/PostgresTcExtension.java b/spring-test-postgres/src/main/java/com/jupiter/tools/spring/test/postgres/extension/PostgresTcExtension.java
index 01da115..14c0fca 100644
--- a/spring-test-postgres/src/main/java/com/jupiter/tools/spring/test/postgres/extension/PostgresTcExtension.java
+++ b/spring-test-postgres/src/main/java/com/jupiter/tools/spring/test/postgres/extension/PostgresTcExtension.java
@@ -1,8 +1,13 @@
package com.jupiter.tools.spring.test.postgres.extension;
+import org.hibernate.dialect.PostgreSQL10Dialect;
import org.hibernate.dialect.PostgreSQL9Dialect;
import org.junit.jupiter.api.extension.Extension;
import org.testcontainers.containers.PostgreSQLContainer;
+import org.testcontainers.utility.DockerImageName;
+
+import java.io.IOException;
+import java.util.Properties;
/**
* Created on 06.08.2018.
@@ -14,13 +19,25 @@ public class PostgresTcExtension implements Extension {
static {
System.out.println("Start Postgres testcontainers extension...\n");
- PostgreSQLContainer postgres = new PostgreSQLContainer();
+ PostgreSQLContainer postgres = new PostgreSQLContainer("postgres:" + getDockerImageName());
postgres.start();
System.setProperty("spring.datasource.driver-class-name", postgres.getDriverClassName());
System.setProperty("spring.datasource.url", postgres.getJdbcUrl());
System.setProperty("spring.datasource.username", postgres.getUsername());
System.setProperty("spring.datasource.password", postgres.getPassword());
- System.setProperty("spring.jpa.properties.hibernate.dialect", PostgreSQL9Dialect.class.getCanonicalName());
+ System.setProperty("spring.jpa.properties.hibernate.dialect", PostgreSQL10Dialect.class.getCanonicalName());
+ }
+
+ private static String getDockerImageName() {
+ try {
+ Properties props = new Properties();
+ props.load(PostgresTcExtension.class.getResourceAsStream("/tc-extension.properties"));
+ return props.getProperty("tc-extension.postgres.docker-image-version", "latest");
+ } catch (Exception e) {
+ e.printStackTrace();
+ return "latest";
+ }
}
+
}
diff --git a/spring-test-postgres/src/test/java/com/jupiter/tools/spring/test/postgres/extension/PostgresTcExtensionCustomVersionTest.java b/spring-test-postgres/src/test/java/com/jupiter/tools/spring/test/postgres/extension/PostgresTcExtensionCustomVersionTest.java
new file mode 100644
index 0000000..9b51dc6
--- /dev/null
+++ b/spring-test-postgres/src/test/java/com/jupiter/tools/spring/test/postgres/extension/PostgresTcExtensionCustomVersionTest.java
@@ -0,0 +1,68 @@
+package com.jupiter.tools.spring.test.postgres.extension;
+
+import org.assertj.core.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.AfterAllCallback;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.api.extension.Extension;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.StoredProcedureQuery;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+
+/**
+ * Created on 13.06.2022.
+ *
+ * @author Sergey Nikolaev
+ */
+@DataJpaTest
+@ExtendWith(PostgresTcExtensionCustomVersionTest.InitializePropertiesExtension.class)
+@ExtendWith(SpringExtension.class)
+@ExtendWith(PostgresTcExtension.class)
+@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
+public class PostgresTcExtensionCustomVersionTest {
+
+ @PersistenceContext
+ private EntityManager entityManager;
+
+ @Test
+ void testCustomPostgresVersion() {
+ // Arrange
+ StoredProcedureQuery query = entityManager.createStoredProcedureQuery("version");
+ // Act
+ query.execute();
+ // Assert
+ Object result = query.getSingleResult();
+ Assertions.assertThat(result.toString()).contains("PostgreSQL 12");
+ }
+
+ public static class InitializePropertiesExtension implements Extension, AfterAllCallback {
+ public static final String SOURCE;
+ static {
+ SOURCE = PostgresTcExtensionCustomVersionTest.class.getResource("/").getPath() + "tc-extension.properties";
+ try(FileWriter writer = new FileWriter(SOURCE)) {
+ writer.write("tc-extension.postgres.docker-image-version=12");
+ } catch (IOException e) {
+ e.printStackTrace();
+ Assertions.fail("Fail create tc-extension.properties");
+ }
+ }
+
+ @Override
+ public void afterAll(ExtensionContext extensionContext) throws Exception {
+ try {
+ new File(SOURCE).delete();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+}
diff --git a/spring-test-postgres/src/test/java/com/jupiter/tools/spring/test/postgres/extension/PostgresTcExtensionTest.java b/spring-test-postgres/src/test/java/com/jupiter/tools/spring/test/postgres/extension/PostgresTcExtensionTest.java
index 0456587..7f3d636 100644
--- a/spring-test-postgres/src/test/java/com/jupiter/tools/spring/test/postgres/extension/PostgresTcExtensionTest.java
+++ b/spring-test-postgres/src/test/java/com/jupiter/tools/spring/test/postgres/extension/PostgresTcExtensionTest.java
@@ -44,4 +44,16 @@ void testStoredFunc() {
int rnd = (int) resultList.get(0);
Assertions.assertThat(rnd).isEqualTo(123);
}
+
+ @Test
+ void testCustomPostgresVersion() {
+ // Arrange
+ StoredProcedureQuery query = entityManager.createStoredProcedureQuery("version");
+ // Act
+ query.execute();
+ // Assert
+ Object result = query.getSingleResult();
+ Assertions.assertThat(result.toString()).contains("PostgreSQL 12");
+ }
+
}
\ No newline at end of file
diff --git a/spring-test-rabbitmq/pom.xml b/spring-test-rabbitmq/pom.xml
index c37d21a..d9cd7c2 100644
--- a/spring-test-rabbitmq/pom.xml
+++ b/spring-test-rabbitmq/pom.xml
@@ -6,7 +6,7 @@
com.jupiter-tools
spring-boot-extensions-parent
- 0.4
+ 0.5
spring-test-rabbitmq
diff --git a/spring-test-web/pom.xml b/spring-test-web/pom.xml
index d8f60aa..93d2b07 100644
--- a/spring-test-web/pom.xml
+++ b/spring-test-web/pom.xml
@@ -6,7 +6,7 @@
com.jupiter-tools
spring-boot-extensions-parent
- 0.4
+ 0.5
spring-test-web