From 5c58b331b38d0b31e612f4da69fff75ad7010798 Mon Sep 17 00:00:00 2001 From: Jean Bisutti Date: Thu, 26 Mar 2026 23:09:59 +0100 Subject: [PATCH] generateInsertScriptFor(DatasetRow) returns insert script --- src/main/java/org/qstd/QuickSqlTestData.java | 12 +++++++ .../java/org/qstd/test/DatasetRowApiTest.java | 33 +++++++++++++++++++ 2 files changed, 45 insertions(+) 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() {