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));
     }

     /**

Reply via email to