From 02bc52037e9ccccca672d6156d9c325c74fe28b3 Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Mon, 1 Jul 2024 17:27:48 -0400 Subject: Update a whole bunch of things Yeah... not a great commit message. t.b.h, I could maybe've split the commit into more parts; but that would be quite a lot off effort and would have a pretty decent chance of at least one of the commits leaving the repository in a non-working state. For the future, will want to try and commit more often so there aren't these mega-commits where it's just "a whole bunch of stuff changed" --- .../java/net/wotonomy/jdbcadaptor/JDBCDBTest.java | 89 ++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 projects/net.wotonomy.persistence.adapter.jdbc/src/test/java/net/wotonomy/jdbcadaptor/JDBCDBTest.java (limited to 'projects/net.wotonomy.persistence.adapter.jdbc/src/test/java/net/wotonomy/jdbcadaptor/JDBCDBTest.java') diff --git a/projects/net.wotonomy.persistence.adapter.jdbc/src/test/java/net/wotonomy/jdbcadaptor/JDBCDBTest.java b/projects/net.wotonomy.persistence.adapter.jdbc/src/test/java/net/wotonomy/jdbcadaptor/JDBCDBTest.java new file mode 100644 index 0000000..5af3bff --- /dev/null +++ b/projects/net.wotonomy.persistence.adapter.jdbc/src/test/java/net/wotonomy/jdbcadaptor/JDBCDBTest.java @@ -0,0 +1,89 @@ +package net.wotonomy.jdbcadaptor; + +import java.sql.SQLException; + +import junit.framework.TestCase; +import net.wotonomy.access.EODatabase; +import net.wotonomy.access.EODatabaseContext; +import net.wotonomy.control.EOClassDescription; +import net.wotonomy.control.EOEditingContext; +import net.wotonomy.control.EOTemporaryGlobalID; +import net.wotonomy.foundation.NSDictionary; + +public class JDBCDBTest extends TestCase { + public void testJDBCContextH2() throws SQLException, ClassNotFoundException { + String jdbcURL = "jdbc:h2:mem:test"; + + // Feels a bit weird not to put anything here, but I don't think we need to + NSDictionary jdbcInfo = new NSDictionary<>(); + + NSDictionary connDict = new NSDictionary<>(); + connDict.put("driver", "org.h2.Driver"); + connDict.put("jdbc2Info", jdbcInfo); + connDict.put("URL", jdbcURL); + JDBCAdaptor adaptor = new JDBCAdaptor("JDBC"); + adaptor.setConnectionDictionary(connDict); + adaptor.assertConnectionDictionaryIsValid(); + + EODatabase db = new EODatabase(adaptor); + EODatabaseContext dbCtx = new EODatabaseContext(db); + ((JDBCContext)dbCtx.adaptorContext()).connect(); + + EOEditingContext editCtx = new EOEditingContext(dbCtx); + + EOClassDescription personDesc = EOClassDescription.classDescriptionForClass(Person.class); + EOTemporaryGlobalID tempGID = new EOTemporaryGlobalID(); + Person person = personDesc.createInstanceWithEditingContext(editCtx, tempGID); + + person.setFirstName("John"); + person.setLastName("Doe"); + person.setAge(25); + + editCtx.saveChanges(); + + Person newPerson = (Person) editCtx.objectForGlobalID(tempGID); + assertEquals(person, newPerson); + } + + public void testJDBCContextPostgres() throws SQLException, ClassNotFoundException { + String jdbcURL = "jdbc:postgresql:wotonomy"; + + // Feels a bit weird not to put anything here, but I don't think we need to + NSDictionary jdbcInfo = new NSDictionary<>(); + + NSDictionary connDict = new NSDictionary<>(); + connDict.put("driver", "org.postgresql.Driver"); + connDict.put("jdbc2Info", jdbcInfo); + connDict.put("URL", jdbcURL); + connDict.put("username", "wotonomy"); + connDict.put("password", "wotonomy"); + + JDBCAdaptor adaptor = new JDBCAdaptor("JDBC"); + adaptor.setConnectionDictionary(connDict); + adaptor.assertConnectionDictionaryIsValid(); + + EODatabase db = new EODatabase(adaptor); + EODatabaseContext dbCtx = new EODatabaseContext(db); + ((JDBCContext)dbCtx.adaptorContext()).connect(); + + EOEditingContext editCtx = new EOEditingContext(dbCtx); + + EOClassDescription personDesc = EOClassDescription.classDescriptionForClass(Person.class); + + EOTemporaryGlobalID tempGID = new EOTemporaryGlobalID(); + Person person = personDesc.createInstanceWithEditingContext(editCtx, tempGID); + + person.setFirstName("John"); + person.setLastName("Doe"); + person.setAge(25); + + editCtx.saveChanges(); + editCtx.invalidateAllObjects(); + + ((JDBCContext)dbCtx.adaptorContext()).commitTransaction(); + //editCtx.reset(); + + Person newPerson = (Person) editCtx.objectForGlobalID(tempGID); + assertEquals(person, newPerson); + } +} \ No newline at end of file -- cgit v1.2.3