summaryrefslogtreecommitdiff
path: root/projects/net.wotonomy.persistence.adapter.jdbc/src/test/java/net/wotonomy/jdbcadaptor/JDBCDBTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'projects/net.wotonomy.persistence.adapter.jdbc/src/test/java/net/wotonomy/jdbcadaptor/JDBCDBTest.java')
-rw-r--r--projects/net.wotonomy.persistence.adapter.jdbc/src/test/java/net/wotonomy/jdbcadaptor/JDBCDBTest.java89
1 files changed, 89 insertions, 0 deletions
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<String, String> jdbcInfo = new NSDictionary<>();
+
+ NSDictionary<String, Object> 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<Person> 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<String, String> jdbcInfo = new NSDictionary<>();
+
+ NSDictionary<String, Object> 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<Person> 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