You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2006/07/12 12:32:19 UTC
svn commit: r421227 -
/lenya/trunk/src/impl/test/org/apache/lenya/cms/workflow/WorkflowTest.java
Author: andreas
Date: Wed Jul 12 03:32:19 2006
New Revision: 421227
URL: http://svn.apache.org/viewvc?rev=421227&view=rev
Log:
Allow WorkflowTest to be applied to different initial states
Modified:
lenya/trunk/src/impl/test/org/apache/lenya/cms/workflow/WorkflowTest.java
Modified: lenya/trunk/src/impl/test/org/apache/lenya/cms/workflow/WorkflowTest.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/impl/test/org/apache/lenya/cms/workflow/WorkflowTest.java?rev=421227&r1=421226&r2=421227&view=diff
==============================================================================
--- lenya/trunk/src/impl/test/org/apache/lenya/cms/workflow/WorkflowTest.java (original)
+++ lenya/trunk/src/impl/test/org/apache/lenya/cms/workflow/WorkflowTest.java Wed Jul 12 03:32:19 2006
@@ -19,6 +19,7 @@
package org.apache.lenya.cms.workflow;
+import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.ac.Identity;
import org.apache.lenya.ac.User;
import org.apache.lenya.ac.impl.AccessControlTest;
@@ -26,8 +27,10 @@
import org.apache.lenya.cms.publication.DocumentFactory;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.PublicationUtil;
+import org.apache.lenya.cms.repository.RepositoryException;
import org.apache.lenya.cms.repository.RepositoryUtil;
import org.apache.lenya.cms.repository.Session;
+import org.apache.lenya.workflow.WorkflowException;
import org.apache.lenya.workflow.Workflowable;
/**
@@ -55,52 +58,76 @@
document.getRepositoryNode().lock();
- for (int situationIndex = 0; situationIndex < situations.length; situationIndex++) {
+ Session session = getSession(submitSituation);
+ Workflowable workflowable = WorkflowUtil.getWorkflowable(getManager(),
+ session,
+ getLogger(),
+ document);
+ if (workflowable.getVersions().length > 0) {
+ if (workflowable.getLatestVersion().getState().equals("review")) {
+ invoke(document, rejectSituation);
+ } else if (workflowable.getLatestVersion().getState().equals("live")) {
+ invoke(document, deactivateSituation);
+ }
+ }
- login(situations[situationIndex].getUser());
+ for (int situationIndex = 0; situationIndex < situations.length; situationIndex++) {
+ TestSituation situation = situations[situationIndex];
+ invoke(document, situation);
+ }
- Identity identity = (Identity) getRequest().getSession()
- .getAttribute(Identity.class.getName());
- User user = identity.getUser();
- getLogger().info("User: [" + user + "]");
-
- Session session = RepositoryUtil.createSession(getManager(), identity);
- Workflowable instance = new DocumentWorkflowable(getManager(),
- session,
- document,
- getLogger());
- assertNotNull(instance);
+ document.getRepositoryNode().unlock();
- if (situationIndex > 0) {
- getLogger().info("Current state: " + instance.getLatestVersion().getState());
- }
+ getLogger().info("Test completed.");
+ }
- String event = situations[situationIndex].getEvent();
+ protected void invoke(Document document, TestSituation situation)
+ throws AccessControlException, RepositoryException, WorkflowException {
+ Session session = getSession(situation);
+ Workflowable instance = new DocumentWorkflowable(getManager(),
+ session,
+ document,
+ getLogger());
+ assertNotNull(instance);
- getLogger().info("Event: " + event);
+ String event = situation.getEvent();
- WorkflowUtil.invoke(getManager(), session, getLogger(), document, event);
+ getLogger().info("Event: " + event);
- boolean value = instance.getLatestVersion().getValue(variableName);
+ WorkflowUtil.invoke(getManager(), session, getLogger(), document, event);
- getLogger().info("Variable: " + variableName + " = " + value);
- getLogger().info("------------------------------------------------------");
+ boolean value = instance.getLatestVersion().getValue(variableName);
- assertEquals(value, situations[situationIndex].getValue());
+ getLogger().info("Variable: " + variableName + " = " + value);
+ getLogger().info("------------------------------------------------------");
- }
+ assertEquals(value, situation.getValue());
+ }
- document.getRepositoryNode().unlock();
+ protected Session getSession(TestSituation situation) throws AccessControlException,
+ RepositoryException {
+ login(situation.getUser());
+
+ Identity identity = (Identity) getRequest().getSession()
+ .getAttribute(Identity.class.getName());
+ User user = identity.getUser();
+ getLogger().info("User: [" + user + "]");
- getLogger().info("Test completed.");
+ Session session = RepositoryUtil.createSession(getManager(), identity);
+ return session;
}
- private static final TestSituation[] situations = {
- new TestSituation("lenya", "submit", false),
- new TestSituation("alice", "reject", false),
- new TestSituation("lenya", "submit", false),
- new TestSituation("alice", "publish", true),
- new TestSituation("alice", "deactivate", false) };
+ private static final TestSituation submitSituation = new TestSituation("lenya", "submit", false);
+ private static final TestSituation rejectSituation = new TestSituation("alice", "reject", false);
+ private static final TestSituation deactivateSituation = new TestSituation("alice",
+ "deactivate",
+ false);
+ private static final TestSituation publishSituation = new TestSituation("alice",
+ "publish",
+ true);
+
+ private static final TestSituation[] situations = { submitSituation, rejectSituation,
+ submitSituation, publishSituation, deactivateSituation };
/**
* A test situation.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org