You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2026/09/07 00:46:07 UTC
(cayenne) branch master updated: simplify tetsts
This is an automated email from the ASF dual-hosted git repository.
asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/master by this push:
new 2b08c0c20 simplify tetsts
2b08c0c20 is described below
commit 2b08c0c20e49ad29b0cb8dcb248c2ed091152e70
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Sun Sep 6 20:44:50 2026 -0400
simplify tetsts
---
.../cayenne/access/DataContextSQLTemplateIT.java | 26 +++---
.../cayenne/access/DataContextSharedCacheIT.java | 17 ++--
.../apache/cayenne/access/DataNodeQueriesIT.java | 6 +-
.../cayenne/access/jdbc/SQLTemplateActionIT.java | 11 +--
.../org/apache/cayenne/unit/CayenneTestsEnv.java | 5 --
.../cayenne/unit/util/SQLTemplateCustomizer.java | 97 ----------------------
6 files changed, 27 insertions(+), 135 deletions(-)
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java
index 1cc82ae46..637df1435 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java
@@ -34,7 +34,6 @@ import org.apache.cayenne.testdo.testmap.Artist;
import org.apache.cayenne.testdo.testmap.Painting;
import org.apache.cayenne.unit.CayenneTestsEnv;
import org.apache.cayenne.unit.CayenneProjects;
-import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
@@ -51,7 +50,6 @@ public class DataContextSQLTemplateIT {
static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
protected DataContext context;
- protected SQLTemplateCustomizer sqlTemplateCustomizer;
protected TableHelper tPainting;
protected TableHelper tArtist;
@@ -60,7 +58,6 @@ public class DataContextSQLTemplateIT {
@BeforeEach
public void setUp() throws Exception {
context = env.context();
- sqlTemplateCustomizer = env.sqlTemplateCustomizer();
tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
tPainting = env.table("PAINTING").setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "ESTIMATED_PRICE").setColumnTypes(
@@ -232,7 +229,7 @@ public class DataContextSQLTemplateIT {
String template = "SELECT * FROM ARTIST ORDER BY ARTIST_ID";
SQLTemplate query = new SQLTemplate(Artist.class, template);
- sqlTemplateCustomizer.updateSQLTemplate(query);
+ query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setFetchingDataRows(true);
@@ -250,7 +247,8 @@ public class DataContextSQLTemplateIT {
createFourArtists();
String template = "SELECT * FROM ARTIST ORDER BY ARTIST_ID";
- SQLTemplate query = sqlTemplateCustomizer.createSQLTemplate(Artist.class, template);
+ SQLTemplate query = new SQLTemplate(Artist.class, template);
+ query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setFetchingDataRows(false);
@@ -424,7 +422,8 @@ public class DataContextSQLTemplateIT {
// sanity check
assertTrue(fetchLimit < 4);
String template = "SELECT * FROM ARTIST ORDER BY ARTIST_ID";
- SQLTemplate query = sqlTemplateCustomizer.createSQLTemplate(Artist.class, template);
+ SQLTemplate query = new SQLTemplate(Artist.class, template);
+ query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setFetchLimit(fetchLimit);
List<?> objects = context.performQuery(query);
@@ -441,7 +440,8 @@ public class DataContextSQLTemplateIT {
// sanity check
assertTrue(fetchOffset < 4);
String template = "SELECT * FROM ARTIST ORDER BY ARTIST_ID";
- SQLTemplate query = sqlTemplateCustomizer.createSQLTemplate(Artist.class, template);
+ SQLTemplate query = new SQLTemplate(Artist.class, template);
+ query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setFetchOffset(fetchOffset);
List<?> objects = context.performQuery(query);
@@ -454,7 +454,8 @@ public class DataContextSQLTemplateIT {
createFourArtists();
String template = "SELECT * FROM ARTIST ORDER BY ARTIST_ID";
- SQLTemplate query = sqlTemplateCustomizer.createSQLTemplate(Artist.class, template);
+ SQLTemplate query = new SQLTemplate(Artist.class, template);
+ query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setFetchOffset(1);
query.setFetchLimit(2);
@@ -473,7 +474,8 @@ public class DataContextSQLTemplateIT {
assertTrue(pageSize < 4);
String template = "SELECT * FROM ARTIST ORDER BY ARTIST_ID";
- SQLTemplate query = sqlTemplateCustomizer.createSQLTemplate(Artist.class, template);
+ SQLTemplate query = new SQLTemplate(Artist.class, template);
+ query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setPageSize(pageSize);
@@ -505,7 +507,8 @@ public class DataContextSQLTemplateIT {
// the PK is the SECOND result column - exercises the paginated id reader's column indexing
String template = "SELECT ARTIST_NAME, ARTIST_ID FROM ARTIST ORDER BY ARTIST_ID";
- SQLTemplate query = sqlTemplateCustomizer.createSQLTemplate(Artist.class, template);
+ SQLTemplate query = new SQLTemplate(Artist.class, template);
+ query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setPageSize(pageSize);
@@ -572,7 +575,8 @@ public class DataContextSQLTemplateIT {
// see CAY-726 for details
String template = "SELECT #result('count(*)' 'int' 'X')" + System.getProperty("line.separator") + "FROM ARTIST";
- SQLTemplate query = sqlTemplateCustomizer.createSQLTemplate(Artist.class, template);
+ SQLTemplate query = new SQLTemplate(Artist.class, template);
+ query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setFetchingDataRows(true);
List<?> result = context.performQuery(query);
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java
index 1bc1b5616..3d1017621 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java
@@ -37,7 +37,6 @@ import org.apache.cayenne.testdo.testmap.Painting;
import org.apache.cayenne.unit.CayenneProjects;
import org.apache.cayenne.unit.CayenneTestsEnv;
import org.junit.jupiter.api.extension.RegisterExtension;
-import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -55,7 +54,6 @@ public class DataContextSharedCacheIT {
private DataContext context;
private DataContext context1;
- private SQLTemplateCustomizer sqlTemplateCustomizer;
private Artist artist;
@@ -64,7 +62,6 @@ public class DataContextSharedCacheIT {
public void setUp() throws Exception {
context = env.context();
context1 = (DataContext) env.runtime().newContext();
- sqlTemplateCustomizer = env.sqlTemplateCustomizer();
// prepare a single artist record
artist = (Artist) context.newObject("Artist");
artist.setArtistName("version1");
@@ -82,10 +79,9 @@ public class DataContextSharedCacheIT {
final String newName = "version2";
// update artist using raw SQL
- SQLTemplate query = sqlTemplateCustomizer.createSQLTemplate(
- Artist.class,
- "UPDATE ARTIST SET ARTIST_NAME = #bind($newName) "
- + "WHERE ARTIST_NAME = #bind($oldName)");
+ // RTRIM: on Oracle a CHAR column compared with a VARCHAR bind is not blank-padded
+ SQLTemplate query = new SQLTemplate(Artist.class,
+ "UPDATE ARTIST SET ARTIST_NAME = #bind($newName) WHERE RTRIM(ARTIST_NAME) = #bind($oldName)");
Map<String, Object> map = new HashMap<>(3);
map.put("newName", newName);
@@ -520,10 +516,9 @@ public class DataContextSharedCacheIT {
assertEquals(originalName, oldSnapshot.get("ARTIST_NAME"));
// update artist using raw SQL
- SQLTemplate update = sqlTemplateCustomizer
- .createSQLTemplate(
- Artist.class,
- "UPDATE ARTIST SET ARTIST_NAME = #bind($newName) WHERE ARTIST_NAME = #bind($oldName)");
+ // RTRIM: on Oracle a CHAR column compared with a VARCHAR bind is not blank-padded
+ SQLTemplate update = new SQLTemplate(Artist.class,
+ "UPDATE ARTIST SET ARTIST_NAME = #bind($newName) WHERE RTRIM(ARTIST_NAME) = #bind($oldName)");
Map<String, Object> map = new HashMap<>(3);
map.put("newName", newName);
map.put("oldName", originalName);
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueriesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueriesIT.java
index f61ebcdcc..3b84e4b43 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueriesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueriesIT.java
@@ -22,12 +22,12 @@ package org.apache.cayenne.access;
import org.apache.cayenne.DataRow;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.query.Query;
+import org.apache.cayenne.query.CapsStrategy;
import org.apache.cayenne.query.SQLTemplate;
import org.apache.cayenne.test.jdbc.TableHelper;
import org.apache.cayenne.unit.CayenneProjects;
import org.apache.cayenne.unit.CayenneTestsEnv;
import org.junit.jupiter.api.extension.RegisterExtension;
-import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -46,7 +46,6 @@ public class DataNodeQueriesIT {
static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
protected DataNode node;
- protected SQLTemplateCustomizer sqlTemplateCustomizer;
protected TableHelper tArtist;
@@ -54,7 +53,6 @@ public class DataNodeQueriesIT {
@BeforeEach
public void setUp() throws Exception {
node = env.dataNode();
- sqlTemplateCustomizer = env.sqlTemplateCustomizer();
tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
}
@@ -128,7 +126,7 @@ public class DataNodeQueriesIT {
String template = "SELECT * FROM ARTIST ORDER BY ARTIST_ID";
SQLTemplate query = new SQLTemplate(Object.class, template);
- sqlTemplateCustomizer.updateSQLTemplate(query);
+ query.setColumnNamesCapitalization(CapsStrategy.UPPER);
MockOperationObserver observer = new MockOperationObserver();
node.performQueries(Collections.singletonList((Query) query), observer);
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java
index 3f502cc19..8287bd229 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java
@@ -33,7 +33,6 @@ import org.apache.cayenne.testdo.testmap.Artist;
import org.apache.cayenne.unit.CayenneTestsEnv;
import org.apache.cayenne.unit.dba.TestDbAdapter;
import org.apache.cayenne.unit.CayenneProjects;
-import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
@@ -56,7 +55,6 @@ public class SQLTemplateActionIT {
private DataNode node;
private TestDbAdapter testDbAdapter;
private ObjectContext context;
- private SQLTemplateCustomizer sqlTemplateCustomizer;
private TableHelper tArtist;
@BeforeEach
@@ -64,7 +62,6 @@ public class SQLTemplateActionIT {
node = env.dataNode();
testDbAdapter = env.testDbAdapter();
context = env.context();
- sqlTemplateCustomizer = env.sqlTemplateCustomizer();
tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
}
@@ -93,7 +90,7 @@ public class SQLTemplateActionIT {
String templateString = "SELECT * FROM ARTIST WHERE ARTIST_ID = #bind($id)";
SQLTemplate template = new SQLTemplate(Object.class, templateString);
- sqlTemplateCustomizer.updateSQLTemplate(template);
+ template.setColumnNamesCapitalization(CapsStrategy.UPPER);
Map<String, Object> bindings = new HashMap<>();
bindings.put("id", 201L);
@@ -153,7 +150,7 @@ public class SQLTemplateActionIT {
String templateString = "SELECT #result('DATE_OF_BIRTH' 'java.util.Date' 'DOB') "
+ "FROM ARTIST WHERE ARTIST_ID = #bind($id)";
SQLTemplate template = new SQLTemplate(Object.class, templateString);
- sqlTemplateCustomizer.updateSQLTemplate(template);
+ template.setColumnNamesCapitalization(CapsStrategy.UPPER);
Map<String, Object> bindings = new HashMap<>();
bindings.put("id", 101);
@@ -183,7 +180,7 @@ public class SQLTemplateActionIT {
String templateString = "SELECT #result('DATE_OF_BIRTH' 'java.sql.Date' 'DOB') "
+ "FROM ARTIST WHERE ARTIST_ID = #bind($id)";
SQLTemplate template = new SQLTemplate(Object.class, templateString);
- sqlTemplateCustomizer.updateSQLTemplate(template);
+ template.setColumnNamesCapitalization(CapsStrategy.UPPER);
Map<String, Object> bindings = new HashMap<>();
bindings.put("id", 101);
@@ -213,7 +210,7 @@ public class SQLTemplateActionIT {
String templateString = "SELECT #result('DATE_OF_BIRTH' 'java.sql.Timestamp' 'DOB') "
+ "FROM ARTIST WHERE ARTIST_ID = #bind($id)";
SQLTemplate template = new SQLTemplate(Object.class, templateString);
- sqlTemplateCustomizer.updateSQLTemplate(template);
+ template.setColumnNamesCapitalization(CapsStrategy.UPPER);
Map<String, Object> bindings = new HashMap<>();
bindings.put("id", 201);
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java
index 0871fe7a7..b73138c1f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java
@@ -41,7 +41,6 @@ import org.apache.cayenne.unit.datasource.DataSourceConfigLoader;
import org.apache.cayenne.unit.dba.TestDbAdapter;
import org.apache.cayenne.unit.telemetry.TelemetricDataNodeFactory;
import org.apache.cayenne.unit.telemetry.TestTelemetry;
-import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
import org.junit.jupiter.api.extension.AfterEachCallback;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
@@ -206,10 +205,6 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
return scope.dbCleaner();
}
- public SQLTemplateCustomizer sqlTemplateCustomizer() {
- return SQLTemplateCustomizer.of(dataNode().getAdapter());
- }
-
private record TestScope(
CayenneRuntime runtime,
DataContext context,
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/util/SQLTemplateCustomizer.java b/cayenne/src/test/java/org/apache/cayenne/unit/util/SQLTemplateCustomizer.java
deleted file mode 100644
index 22d5d2004..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/unit/util/SQLTemplateCustomizer.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ****************************************************************/
-
-package org.apache.cayenne.unit.util;
-
-import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.query.SQLTemplate;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Helper class to customize SQLTemplate queries used in test cases per adapter.
- */
-public class SQLTemplateCustomizer {
-
- private static final Map<String, Map<String, String>> map = new HashMap<>();
-
- static {
- Map<String, String> q1 = new HashMap<>();
- q1.put("org.apache.cayenne.dba.postgres.PostgresAdapter",
- "SELECT #result('ARTIST_ID'), RTRIM(#result('ARTIST_NAME')), "
- + "#result('DATE_OF_BIRTH') FROM ARTIST ORDER BY ARTIST_ID");
- q1.put("org.apache.cayenne.dba.ingres.IngresAdapter",
- "SELECT #result('ARTIST_ID'), TRIM(#result('ARTIST_NAME')), "
- + "#result('DATE_OF_BIRTH') FROM ARTIST ORDER BY ARTIST_ID");
- q1.put("org.apache.cayenne.dba.openbase.OpenBaseAdapter",
- "SELECT #result('ARTIST_ID'), #result('ARTIST_NAME'), "
- + "#result('DATE_OF_BIRTH') FROM ARTIST ORDER BY ARTIST_ID");
-
- Map<String, String> q2 = new HashMap<>();
- q2.put("org.apache.cayenne.dba.postgres.PostgresAdapter",
- "SELECT #result('ARTIST_ID'), RTRIM(#result('ARTIST_NAME')), #result('DATE_OF_BIRTH') "
- + "FROM ARTIST WHERE ARTIST_ID = #bind($id)");
- q2.put("org.apache.cayenne.dba.ingres.IngresAdapter",
- "SELECT #result('ARTIST_ID'), TRIM(#result('ARTIST_NAME')), #result('DATE_OF_BIRTH') "
- + "FROM ARTIST WHERE ARTIST_ID = #bind($id)");
- q2.put("org.apache.cayenne.dba.openbase.OpenBaseAdapter",
- "SELECT #result('ARTIST_ID'), #result('ARTIST_NAME'), #result('DATE_OF_BIRTH') "
- + "FROM ARTIST WHERE ARTIST_ID = #bind($id)");
-
- Map<String, String> q3 = new HashMap<>();
- q3.put(
- "org.apache.cayenne.dba.oracle.OracleAdapter",
- "UPDATE ARTIST SET ARTIST_NAME = #bind($newName) WHERE RTRIM(ARTIST_NAME) = #bind($oldName)");
-
- map.put("SELECT * FROM ARTIST ORDER BY ARTIST_ID", q1);
- map.put("SELECT * FROM ARTIST WHERE ARTIST_ID = #bind($id)", q2);
- map.put("UPDATE ARTIST SET ARTIST_NAME = #bind($newName) "
- + "WHERE ARTIST_NAME = #bind($oldName)", q3);
- }
-
- public static SQLTemplateCustomizer of(DbAdapter dbAdapter) {
- return new SQLTemplateCustomizer(map, dbAdapter);
- }
-
- private final DbAdapter adapter;
- private final Map<String, Map<String, String>> sqlMap;
-
- private SQLTemplateCustomizer(Map<String, Map<String, String>> sqlMap, DbAdapter adapter) {
- this.sqlMap = sqlMap;
- this.adapter = adapter;
- }
-
- public void updateSQLTemplate(SQLTemplate query) {
- Map<String, String> customSQL = sqlMap.get(query.getDefaultTemplate());
- if (customSQL != null) {
- String key = adapter.unwrap().getClass().getName();
- String template = customSQL.get(key);
- if (template != null) {
- query.setTemplate(key, template);
- }
- }
- }
-
- public SQLTemplate createSQLTemplate(Class<?> root, String defaultTemplate) {
- SQLTemplate template = new SQLTemplate(root, defaultTemplate);
- updateSQLTemplate(template);
- return template;
- }
-}