Revision: 3375
Author: mo.jeff
Date: Fri Mar 12 12:33:37 2010
Log: Changed ArchitectSessionContextImpl to a
TestingArchitectSessionContext, as the former calls
ArchitectUtils.checkForValidPlDotIni, which itself opens up a JOptionPane
dialog that needs to be responded to before tests can move on. This is bad
for running test in a headless environment. Also added a test to ensure no
changes after a rollback.
http://code.google.com/p/power-architect/source/detail?r=3375
Modified:
/trunk/regress/ca/sqlpower/architect/enterprise/ArchitectSessionPersisterTest.java
=======================================
---
/trunk/regress/ca/sqlpower/architect/enterprise/ArchitectSessionPersisterTest.java
Thu Mar 11 09:57:30 2010
+++
/trunk/regress/ca/sqlpower/architect/enterprise/ArchitectSessionPersisterTest.java
Fri Mar 12 12:33:37 2010
@@ -24,8 +24,8 @@
import ca.sqlpower.architect.ArchitectProject;
import ca.sqlpower.architect.ArchitectSession;
-import ca.sqlpower.architect.ArchitectSessionContextImpl;
import ca.sqlpower.architect.ArchitectSessionImpl;
+import ca.sqlpower.architect.TestingArchitectSessionContext;
import ca.sqlpower.dao.MessageSender;
import ca.sqlpower.dao.SPPersistenceException;
import ca.sqlpower.dao.SPPersister.DataType;
@@ -47,7 +47,7 @@
protected void setUp() throws Exception {
super.setUp();
- session = new ArchitectSessionImpl(new
ArchitectSessionContextImpl(), "test");
+ session = new ArchitectSessionImpl(new
TestingArchitectSessionContext(), "test");
SessionPersisterSuperConverter converter = new
ArchitectPersisterSuperConverter(getPLIni(), session.getWorkspace());
persister = new ArchitectSessionPersister("test",
session.getWorkspace(), converter);
persister.setSession(session);
@@ -89,7 +89,7 @@
}
/**
- * Test changing the project name through the {...@link SPJSONPersister}
+ * Test adding and then removing the database through the {...@link
SPJSONPersister}
*/
public void testRemoveObjectWithJSONPersister() throws Exception {
SPJSONMessageDecoder decoder = new SPJSONMessageDecoder(persister);
@@ -113,11 +113,27 @@
jsonPersister.removeObject(rootUUID, "database");
jsonPersister.commit();
assertEquals(oldChildCount - 1, root.getChildCount());
- for (SQLObject child: root.getChildren()) {
- if ("database".equals(child.getUUID())) {
- fail("Child of root with UUID 'database' still exists.
Expected to have been removed");
- }
- }
+ assertNull(root.getChildByName("regression_test",
SQLDatabase.class));
+ }
+
+ /**
+ * Tests adding a SQLDatabase to an ArchitectSession through an
+ * {...@link SPJSONPersister} hooked up to n {...@link
ArchitectSessionPersister}
+ */
+ public void testRollbackWithJSONPersister() throws Exception {
+ SPJSONMessageDecoder decoder = new SPJSONMessageDecoder(persister);
+ SPJSONPersister jsonPersister = new SPJSONPersister(new
DirectJsonMessageSender(decoder));
+
+ int oldChildCount = session.getRootObject().getChildCount();
+
+ jsonPersister.begin();
+ jsonPersister.persistObject(session.getRootObject().getUUID(),
SQLDatabase.class.getName(), "database", 0);
+ jsonPersister.persistProperty("database", "dataSource",
DataType.STRING, "regression_test");
+ jsonPersister.rollback();
+
+ SQLObjectRoot rootObject = session.getRootObject();
+ assertEquals(oldChildCount, rootObject.getChildCount());
+ assertNull(rootObject.getChildByName("regression_test",
SQLDatabase.class));
}
/**