001    package org.apache.myfaces.tobago.component;
002    
003    /*
004     * Licensed to the Apache Software Foundation (ASF) under one or more
005     * contributor license agreements.  See the NOTICE file distributed with
006     * this work for additional information regarding copyright ownership.
007     * The ASF licenses this file to You under the Apache License, Version 2.0
008     * (the "License"); you may not use this file except in compliance with
009     * the License.  You may obtain a copy of the License at
010     *
011     *      http://www.apache.org/licenses/LICENSE-2.0
012     *
013     * Unless required by applicable law or agreed to in writing, software
014     * distributed under the License is distributed on an "AS IS" BASIS,
015     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016     * See the License for the specific language governing permissions and
017     * limitations under the License.
018     */
019    
020    import org.apache.myfaces.tobago.internal.mock.faces.AbstractTobagoTestBase;
021    import org.junit.Assert;
022    import org.junit.Before;
023    import org.junit.Test;
024    
025    import javax.faces.application.FacesMessage;
026    import javax.faces.context.FacesContext;
027    import java.util.List;
028    
029    public class UIMessagesUnitTest extends AbstractTobagoTestBase {
030    
031      @Before
032      public void setUp() throws Exception {
033        super.setUp();
034        FacesContext facesContext = getFacesContext();
035        facesContext.addMessage("id0", new FacesMessage(FacesMessage.SEVERITY_INFO, "test", "a test"));
036        facesContext.addMessage("id0", new FacesMessage(FacesMessage.SEVERITY_WARN, "test", "a test"));
037        facesContext.addMessage("id1", new FacesMessage(FacesMessage.SEVERITY_ERROR, "test", "a test"));
038        facesContext.addMessage("id1", new FacesMessage(FacesMessage.SEVERITY_FATAL, "test", "a test"));
039        facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "test", "a test"));
040      }
041    
042      @Test
043      public void testCreateMessageListAll() {
044    
045        UIMessages component = new UIMessages();
046        List<UIMessages.Item> messages = component.createMessageList(getFacesContext());
047    
048        Assert.assertEquals(5, messages.size());
049      }
050    
051      @Test
052      public void testCreateMessageListGlobalOnly() {
053    
054        UIMessages component = new UIMessages();
055        component.setGlobalOnly(true);
056        List<UIMessages.Item> messages = component.createMessageList(getFacesContext());
057    
058        Assert.assertEquals(1, messages.size());
059      }
060    
061      @Test
062      public void testCreateMessageListForId0() {
063    
064        UIMessages component = new UIMessages();
065        component.setFor("id0");
066        List<UIMessages.Item> messages = component.createMessageList(getFacesContext());
067    
068        Assert.assertEquals(2, messages.size());
069      }
070    
071      @Test
072      public void testCreateMessageListInfoToWarn() {
073    
074        UIMessages component = new UIMessages();
075        component.setMaxSeverity(FacesMessage.SEVERITY_WARN);
076        List<UIMessages.Item> messages = component.createMessageList(getFacesContext());
077    
078        Assert.assertEquals(2, messages.size());
079      }
080    
081      @Test
082      public void testCreateMessageListWarnToError() {
083    
084        UIMessages component = new UIMessages();
085        component.setMinSeverity(FacesMessage.SEVERITY_WARN);
086        component.setMaxSeverity(FacesMessage.SEVERITY_ERROR);
087        List<UIMessages.Item> messages = component.createMessageList(getFacesContext());
088    
089        Assert.assertEquals(2, messages.size());
090      }
091    
092      @Test
093      public void testCreateMessageListErrorToFatal() {
094    
095        UIMessages component = new UIMessages();
096        component.setMinSeverity(FacesMessage.SEVERITY_ERROR);
097        List<UIMessages.Item> messages = component.createMessageList(getFacesContext());
098    
099        Assert.assertEquals(3, messages.size());
100      }
101    
102      @Test
103      public void testCreateMessageListMaxNumber() {
104    
105        UIMessages component = new UIMessages();
106    
107        component.setMaxNumber(3);
108        List<UIMessages.Item> messages = component.createMessageList(getFacesContext());
109        Assert.assertEquals(3, messages.size());
110    
111        component.setMaxNumber(30000);
112        messages = component.createMessageList(getFacesContext());
113        Assert.assertEquals(5, messages.size());
114      }
115    
116      @Test
117      public void testCreateMessageListOrderBySeverity() {
118    
119        UIMessages component = new UIMessages();
120        component.setOrderBy(UIMessages.OrderBy.SEVERITY);
121        List<UIMessages.Item> messages = component.createMessageList(getFacesContext());
122    
123        int mustShrink = FacesMessage.SEVERITY_FATAL.getOrdinal();
124        for (UIMessages.Item message : messages) {
125          int newValue = message.getFacesMessage().getSeverity().getOrdinal();
126          Assert.assertTrue(mustShrink >= newValue);
127          mustShrink = newValue;
128        }
129      }
130    
131      @Test
132      public void testOrderByEnum() {
133        Assert.assertEquals(2, UIMessages.OrderBy.values().length);
134        Assert.assertEquals(UIMessages.OrderBy.OCCURRENCE, UIMessages.OrderBy.parse(UIMessages.OrderBy.OCCURRENCE_STRING));
135        Assert.assertEquals(UIMessages.OrderBy.SEVERITY, UIMessages.OrderBy.parse(UIMessages.OrderBy.SEVERITY_STRING));
136      }
137    
138    }