Package com.ocpsoft.pretty.faces.util

Source Code of com.ocpsoft.pretty.faces.util.FacesMessagesUtilsTest$FacesContextMock

package com.ocpsoft.pretty.faces.util;

import static org.junit.Assert.*;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.faces.application.Application;
import javax.faces.application.FacesMessage;
import javax.faces.application.FacesMessage.Severity;
import javax.faces.component.UIViewRoot;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseStream;
import javax.faces.context.ResponseWriter;
import javax.faces.render.RenderKit;

import org.junit.Test;

public class FacesMessagesUtilsTest
{

   @Test
   public void testSaveMessages()
   {

      // set up FacesContext
      FacesContextMock facesContext = new FacesContextMock();
      facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Summary A", "Detail A"));
      facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Summary B", "Detail B"));
      facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Summary B", "Detail B"));
      facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Summary B", "Detail B"));

      // call saveMessages()
      Map<String, Object> sessionMap = new HashMap<String, Object>();
      int saved = new FacesMessagesUtils().saveMessages(facesContext, sessionMap);

      // messages stored in session
      assertEquals(3, saved);
      assertNotNull(sessionMap.get(FacesMessagesUtils.token));
      assertEquals(3, ((Collection<?>) sessionMap.get(FacesMessagesUtils.token)).size());
   }

   @Test
   public void testDuplicatedMessages()
   {

      /*
       * Step 1: Save
       */

      // class under test
      FacesMessagesUtils utils = new FacesMessagesUtils();

      // set up FacesContext
      FacesContextMock facesContext = new FacesContextMock();
      facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Summary A", "Detail A"));
      facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Summary B", "Detail B"));
      facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Summary C", "Detail C"));

      // call saveMessages()
      Map<String, Object> sessionMap = new HashMap<String, Object>();
      int saved = utils.saveMessages(facesContext, sessionMap);

      // check message are saved
      assertEquals(3, saved);
      assertNotNull(sessionMap.get(FacesMessagesUtils.token));
      assertEquals(3, ((Collection<?>) sessionMap.get(FacesMessagesUtils.token)).size());

      /*
       * Step 2: Restore
       */

      // Setup new FacesContext with two messages
      facesContext.clearAllMesages();
      facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Summary B", "Detail B"));
      facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Summary B", "Detail B"));

      // restore messages
      int restored = utils.restoreMessages(facesContext, sessionMap);

      // check that two of the three messages have been restored
      assertEquals(2, restored);
      assertEquals(4, facesContext.getAllMessages().size());

   }

   /**
    * Simple mock of {@link FacesContext} that just handles the message queue.
    *
    */
   private static class FacesContextMock extends FacesContext
   {

      private List<FacesMessage> messages = new ArrayList<FacesMessage>();

      public List<FacesMessage> getAllMessages()
      {
         return messages;
      }

      public void clearAllMesages()
      {
         messages.clear();
      }

      @Override
      public void addMessage(String arg0, FacesMessage arg1)
      {
         messages.add(arg1);
      }

      @Override
      public Application getApplication()
      {
         return null;
      }

      @Override
      public Iterator<String> getClientIdsWithMessages()
      {
         return null;
      }

      @Override
      public ExternalContext getExternalContext()
      {
         return null;
      }

      @Override
      public Severity getMaximumSeverity()
      {
         return null;
      }

      @Override
      public Iterator<FacesMessage> getMessages()
      {
         return messages.iterator();
      }

      @Override
      public Iterator<FacesMessage> getMessages(String arg0)
      {
         return messages.iterator();
      }

      @Override
      public RenderKit getRenderKit()
      {
         return null;
      }

      @Override
      public boolean getRenderResponse()
      {
         return false;
      }

      @Override
      public boolean getResponseComplete()
      {
         return false;
      }

      @Override
      public ResponseStream getResponseStream()
      {
         return null;
      }

      @Override
      public ResponseWriter getResponseWriter()
      {
         return null;
      }

      @Override
      public UIViewRoot getViewRoot()
      {
         return null;
      }

      @Override
      public void release()
      {

      }

      @Override
      public void renderResponse()
      {

      }

      @Override
      public void responseComplete()
      {

      }

      @Override
      public void setResponseStream(ResponseStream arg0)
      {

      }

      @Override
      public void setResponseWriter(ResponseWriter arg0)
      {

      }

      @Override
      public void setViewRoot(UIViewRoot arg0)
      {

      }

   }

}
TOP

Related Classes of com.ocpsoft.pretty.faces.util.FacesMessagesUtilsTest$FacesContextMock

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.