Package org.jboss.seam.test.integration

Source Code of org.jboss.seam.test.integration.ConversationTest

package org.jboss.seam.test.integration;

import java.util.ArrayList;
import java.util.List;

import javax.faces.model.SelectItem;

import org.jboss.seam.core.ConversationEntry;
import org.jboss.seam.core.Manager;
import org.jboss.seam.faces.Switcher;
import org.jboss.seam.mock.SeamTest;
import org.testng.annotations.Test;

public class ConversationTest
    extends SeamTest
{
   
    @Test
    public void conversationStack()
        throws Exception
    {
        // no conversation, no stack
        new FacesRequest("/pageWithDescription.xhtml") {
            @Override
            protected void renderResponse() throws Exception {
                List<ConversationEntry> entries = (List<ConversationEntry>) getValue("#{conversationStack}");
                assert entries.size() == 0;                           
            }
        }.run();
       
       // no conversation, no stack
       new FacesRequest("/pageWithoutDescription.xhtml") {
           @Override
           protected void invokeApplication() throws Exception {
              Manager.instance().beginConversation();
           }
          
           @Override
           protected void renderResponse() throws Exception {
               List<ConversationEntry> entries = (List<ConversationEntry>) getValue("#{conversationStack}");
               assert entries.size() == 0;                           
           }
       }.run();
      
       // new conversation, stack = 1
       String rootId = new FacesRequest("/pageWithDescription.xhtml") {
           @Override
           protected void invokeApplication() throws Exception {
              Manager.instance().beginConversation();
           }
          
           @Override
           protected void renderResponse() throws Exception {
               List<ConversationEntry> entries = (List<ConversationEntry>) getValue("#{conversationStack}");
               assert entries.size() == 1;                           
           }
       }.run();

       // nested conversation, stack =2
       String nested1 = new FacesRequest("/pageWithDescription.xhtml", rootId) {
           @Override
           protected void invokeApplication() throws Exception {
              Manager.instance().beginNestedConversation();
           }
          
           @Override
           protected void renderResponse() throws Exception {
               List<ConversationEntry> entries = (List<ConversationEntry>) getValue("#{conversationStack}");
               assert entries.size() == 2;                        
           }
                   
       }.run();
  
       // nested conversation without description, not added to stack
       String nested2 = new FacesRequest("/pageWithoutDescription.xhtml", nested1) {      
           @Override
           protected void invokeApplication() throws Exception {
              Manager.instance().beginNestedConversation();
           }
          
           @Override
           protected void renderResponse() throws Exception {
               List<ConversationEntry> entries = (List<ConversationEntry>) getValue("#{conversationStack}");              
               assert entries.size() == 2
           }
       }.run();
      
       // access a page, now it's on the stack
       new FacesRequest("/pageWithDescription.xhtml", nested2) {
           @Override
           protected void renderResponse() throws Exception {
               List<ConversationEntry> entries = (List<ConversationEntry>) getValue("#{conversationStack}");              
               assert entries.size() == 3
           }
       }.run();
      
       // end conversation, stack goes down
       new FacesRequest("/pageWithDescription.xhtml", nested2) {      
           @Override
           protected void invokeApplication() throws Exception {
              Manager.instance().endConversation(false);
           }
          
           @Override
           protected void renderResponse() throws Exception {
               List<ConversationEntry> entries = (List<ConversationEntry>) getValue("#{conversationStack}");              
               assert entries.size() == 2
           }
       }.run();
      
       // end another one, size is 1
       new FacesRequest("/pageWithDescription.xhtml", nested1) {      
           @Override
           protected void invokeApplication() throws Exception {
              Manager.instance().endConversation(false);
           }
          
           @Override
           protected void renderResponse() throws Exception {
               List<ConversationEntry> entries = (List<ConversationEntry>) getValue("#{conversationStack}");              
               assert entries.size() == 1
           }
       }.run();
    }
  
    @Test
    public void conversationList()
        throws Exception
    {       
        new FacesRequest("/pageWithDescription.xhtml") {
            @Override
            protected void renderResponse() throws Exception {
                List<ConversationEntry> entries = (List<ConversationEntry>) getValue("#{conversationList}");              
                assert entries.size() == 0
            }
        }.run();
       
        new FacesRequest("/pageWithoutDescription.xhtml") {
            @Override
            protected void invokeApplication() throws Exception {
               Manager.instance().beginConversation();
            }
           
            @Override
            protected void renderResponse() throws Exception {
                List<ConversationEntry> entries = (List<ConversationEntry>) getValue("#{conversationList}");              
                assert entries.size() == 0
            }
        }.run();
       
        String conv1 = new FacesRequest("/pageWithDescription.xhtml") {
            @Override
            protected void invokeApplication() throws Exception {
               Manager.instance().beginConversation();
            }
           
            @Override
            protected void renderResponse() throws Exception {
                List<ConversationEntry> entries = (List<ConversationEntry>) getValue("#{conversationList}");              
                assert entries.size() == 1
            }
        }.run();
       
        String conv2 = new FacesRequest("/pageWithDescription.xhtml") {
            @Override
            protected void invokeApplication() throws Exception {
               Manager.instance().beginConversation();
            }
           
            @Override
            protected void renderResponse() throws Exception {
                List<ConversationEntry> entries = (List<ConversationEntry>) getValue("#{conversationList}");              
                assert entries.size() == 2
            }
        }.run();
       
        String conv3 = new FacesRequest("/pageWithDescription.xhtml") {
            @Override
            protected void invokeApplication() throws Exception {
               Manager.instance().beginConversation();
            }
           
            @Override
            protected void renderResponse() throws Exception {
                List<ConversationEntry> entries = (List<ConversationEntry>) getValue("#{conversationList}");              
                assert entries.size() == 3
            }
        }.run();
       
       
        new FacesRequest("/pageWithDescription", conv2) {
            @Override
            protected void invokeApplication() throws Exception {
                Manager.instance().endConversation(true);
            }
           
            @Override
            protected void renderResponse() throws Exception {
                List<ConversationEntry> entries = (List<ConversationEntry>) getValue("#{conversationList}");              
                assert entries.size() == 2
            }
        }.run();
       
        new FacesRequest("/pageWithDescription", conv1) {
            @Override
            protected void invokeApplication() throws Exception {
                Manager.instance().endConversation(true);
            }
           
            @Override
            protected void renderResponse() throws Exception {
                List<ConversationEntry> entries = (List<ConversationEntry>) getValue("#{conversationList}");              
                assert entries.size() == 1
            }
        }.run();
       
       
        new FacesRequest("/pageWithDescription", conv3) {
            @Override
            protected void invokeApplication() throws Exception {
                Manager.instance().endConversation(true);
            }
           
            @Override
            protected void renderResponse() throws Exception {
                List<ConversationEntry> entries = (List<ConversationEntry>) getValue("#{conversationList}");              
                assert entries.size() == 0
            }
        }.run();
    }

   
    @Test
    public void switcher()
        throws Exception
    {
        new FacesRequest("/pageWithDescription.xhtml") {
            @Override
            protected void renderResponse() throws Exception {
                Switcher switcher = (Switcher) getValue("#{switcher}");
                assert switcher.getSelectItems().size() == 0;
                assert switcher.getConversationIdOrOutcome() == null;
            }
        }.run();
       
       
        final String conv1 = new FacesRequest("/pageWithDescription.xhtml") {
            @Override
            protected void invokeApplication() throws Exception {
                Manager.instance().beginConversation();
            }
           
            @Override
            protected void renderResponse() throws Exception {
                Switcher switcher = (Switcher) getValue("#{switcher}");
                assert switcher.getSelectItems().size() == 1;
            }
        }.run();
       
        final String conv2 = new FacesRequest("/pageWithDescription.xhtml") {
            @Override
            protected void invokeApplication() throws Exception {
                Manager.instance().beginConversation();
            }
           
            @Override
            protected void renderResponse() throws Exception {
                Switcher switcher = (Switcher) getValue("#{switcher}");
                assert switcher.getSelectItems().size() == 2;
            }
        }.run();
       
        final String conv3 = new FacesRequest("/pageWithDescription.xhtml") {
            @Override
            protected void invokeApplication() throws Exception {
                Manager.instance().beginConversation();
            }
           
            @Override
            protected void renderResponse() throws Exception {
                Switcher switcher = (Switcher) getValue("#{switcher}");
                assert switcher.getSelectItems().size() == 3;
            }
        }.run();
   
        new FacesRequest() {
            @Override
            protected void renderResponse() throws Exception {
                Switcher switcher = (Switcher) getValue("#{switcher}");
                assert switcher.getSelectItems().size() == 3;
               
                List<SelectItem> items = switcher.getSelectItems();
                List<String> values = new ArrayList<String>();
                for (SelectItem item: items) {
                    assert item.getLabel().equals("page description");
                    values.add((String) item.getValue());
                }
               
                assert values.contains(conv1);
                assert values.contains(conv2);
                assert values.contains(conv3);
            }
        }.run();
       
        new FacesRequest("/pageWithDescription.xhtml", conv1) {
            @Override
            protected void invokeApplication() throws Exception {
                Manager.instance().endConversation(true);
            }
        }.run();
       
        new FacesRequest("/pageWithDescription.xhtml", conv2) {
            @Override
            protected void invokeApplication() throws Exception {
                Manager.instance().endConversation(true);
            }
           
            @Override
            protected void renderResponse() throws Exception {
                Switcher switcher = (Switcher) getValue("#{switcher}");
                assert switcher.getSelectItems().size() == 1;
                assert switcher.getSelectItems().get(0).getLabel().equals("page description");
                assert switcher.getSelectItems().get(0).getValue().equals(conv3);
            }
        }.run();
       
        new FacesRequest("/pageWithAnotherDescription.xhtml", conv3) {
            @Override
            protected void renderResponse() throws Exception {
                Switcher switcher = (Switcher) getValue("#{switcher}");
                assert switcher.getSelectItems().size() == 1;
               
                assert switcher.getSelectItems().get(0).getLabel().equals("another page description");
                assert switcher.getSelectItems().get(0).getValue().equals(conv3);
            }
        }.run();
    }

}
TOP

Related Classes of org.jboss.seam.test.integration.ConversationTest

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.