diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml
index e588d23..0e5f2f8 100644
--- a/.github/workflows/CI.yml
+++ b/.github/workflows/CI.yml
@@ -22,15 +22,14 @@ jobs:
with:
java-version: ${{ matrix.java }}
distribution: 'temurin'
- - name: Cache Maven dependencies
- uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5
- with:
- path: ~/.m2
- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
- restore-keys: ${{ runner.os }}-m2
+ cache: 'maven'
- name: Execute tests
run: mvn verify
- - name: check license header is present in all files
- run: mvn license:check
+ - name: Upload Maven Timeline
+ if: always()
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
+ with:
+ name: maven-timeline-java-${{ matrix.java }}
+ path: target/timeline/
- name: Upload coverage to Codecov
uses: codecov/codecov-action@75cd11691c0faa626561e295848008c8a7dddffe # v5
\ No newline at end of file
diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml
new file mode 100644
index 0000000..129440f
--- /dev/null
+++ b/.mvn/extensions.xml
@@ -0,0 +1,8 @@
+
+
+
+ io.takari.maven
+ maven-timeline
+ 2.0.4
+
+
diff --git a/pom.xml b/pom.xml
index aac6153..1bef2f4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,7 +35,7 @@
${basedir}
2022
10
- 1.17.3
+ 1.21.4
@@ -259,7 +259,7 @@
maven-enforcer-plugin
- 1.4.1
+ 3.6.2
enforce-bytecode-version
@@ -284,7 +284,7 @@
org.codehaus.mojo
extra-enforcer-rules
- 1.2
+ 1.12.0
diff --git a/src/main/java/org/qstd/QuickSqlTestData.java b/src/main/java/org/qstd/QuickSqlTestData.java
index 278edae..4bb6b72 100644
--- a/src/main/java/org/qstd/QuickSqlTestData.java
+++ b/src/main/java/org/qstd/QuickSqlTestData.java
@@ -130,6 +130,18 @@ public String generateInsertScriptFor(String... sqlQueries) {
return generateInsertScriptFor(queries);
}
+ /**
+ * Generates an SQL insertion script from a DatasetRow object. This script contains INSERT
+ * statements taking into account the database integrity constraints.
+ *
+ * @param datasetRow A dataset row
+ * @return An SQL script allowing to create in database the dataset row given in parameter
+ */
+ public String generateInsertScriptFor(DatasetRow datasetRow) {
+ SqlQuery sqlQuery = SqlQuery.buildFromRow(datasetRow, dbType);
+ return generateInsertScriptFor(sqlQuery.toString());
+ }
+
/**
* Generates a list of INSERT statements allowing to create in database the dataset row given in
* parameter. These INSERT statements take into account the database integrity constraints.
diff --git a/src/test/java/org/qstd/test/DatasetRowApiTest.java b/src/test/java/org/qstd/test/DatasetRowApiTest.java
index 5ca7cee..29db348 100644
--- a/src/test/java/org/qstd/test/DatasetRowApiTest.java
+++ b/src/test/java/org/qstd/test/DatasetRowApiTest.java
@@ -22,6 +22,39 @@
public class DatasetRowApiTest extends H2Config {
+ @Test
+ public void should_generate_an_insert_script_from_a_dataset_row() {
+
+ // GIVEN
+ TestTable playerTable =
+ buildUniqueTable(
+ DATA_SOURCE,
+ "Player",
+ " id bigint" + ", firstName varchar(255)" + ", lastName varchar(255)")
+ .create()
+ .insertValues("1, 'Paul', 'Pogba'");
+
+ DatasetRow datasetRow =
+ DatasetRow.ofTable(playerTable.getTableName())
+ .addColumnValue("id", 1)
+ .addColumnValue("firstName", "Paul")
+ .addColumnValue("lastName", "Pogba");
+
+ QuickSqlTestData quickSqlTestData = QuickSqlTestData.buildFrom(DATA_SOURCE);
+
+ // WHEN
+ String insertScript = quickSqlTestData.generateInsertScriptFor(datasetRow);
+
+ // THEN
+ playerTable.recreate();
+ SQL_EXECUTOR.execute(insertScript);
+ assertThat(playerTable)
+ .withScript(insertScript)
+ .hasNumberOfRows(1)
+ .row(0)
+ .hasValues(1, "Paul", "Pogba");
+ }
+
@Test
public void should_generate_working_insert_from_a_dataset_row() {
diff --git a/src/test/java/org/qstd/test/MSSQLServerTest.java b/src/test/java/org/qstd/test/MSSQLServerTest.java
index bc10300..5656d5a 100644
--- a/src/test/java/org/qstd/test/MSSQLServerTest.java
+++ b/src/test/java/org/qstd/test/MSSQLServerTest.java
@@ -28,8 +28,7 @@
public class MSSQLServerTest {
private static final MSSQLServerContainer MS_SQL_SERVER =
- new MSSQLServerContainer("mcr.microsoft.com/mssql/server:2019-CU9-ubuntu-16.04")
- .acceptLicense();
+ new MSSQLServerContainer<>("mcr.microsoft.com/mssql/server:2022-latest").acceptLicense();
private static DataSource DATA_SOURCE;
diff --git a/src/test/java/org/qstd/test/MariaDBSlowTest.java b/src/test/java/org/qstd/test/MariaDBSlowTest.java
index 98cc773..3722073 100644
--- a/src/test/java/org/qstd/test/MariaDBSlowTest.java
+++ b/src/test/java/org/qstd/test/MariaDBSlowTest.java
@@ -30,7 +30,7 @@ public class MariaDBSlowTest {
private static final String DB_PASSWORD = "pwd";
private static final MariaDBContainer MARIA_DB_CONTAINER =
- new MariaDBContainer<>("mariadb:10.5.2")
+ new MariaDBContainer<>("mariadb:11.4")
.withDatabaseName("mariadb")
.withUsername(DB_USER_NAME)
.withPassword(DB_PASSWORD);
diff --git a/src/test/java/org/qstd/test/MariaDBTest.java b/src/test/java/org/qstd/test/MariaDBTest.java
index e79f261..3a4cdc3 100644
--- a/src/test/java/org/qstd/test/MariaDBTest.java
+++ b/src/test/java/org/qstd/test/MariaDBTest.java
@@ -32,7 +32,7 @@ public class MariaDBTest {
private static final String DB_PASSWORD = "pwd";
private static final MariaDBContainer MARIA_DB_CONTAINER =
- new MariaDBContainer<>("mariadb:10.5.2")
+ new MariaDBContainer<>("mariadb:11.4")
.withDatabaseName("mariadb")
.withUsername(DB_USER_NAME)
.withPassword(DB_PASSWORD);
diff --git a/src/test/java/org/qstd/test/OracleTest.java b/src/test/java/org/qstd/test/OracleTest.java
index 7a3cd05..4e24dfd 100644
--- a/src/test/java/org/qstd/test/OracleTest.java
+++ b/src/test/java/org/qstd/test/OracleTest.java
@@ -31,7 +31,7 @@ public class OracleTest {
private static DataSource DATA_SOURCE;
private static final OracleContainer ORACLE_CONTAINER =
- new OracleContainer("gvenzl/oracle-xe:18-slim").withEnv("ORACLE_PASSWORD", "oracle");
+ new OracleContainer("gvenzl/oracle-xe:21.3.0-slim").withEnv("ORACLE_PASSWORD", "oracle");
private static SqlExecutor SQL_EXECUTOR;
diff --git a/src/test/java/org/qstd/test/PostgreSqlTest.java b/src/test/java/org/qstd/test/PostgreSqlTest.java
index 1fc9c33..076b89d 100644
--- a/src/test/java/org/qstd/test/PostgreSqlTest.java
+++ b/src/test/java/org/qstd/test/PostgreSqlTest.java
@@ -33,7 +33,7 @@ public class PostgreSqlTest {
private static final String DB_PASSWORD = "pwd";
private static final PostgreSQLContainer POSTGRESQL_CONTAINER =
- new PostgreSQLContainer<>("postgres:12.3")
+ new PostgreSQLContainer<>("postgres:17")
.withDatabaseName("postgresql")
.withUsername(DB_USER_NAME)
.withPassword(DB_PASSWORD);