diff options
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.java | 89 |
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 |
