Package org.jboss.seam.test.unit

Source Code of org.jboss.seam.test.unit.PageConversationControlTest

package org.jboss.seam.test.unit;

import javax.faces.context.FacesContext;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.contexts.FacesLifecycle;
import org.jboss.seam.core.Conversation;
import org.jboss.seam.core.ConversationEntries;
import org.jboss.seam.core.Events;
import org.jboss.seam.core.Manager;
import org.jboss.seam.faces.FacesMessages;
import org.jboss.seam.navigation.Pages;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

/**
* Tests that validate the ConversationControl component as initialized for a Page instance.
*
* @author Jacob Orshalick
*/
public class PageConversationControlTest extends AbstractPageTest
{
   /**
    * Override the base setup to add the required conversation components included in testing.
    */
   @BeforeMethod
   @Override
   public void setup()
   {
      super.setup();
     
      installComponent(Contexts.getApplicationContext(), ConversationEntries.class);
      installComponent(Contexts.getApplicationContext(), Conversation.class);
      installComponent(Contexts.getApplicationContext(), FacesMessages.class);
      installComponent(Contexts.getApplicationContext(), Manager.class);
      installComponent(Contexts.getApplicationContext(), Events.class);
     
      Manager.instance().initializeTemporaryConversation();
      FacesLifecycle.resumeConversation(FacesContext.getCurrentInstance().getExternalContext());
   }

   /**
    * Tests that when a nested conversation encounters an end-conversation tag the nested conversation is
    * demoted to temporary.
    */
   @Test
   public void testBeginNestedAndEndConversation() {
      Manager.instance().beginConversation();
      Manager.instance().beginNestedConversation();
     
      assert Manager.instance().isLongRunningConversation();
      assert Manager.instance().isNestedConversation();
     
      FacesContext facesContext = FacesContext.getCurrentInstance();

      facesContext.getViewRoot().setViewId("/end-conversation-test.xhtml");
      Pages.instance().preRender(facesContext);
     
      // nested conversation should be demoted to temporary
      assert !Manager.instance().isLongRunningConversation();
      assert Manager.instance().isNestedConversation();
   }
  
   /**
    * Tests that when a non-nested conversation encounters an end-conversation tag specifying that the root
    * should be ended the current conversation is simply demoted to temporary.
    */
   @Test
   public void testBeginAndEndRootConversation() {
      Manager.instance().beginConversation();
     
      assert Manager.instance().isLongRunningConversation();
     
      FacesContext facesContext = FacesContext.getCurrentInstance();

      facesContext.getViewRoot().setViewId("/end-root-conversation-test.xhtml");
      Pages.instance().preRender(facesContext);
     
      assert !Manager.instance().isLongRunningConversation();
   }
  
   /**
    * Tests that when a nested conversation encounters an end-conversation tag specifying that the root
    * should be ended the root is ended thereby destroying the conversation stack.
    */
   @Test
   public void testBeginNestedAndEndRootConversation() {
      Manager.instance().beginConversation();
      String rootConversationId = Manager.instance().getCurrentConversationId();
     
      Manager.instance().beginNestedConversation();

      assert !Manager.instance().getCurrentConversationId().equals(rootConversationId);
      assert Manager.instance().isLongRunningConversation();
      assert Manager.instance().isNestedConversation();
     
      FacesContext facesContext = FacesContext.getCurrentInstance();

      facesContext.getViewRoot().setViewId("/end-root-conversation-test.xhtml");
      Pages.instance().preRender(facesContext);

      assert Manager.instance().getCurrentConversationId().equals(rootConversationId);
      assert !Manager.instance().isLongRunningConversation();
      assert !Manager.instance().isNestedConversation();
   }
}
TOP

Related Classes of org.jboss.seam.test.unit.PageConversationControlTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.