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/05/15 22:44:54 UTC
(cayenne) 02/02: Test cleanup...
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
commit 0f7fdb51cab61226f4f4ad138d54ee492ff64c4b
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Fri May 15 18:13:41 2026 -0400
Test cleanup...
* using AutoAdapter for tests instead of manually matching the DB
---
.../access/DataContextExtendedTypeOperationsIT.java | 16 ++++++++++------
.../org/apache/cayenne/access/DataContextExtrasIT.java | 3 ++-
.../translator/batch/DeleteBatchTranslatorIT.java | 3 ---
.../translator/batch/InsertBatchTranslatorIT.java | 2 --
.../translator/batch/UpdateBatchTranslatorIT.java | 8 ++------
.../java/org/apache/cayenne/dba/AutoAdapterIT.java | 14 ++++++--------
.../java/org/apache/cayenne/unit/CayenneTestsEnv.java | 18 ++++++++++++------
.../cayenne/unit/runtime/AllTestsSchemaManager.java | 6 +-----
8 files changed, 33 insertions(+), 37 deletions(-)
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtendedTypeOperationsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtendedTypeOperationsIT.java
index 0c61738dd..f89ba571d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtendedTypeOperationsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtendedTypeOperationsIT.java
@@ -18,30 +18,34 @@
****************************************************************/
package org.apache.cayenne.access;
-import java.util.Arrays;
-
+import org.apache.cayenne.configuration.runtime.CoreModule;
import org.apache.cayenne.query.CapsStrategy;
import org.apache.cayenne.query.ObjectSelect;
import org.apache.cayenne.query.SQLTemplate;
import org.apache.cayenne.testdo.extended_type.ExtendedTypeEntity;
import org.apache.cayenne.testdo.extended_type.StringET1;
-import org.apache.cayenne.unit.runtime.CayenneProjects;
+import org.apache.cayenne.testdo.extended_type.StringET1ExtendedType;
import org.apache.cayenne.unit.CayenneTestsEnv;
+import org.apache.cayenne.unit.runtime.CayenneProjects;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
+import java.util.Arrays;
+
import static org.junit.jupiter.api.Assertions.assertEquals;
public class DataContextExtendedTypeOperationsIT {
@RegisterExtension
- static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.EXTENDED_TYPE_PROJECT);
+ static final CayenneTestsEnv env = CayenneTestsEnv
+ .forProject(CayenneProjects.EXTENDED_TYPE_PROJECT)
+ .withExtraModules(b -> CoreModule.extend(b).addUserExtendedType(StringET1ExtendedType.class));
@Test
public void storeExtendedType() {
ExtendedTypeEntity e1 = env.context().newObject(ExtendedTypeEntity.class);
e1.setName(new StringET1("X"));
- e1.getObjectContext().commitChanges();
+ env.context().commitChanges();
SQLTemplate checkQ = new SQLTemplate(
ExtendedTypeEntity.class,
@@ -62,7 +66,7 @@ public class DataContextExtendedTypeOperationsIT {
ExtendedTypeEntity e3 = e1.getObjectContext().newObject(ExtendedTypeEntity.class);
e3.setName(new StringET1("Z"));
- e1.getObjectContext().commitChanges();
+ env.context().commitChanges();
ObjectSelect<ExtendedTypeEntity> query = ObjectSelect.query(ExtendedTypeEntity.class)
.where(ExtendedTypeEntity.NAME.in(new StringET1("X"), new StringET1("Y")));
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java
index 6852efa4e..503fd3fee 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java
@@ -25,6 +25,7 @@ import org.apache.cayenne.DataRow;
import org.apache.cayenne.ObjectId;
import org.apache.cayenne.PersistenceState;
import org.apache.cayenne.Persistent;
+import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.JdbcAdapter;
import org.apache.cayenne.dba.JdbcPkGenerator;
import org.apache.cayenne.dba.PkGenerator;
@@ -263,7 +264,7 @@ public class DataContextExtrasIT {
.next()
.getAdapter()
.getPkGenerator();
- JdbcAdapter adapter = (JdbcAdapter) domain
+ DbAdapter adapter = domain
.getDataNodes()
.iterator()
.next()
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslatorIT.java
index a351f11dd..e31dbcea1 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslatorIT.java
@@ -117,7 +117,6 @@ public class DeleteBatchTranslatorIT {
List<DbAttribute> idAttributes = Collections.singletonList(entity.getAttribute("LOCKING_TEST_ID"));
DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, Collections.emptySet(), 1);
- JdbcAdapter adapter = (JdbcAdapter) this.adapter;
DeleteBatchTranslator builder = new DeleteBatchTranslator(deleteQuery, adapter);
String generatedSql = builder.getSql();
@@ -148,8 +147,6 @@ public class DeleteBatchTranslatorIT {
DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, nullAttributes, 1);
- JdbcAdapter adapter = (JdbcAdapter) this.adapter;
-
DeleteBatchTranslator builder = new DeleteBatchTranslator(deleteQuery, adapter);
String generatedSql = builder.getSql();
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslatorIT.java
index b4471a522..46542bb76 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslatorIT.java
@@ -91,8 +91,6 @@ public class InsertBatchTranslatorIT {
entity.getDataMap().setQuotingSQLIdentifiers(true);
- JdbcAdapter adapter = (JdbcAdapter) this.adapter;
-
InsertBatchQuery insertQuery = new InsertBatchQuery(entity, 1);
InsertBatchTranslator builder = new InsertBatchTranslator(insertQuery, adapter);
String generatedSql = builder.getSql();
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslatorIT.java
index a5a25c8df..37a73e80d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslatorIT.java
@@ -121,9 +121,7 @@ public class UpdateBatchTranslatorIT {
List<DbAttribute> idAttributes = Collections.singletonList(entity.getAttribute("LOCKING_TEST_ID"));
List<DbAttribute> updatedAttributes = Collections.singletonList(entity.getAttribute("DESCRIPTION"));
- UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes,
- Collections.emptySet(), 1);
- JdbcAdapter adapter = (JdbcAdapter) this.adapter;
+ UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes, Collections.emptySet(), 1);
UpdateBatchTranslator builder = new UpdateBatchTranslator(updateQuery, adapter);
String generatedSql = builder.getSql();
@@ -153,9 +151,7 @@ public class UpdateBatchTranslatorIT {
Collection<String> nullAttributes = Collections.singleton("NAME");
- UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes,
- nullAttributes, 1);
- JdbcAdapter adapter = (JdbcAdapter) this.adapter;
+ UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes, nullAttributes, 1);
UpdateBatchTranslator builder = new UpdateBatchTranslator(updateQuery, adapter);
String generatedSql = builder.getSql();
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/AutoAdapterIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/AutoAdapterIT.java
index 920237f4f..5d0c012d8 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/AutoAdapterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/AutoAdapterIT.java
@@ -29,10 +29,7 @@ import org.apache.cayenne.unit.CayenneTestsEnv;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.*;
public class AutoAdapterIT {
@@ -48,16 +45,17 @@ public class AutoAdapterIT {
@Test
public void createSQLTemplateAction() {
- AutoAdapter autoAdapter = new AutoAdapter(() -> env.dataNode().getAdapter(), NoopJdbcEventLogger.getInstance());
- SQLTemplateAction action = (SQLTemplateAction) autoAdapter.getAction(new SQLTemplate(Artist.class,
- "select * from artist"), env.dataNode());
+ assertInstanceOf(AutoAdapter.class, env.dataNode().getAdapter());
+ AutoAdapter autoAdapter = (AutoAdapter) env.dataNode().getAdapter();
+
+ SQLTemplateAction action = (SQLTemplateAction) autoAdapter
+ .getAction(new SQLTemplate(Artist.class, "select * from artist"), env.dataNode());
// it is important for SQLTemplateAction to be used with unwrapped adapter,
// as the adapter class name is used as a key to the correct SQL template.
assertNotNull(action.getAdapter());
assertFalse(action.getAdapter() instanceof AutoAdapter);
- assertSame(env.dataNode().getAdapter(), action.getAdapter());
}
@Test
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 074793fa0..45210734c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java
@@ -28,8 +28,10 @@ import org.apache.cayenne.access.translator.batch.BatchTranslatorFactory;
import org.apache.cayenne.access.translator.select.SelectTranslatorFactory;
import org.apache.cayenne.configuration.Constants;
import org.apache.cayenne.configuration.DataMapLoader;
+import org.apache.cayenne.configuration.DataNodeDescriptor;
import org.apache.cayenne.configuration.DataSourceDescriptor;
import org.apache.cayenne.configuration.runtime.CoreModule;
+import org.apache.cayenne.configuration.runtime.DbAdapterFactory;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.di.AdhocObjectFactory;
import org.apache.cayenne.di.Binder;
@@ -53,6 +55,7 @@ import org.junit.jupiter.api.extension.AfterEachCallback;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
+import javax.sql.DataSource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -183,17 +186,24 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
BatchTranslatorFactory batchTranslatorFactory = runtimeInjector.getInstance(BatchTranslatorFactory.class);
SelectTranslatorFactory selectTranslatorFactory = runtimeInjector.getInstance(SelectTranslatorFactory.class);
SQLTemplateProcessor sqlTemplateProcessor = runtimeInjector.getInstance(SQLTemplateProcessor.class);
- DbAdapter adapter = runtimeInjector.getInstance(DbAdapter.class);
DataNode lastNode = null;
for (DataMap dataMap : domain.getDataMaps()) {
+
+ DataSource dataSource = DATA_SOURCES.dataSource(dataMap.getName());
+
DataNode node = new TestTelemetryDataNode(dataMap.getName());
node.setJdbcEventLogger(jdbcEventLogger);
node.setRowReaderFactory(rowReaderFactory);
node.setBatchTranslatorFactory(batchTranslatorFactory);
node.setSelectTranslatorFactory(selectTranslatorFactory);
- node.setDataSource(DATA_SOURCES.dataSource(dataMap.getName()));
+ node.setDataSource(dataSource);
+
+ // this gives us AutoAdapter
+ DbAdapter adapter = runtimeInjector.getInstance(DbAdapterFactory.class)
+ .createAdapter(new DataNodeDescriptor(), dataSource);
+
node.setAdapter(adapter);
node.setSchemaUpdateStrategy(new SkipSchemaUpdateStrategy());
node.setSqlTemplateProcessor(sqlTemplateProcessor);
@@ -278,10 +288,6 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
@Override
public void configure(Binder binder) {
- // TODO: factor it out of INJECTOR
- // a fresh DbAdapter per call — RuntimeCaseDbAdapterProvider is unscoped in the test injector
- binder.bind(DbAdapter.class).toProviderInstance(() -> INJECTOR.getInstance(DbAdapter.class));
-
binder.bind(UnitDbAdapter.class).toInstance(INJECTOR.getInstance(UnitDbAdapter.class));
binder.bind(TestDataSources.class).toInstance(DATA_SOURCES);
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/AllTestsSchemaManager.java b/cayenne/src/test/java/org/apache/cayenne/unit/runtime/AllTestsSchemaManager.java
index 12ca7dc28..367c222ce 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/AllTestsSchemaManager.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/runtime/AllTestsSchemaManager.java
@@ -37,7 +37,6 @@ import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.Procedure;
import org.apache.cayenne.resource.URLResource;
-import org.apache.cayenne.testdo.extended_type.StringET1ExtendedType;
import org.apache.cayenne.unit.TestDataSources;
import org.apache.cayenne.unit.dba.UnitDbAdapter;
import org.slf4j.Logger;
@@ -124,10 +123,7 @@ public class AllTestsSchemaManager {
node.setJdbcEventLogger(jdbcEventLogger);
node.setAdapter(dbAdapter);
node.setDataSource(dataSourceFactory.sharedDataSource());
-
- // setup test extended types
- node.getAdapter().getExtendedTypes().registerType(new StringET1ExtendedType());
-
+
// tweak mapping with a delegate
for (Procedure proc : map.getProcedures()) {
unitDbAdapter.tweakProcedure(proc);