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