Revision: 3385
Author: ferguson.sebastian
Date: Thu Mar 18 07:58:15 2010
Log: Created a test for the new KettleSettings object, updated the ArchitectSessionPersisterTest to include a test for refresh root node.
http://code.google.com/p/power-architect/source/detail?r=3385

Added:
 /trunk/regress/ca/sqlpower/architect/etl/kettle/KettleSettingsTest.java
Modified:
 /trunk/regress/ca/sqlpower/architect/ArchitectProjectTest.java
/trunk/regress/ca/sqlpower/architect/enterprise/ArchitectSessionPersisterTest.java
 /trunk/src/ca/sqlpower/architect/etl/kettle/KettleSettings.java

=======================================
--- /dev/null
+++ /trunk/regress/ca/sqlpower/architect/etl/kettle/KettleSettingsTest.java Thu Mar 18 07:58:15 2010
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2010, SQL Power Group Inc.
+ *
+ * This file is part of Power*Architect.
+ *
+ * Power*Architect is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Power*Architect is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package ca.sqlpower.architect.etl.kettle;
+
+import ca.sqlpower.architect.ArchitectProject;
+import ca.sqlpower.architect.StubArchitectSession;
+import ca.sqlpower.architect.util.ArchitectNewValueMaker;
+import ca.sqlpower.object.PersistedSPObjectTest;
+import ca.sqlpower.object.SPObject;
+import ca.sqlpower.sql.DataSourceCollection;
+import ca.sqlpower.sql.SPDataSource;
+import ca.sqlpower.testutil.NewValueMaker;
+
+public class KettleSettingsTest extends PersistedSPObjectTest {
+
+    KettleSettings objectUnderTest;
+
+    public KettleSettingsTest(String name) {
+        super(name);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+ final ArchitectProject project = (ArchitectProject) new ArchitectNewValueMaker( + getRootObject(), getPLIni()).makeNewValue(ArchitectProject.class, null, "");
+        project.setSession(new StubArchitectSession() {
+            @Override
+            public ArchitectProject getWorkspace() {
+                return project;
+            }
+        });
+        objectUnderTest = project.getKettleSettings();
+        getRootObject().addChild(project, 0);
+    }
+
+    @Override
+    public void testPersisterCreatesNewObjects() throws Exception {
+ // The KettleSettings object is a final field of the ArchitectProject, and as such, cannot
+        // be created by persist calls. It must instead be updated.
+ // See "ArchitectSessionPersisterTest.testRefreshRootNodeWithJSONPersister()"
+    }
+
+    @Override
+    protected Class<? extends SPObject> getChildClassType() {
+        return KettleSettings.class;
+    }
+
+    @Override
+    public SPObject getSPObjectUnderTest() {
+        return objectUnderTest;
+    }
+
+    @Override
+ public NewValueMaker createNewValueMaker(SPObject root, DataSourceCollection<SPDataSource> dsCollection) {
+        return new ArchitectNewValueMaker(root, dsCollection);
+    }
+
+}
=======================================
--- /trunk/regress/ca/sqlpower/architect/ArchitectProjectTest.java Wed Mar 10 08:21:50 2010 +++ /trunk/regress/ca/sqlpower/architect/ArchitectProjectTest.java Thu Mar 18 07:58:15 2010
@@ -70,13 +70,15 @@
         //The ArchitectProject is the root of the SPObject tree. This
         //object cannot be made straight from persist calls but must exist
         //as part of the session to start.
+ // See "ArchitectSessionPersisterTest.testRefreshRootNodeWithJSONPersister()"
     }

     @Override
     public void testSPListenerPersistsNewObjects() throws Exception {
-      //The ArchitectProject is the root of the SPObject tree. This
+        //The ArchitectProject is the root of the SPObject tree. This
         //object cannot be made straight from persist calls but must exist
         //as part of the session to start.
+ // See "ArchitectSessionPersisterTest.testRefreshRootNodeWithJSONPersister()"
     }

 }
=======================================
--- /trunk/regress/ca/sqlpower/architect/enterprise/ArchitectSessionPersisterTest.java Fri Mar 12 12:33:37 2010 +++ /trunk/regress/ca/sqlpower/architect/enterprise/ArchitectSessionPersisterTest.java Thu Mar 18 07:58:15 2010
@@ -26,6 +26,8 @@
 import ca.sqlpower.architect.ArchitectSession;
 import ca.sqlpower.architect.ArchitectSessionImpl;
 import ca.sqlpower.architect.TestingArchitectSessionContext;
+import ca.sqlpower.architect.etl.kettle.KettleSettings;
+import ca.sqlpower.architect.olap.OLAPRootObject;
 import ca.sqlpower.dao.MessageSender;
 import ca.sqlpower.dao.SPPersistenceException;
 import ca.sqlpower.dao.SPPersister.DataType;
@@ -135,6 +137,30 @@
         assertEquals(oldChildCount, rootObject.getChildCount());
assertNull(rootObject.getChildByName("regression_test", SQLDatabase.class));
     }
+
+    /**
+ * The purpose of this test is to ensure that the root node (ArchitectProject) is + * correctly updated by persist calls: That it contains the correct SPObjectRoot,
+     * OlapObjectRoot, and KettleSettings.
+     */
+    public void testRefreshRootNodeWithJSONPersister() throws Exception {
+        SPJSONMessageDecoder decoder = new SPJSONMessageDecoder(persister);
+ SPJSONPersister jsonPersister = new SPJSONPersister(new DirectJsonMessageSender(decoder));
+
+        jsonPersister.begin();
+ jsonPersister.persistObject(null, ArchitectProject.class.getName(), "ArchitectProjectUUID", 0); + jsonPersister.persistObject("ArchitectProjectUUID", KettleSettings.class.getName(), "KettleSettingsUUID", 0); + jsonPersister.persistObject("ArchitectProjectUUID", SQLObjectRoot.class.getName(), "SQLObjectRootUUID", 0); + jsonPersister.persistObject("ArchitectProjectUUID", OLAPRootObject.class.getName(), "OLAPRootObjectUUID", 0); + jsonPersister.persistProperty("ArchitectProjectUUID", "rootObject", DataType.STRING, "SQLObjectRootUUID"); + jsonPersister.persistProperty("ArchitectProjectUUID", "olapRootObject", DataType.STRING, "OLAPRootObjectUUID"); + jsonPersister.persistProperty("ArchitectProjectUUID", "kettleSettings", DataType.STRING, "KettleSettingsUUID");
+        jsonPersister.commit();
+
+ assertEquals("KettleSettingsUUID", session.getWorkspace().getKettleSettings().getUUID()); + assertEquals("SQLObjectRootUUID", session.getWorkspace().getRootObject().getUUID()); + assertEquals("OLAPRootObjectUUID", session.getWorkspace().getOlapRootObject().getUUID());
+    }

     /**
      * Sends JSON messages directly to the JSON decoder
=======================================
--- /trunk/src/ca/sqlpower/architect/etl/kettle/KettleSettings.java Wed Mar 17 13:09:48 2010 +++ /trunk/src/ca/sqlpower/architect/etl/kettle/KettleSettings.java Thu Mar 18 07:58:15 2010
@@ -31,6 +31,8 @@

 public class KettleSettings extends AbstractSPObject {

+ public static final List <Class<? extends SPObject>> allowedChildTypes = Collections.emptyList();
+
     /**
      * The name of the Kettle job
      */

Reply via email to