| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| package org.apache.struts2.views.jsp.ui; |
| |
| import java.util.ArrayList; |
| import java.util.Collections; |
| import java.util.LinkedHashMap; |
| import java.util.List; |
| import java.util.Map; |
| |
| import org.apache.struts2.views.jsp.AbstractUITagTest; |
| import org.apache.struts2.views.jsp.ParamTag; |
| import org.apache.struts2.TestAction; |
| |
| import com.opensymphony.xwork2.Action; |
| import com.opensymphony.xwork2.ActionSupport; |
| |
| /** |
| * FieldError Tag Test Case. |
| * |
| */ |
| public class FieldErrorTagTest extends AbstractUITagTest { |
| |
| |
| public void testWithoutParamsWithFieldErrors() throws Exception { |
| FieldErrorTag tag = new FieldErrorTag(); |
| ((InternalAction)action).setHaveFieldErrors(true); |
| tag.setPageContext(pageContext); |
| tag.doStartTag(); |
| tag.doEndTag(); |
| |
| verify(FieldErrorTagTest.class.getResource("fielderror-1.txt")); |
| } |
| |
| public void testWithoutParamsWithoutFieldErrors() throws Exception { |
| FieldErrorTag tag = new FieldErrorTag(); |
| ((InternalAction)action).setHaveFieldErrors(false); |
| tag.setPageContext(pageContext); |
| tag.doStartTag(); |
| tag.doEndTag(); |
| |
| verify(FieldErrorTagTest.class.getResource("fielderror-2.txt")); |
| } |
| |
| public void testFieldErrorsEscape() throws Exception { |
| |
| FieldErrorTag tag = new FieldErrorTag(); |
| TestAction testAction = new TestAction(); |
| testAction.addFieldError("f", "<p>hey</p>"); |
| stack.pop(); |
| stack.push(testAction); |
| tag.setEscape(true); |
| tag.setPageContext(pageContext); |
| tag.doStartTag(); |
| tag.doEndTag(); |
| |
| assertEquals(normalize("<ul class=\"errorMessage\"><li><span><p>hey</p></span></li></ul>", true), |
| normalize(writer.toString(), true)); |
| } |
| |
| public void testFieldErrorsDontEscape() throws Exception { |
| |
| FieldErrorTag tag = new FieldErrorTag(); |
| TestAction testAction = new TestAction(); |
| testAction.addFieldError("f", "<p>hey</p>"); |
| stack.pop(); |
| stack.push(testAction); |
| tag.setEscape(false); |
| tag.setPageContext(pageContext); |
| tag.doStartTag(); |
| tag.doEndTag(); |
| |
| assertEquals(normalize("<ul class=\"errorMessage\"><li><span><p>hey</p></span></li></ul>", true), |
| normalize(writer.toString(), true)); |
| } |
| |
| public void testWithParamsWithFieldErrors1() throws Exception { |
| FieldErrorTag tag = new FieldErrorTag(); |
| tag.setId("someid"); |
| ((InternalAction)action).setHaveFieldErrors(true); |
| tag.setPageContext(pageContext); |
| tag.doStartTag(); |
| ParamTag pTag1 = new ParamTag(); |
| pTag1.setPageContext(pageContext); |
| pTag1.setValue("%{'field1'}"); |
| pTag1.doStartTag(); |
| pTag1.doEndTag(); |
| |
| ParamTag pTag2 = new ParamTag(); |
| pTag2.setPageContext(pageContext); |
| pTag2.setValue("%{'field3'}"); |
| pTag2.doStartTag(); |
| pTag2.doEndTag(); |
| |
| tag.doEndTag(); |
| |
| verify(FieldErrorTagTest.class.getResource("fielderror-3.txt")); |
| } |
| |
| public void testWithFieldName() throws Exception { |
| FieldErrorTag tag = new FieldErrorTag(); |
| tag.setFieldName("field1"); |
| ((InternalAction)action).setHaveFieldErrors(true); |
| tag.setPageContext(pageContext); |
| tag.doStartTag(); |
| tag.doEndTag(); |
| |
| verify(FieldErrorTagTest.class.getResource("fielderror-6.txt")); |
| } |
| |
| public void testWithParamsWithFieldErrors2() throws Exception { |
| FieldErrorTag tag = new FieldErrorTag(); |
| ((InternalAction)action).setHaveFieldErrors(true); |
| tag.setPageContext(pageContext); |
| tag.doStartTag(); |
| ParamTag pTag1 = new ParamTag(); |
| pTag1.setPageContext(pageContext); |
| pTag1.setValue("%{'field1'}"); |
| pTag1.doStartTag(); |
| pTag1.doEndTag(); |
| |
| ParamTag pTag2 = new ParamTag(); |
| pTag2.setPageContext(pageContext); |
| pTag2.setValue("%{'field2'}"); |
| pTag2.doStartTag(); |
| pTag2.doEndTag(); |
| |
| tag.doEndTag(); |
| |
| verify(FieldErrorTagTest.class.getResource("fielderror-4.txt")); |
| } |
| |
| |
| public void testWithParamsWithFieldErrors3() throws Exception { |
| FieldErrorTag tag = new FieldErrorTag(); |
| ((InternalAction)action).setHaveFieldErrors(true); |
| tag.setPageContext(pageContext); |
| tag.doStartTag(); |
| ParamTag pTag1 = new ParamTag(); |
| pTag1.setPageContext(pageContext); |
| pTag1.setValue("%{'field2'}"); |
| pTag1.doStartTag(); |
| pTag1.doEndTag(); |
| |
| tag.doEndTag(); |
| |
| verify(FieldErrorTagTest.class.getResource("fielderror-5.txt")); |
| } |
| |
| public void testWithParamsWithoutFieldErrors1() throws Exception { |
| FieldErrorTag tag = new FieldErrorTag(); |
| ((InternalAction)action).setHaveFieldErrors(false); |
| tag.setPageContext(pageContext); |
| tag.doStartTag(); |
| ParamTag pTag1 = new ParamTag(); |
| pTag1.setPageContext(pageContext); |
| pTag1.setValue("%{'field1'}"); |
| pTag1.doStartTag(); |
| pTag1.doEndTag(); |
| |
| ParamTag pTag2 = new ParamTag(); |
| pTag2.setPageContext(pageContext); |
| pTag2.setValue("%{'field3'}"); |
| pTag2.doStartTag(); |
| pTag2.doEndTag(); |
| tag.doEndTag(); |
| |
| verify(FieldErrorTagTest.class.getResource("fielderror-2.txt")); |
| } |
| |
| public void testWithParamsWithoutFieldErrors2() throws Exception { |
| FieldErrorTag tag = new FieldErrorTag(); |
| ((InternalAction)action).setHaveFieldErrors(false); |
| tag.setPageContext(pageContext); |
| tag.doStartTag(); |
| ParamTag pTag1 = new ParamTag(); |
| pTag1.setPageContext(pageContext); |
| pTag1.setValue("%{'field1'}"); |
| pTag1.doStartTag(); |
| pTag1.doEndTag(); |
| |
| ParamTag pTag2 = new ParamTag(); |
| pTag2.setPageContext(pageContext); |
| pTag2.setValue("%{'field3'}"); |
| pTag2.doStartTag(); |
| pTag2.doEndTag(); |
| tag.doEndTag(); |
| |
| verify(FieldErrorTagTest.class.getResource("fielderror-2.txt")); |
| } |
| |
| |
| public void testWithParamsWithoutFieldErrors3() throws Exception { |
| FieldErrorTag tag = new FieldErrorTag(); |
| ((InternalAction)action).setHaveFieldErrors(false); |
| tag.setPageContext(pageContext); |
| tag.doStartTag(); |
| ParamTag pTag1 = new ParamTag(); |
| pTag1.setPageContext(pageContext); |
| pTag1.setValue("%{'field2'}"); |
| pTag1.doStartTag(); |
| pTag1.doEndTag(); |
| |
| tag.doEndTag(); |
| |
| verify(FieldErrorTagTest.class.getResource("fielderror-2.txt")); |
| } |
| |
| public void testWithNullFieldErrors() throws Exception { |
| FieldErrorTag tag = new FieldErrorTag(); |
| ((InternalAction)action).setHaveFieldErrors(false); |
| ((InternalAction)action).setReturnNullForFieldErrors(true); |
| tag.setPageContext(pageContext); |
| tag.doStartTag(); |
| ParamTag pTag1 = new ParamTag(); |
| pTag1.setPageContext(pageContext); |
| pTag1.setValue("%{'field2'}"); |
| pTag1.doStartTag(); |
| pTag1.doEndTag(); |
| |
| tag.doEndTag(); |
| |
| verify(FieldErrorTagTest.class.getResource("fielderror-2.txt")); |
| } |
| |
| |
| public Action getAction() { |
| return new InternalAction(); |
| } |
| |
| |
| public class InternalAction extends ActionSupport { |
| |
| private boolean haveFieldErrors = false; |
| private boolean returnNullForFieldErrors = false; |
| |
| public void setHaveFieldErrors(boolean haveFieldErrors) { |
| this.haveFieldErrors = haveFieldErrors; |
| } |
| |
| public void setReturnNullForFieldErrors(boolean returnNullForFieldErrors) { |
| this.returnNullForFieldErrors = returnNullForFieldErrors; |
| } |
| |
| public Map<String, List<String>> getFieldErrors() { |
| if (haveFieldErrors) { |
| List err1 = new ArrayList(); |
| err1.add("field error message number 1"); |
| List err2 = new ArrayList(); |
| err2.add("field error message number 2"); |
| List err3 = new ArrayList(); |
| err3.add("field error message number 3"); |
| Map fieldErrors = new LinkedHashMap(); |
| fieldErrors.put("field1", err1); |
| fieldErrors.put("field2", err2); |
| fieldErrors.put("field3", err3); |
| return fieldErrors; |
| } |
| else if (returnNullForFieldErrors) { |
| return null; |
| } |
| else { |
| return Collections.emptyMap(); |
| } |
| } |
| |
| public boolean hasFieldErrors() { |
| return haveFieldErrors; |
| } |
| } |
| } |
| |