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
*/