Revision: 3372
Author: mo.jeff
Date: Thu Mar 11 09:57:30 2010
Log: Added a test for removeObject using JSON and ArchitectSession persisters
http://code.google.com/p/power-architect/source/detail?r=3372

Modified:
/trunk/regress/ca/sqlpower/architect/enterprise/ArchitectSessionPersisterTest.java

=======================================
--- /trunk/regress/ca/sqlpower/architect/enterprise/ArchitectSessionPersisterTest.java Wed Mar 10 15:32:56 2010 +++ /trunk/regress/ca/sqlpower/architect/enterprise/ArchitectSessionPersisterTest.java Thu Mar 11 09:57:30 2010
@@ -87,6 +87,38 @@
         ArchitectProject project = session.getWorkspace();
         assertEquals("newProjectName", project.getName());
     }
+
+    /**
+     * Test changing the project name through the {...@link SPJSONPersister}
+     */
+    public void testRemoveObjectWithJSONPersister() throws Exception {
+        SPJSONMessageDecoder decoder = new SPJSONMessageDecoder(persister);
+ SPJSONPersister jsonPersister = new SPJSONPersister(new DirectJsonMessageSender(decoder));
+
+        jsonPersister.begin();
+        String rootUUID = session.getRootObject().getUUID();
+ jsonPersister.persistObject(rootUUID, SQLDatabase.class.getName(), "database", 0); + jsonPersister.persistProperty("database", "dataSource", DataType.STRING, "regression_test");
+        jsonPersister.commit();
+
+        // Ensure database was added
+        SQLObjectRoot root = session.getRootObject();
+        SQLObject rootChild = root.getChild(0);
+        assertTrue(rootChild instanceof SQLDatabase);
+        assertEquals("database", rootChild.getUUID());
+
+        // Now remove it
+        int oldChildCount = root.getChildCount();
+        jsonPersister.begin();
+        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");
+            }
+        }
+    }

     /**
      * Sends JSON messages directly to the JSON decoder

Reply via email to