View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.myfaces.view.facelets;
20  
21  import java.util.Locale;
22  import org.junit.Assert;
23  import org.junit.Test;
24  
25  import javax.faces.component.UIComponent;
26  import javax.faces.component.UIPanel;
27  import javax.faces.component.UIViewParameter;
28  import javax.faces.component.UIViewRoot;
29  import javax.faces.view.ViewMetadata;
30  import org.apache.myfaces.view.facelets.bean.ViewBean;
31  
32  /**
33   * Test cases for FaceletViewDeclarationLanguage.
34   *
35   * @author Jakob Korherr
36   */
37  public class FaceletViewDeclarationLanguageTest extends FaceletTestCase
38  {
39  
40      /**
41       * Test case for MYFACES-3002.
42       */
43      @Test
44      public void testBuildViewUIViewParameters() throws Exception
45      {
46          // build a UIViewRoot with a UIViewParameter
47          ViewMetadata viewMetadata = this.vdl.getViewMetadata(facesContext, "viewparameter1.xhtml");
48          UIViewRoot root = viewMetadata.createMetadataView(facesContext);
49          facesContext.setViewRoot(root);
50  
51          // UIViewParameter must be there
52          checkUIViewParameter(root);
53  
54          // build and render view (must not remove UIViewParameter)
55          vdl.buildView(facesContext, root, "viewparameter1.xhtml");
56          vdl.renderView(facesContext, root);
57  
58          // UIViewParameter must still be there, because its value is saved in the state!
59          checkUIViewParameter(root);
60      }
61  
62      private void checkUIViewParameter(UIViewRoot root)
63      {
64          // the metadata facet MUST be there
65          UIComponent metadataFacet = root.getFacet(UIViewRoot.METADATA_FACET_NAME);
66          Assert.assertNotNull(metadataFacet);
67          Assert.assertTrue(metadataFacet instanceof UIPanel); // the metadata-facet must be a UIPanel
68  
69          // get the UIViewParameter
70          UIComponent viewParameter = metadataFacet.getChildren().get(0);
71          Assert.assertTrue(viewParameter instanceof UIViewParameter);
72      }
73  
74      @Test
75      public void testBuildViewUIViewParametersLocale() throws Exception
76      {
77          request.setAttribute("viewBean", new ViewBean());
78          
79          // build a UIViewRoot with a UIViewParameter
80          ViewMetadata viewMetadata = this.vdl.getViewMetadata(facesContext, "viewparameter2.xhtml");
81          UIViewRoot root = viewMetadata.createMetadataView(facesContext);
82          facesContext.setViewRoot(root);
83  
84          // UIViewParameter must be there
85          checkUIViewParameter(root);
86          
87          Assert.assertEquals(Locale.FRANCE, root.getLocale());
88  
89          // build and render view (must not remove UIViewParameter)
90          vdl.buildView(facesContext, root, "viewparameter2.xhtml");
91          vdl.renderView(facesContext, root);
92  
93          // UIViewParameter must still be there, because its value is saved in the state!
94          checkUIViewParameter(root);
95      }
96  }