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;
-    }
-}