1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.apache.struts2.views.jsp.ui;
23
24 import java.util.*;
25
26 import org.apache.struts2.views.jsp.AbstractUITagTest;
27 import org.apache.struts2.TestAction;
28 import org.apache.commons.lang.xwork.StringUtils;
29
30 import com.opensymphony.xwork2.Action;
31 import com.opensymphony.xwork2.ActionSupport;
32
33 /***
34 * ActionErrorTag test case.
35 *
36 */
37 public class ActionErrorTagTest extends AbstractUITagTest {
38
39 boolean shouldActionHaveError = false;
40
41 public void testNoActionErrors() throws Exception {
42 ActionErrorTag tag = new ActionErrorTag();
43 ((InternalActionSupport)action).setHasActionErrors(false);
44 tag.setPageContext(pageContext);
45 tag.doStartTag();
46 tag.doEndTag();
47
48
49 verify(ActionErrorTagTest.class.getResource("actionerror-1.txt"));
50 }
51
52 public void testActionErrorsEscape() throws Exception {
53
54 ActionErrorTag tag = new ActionErrorTag();
55 TestAction testAction = new TestAction();
56 testAction.addActionError("<p>hey</p>");
57 stack.pop();
58 stack.push(testAction);
59 tag.setEscape(true);
60 tag.setPageContext(pageContext);
61 tag.doStartTag();
62 tag.doEndTag();
63
64 assertEquals(normalize("<ul class=\"errorMessage\"><li><span><p>hey</p></span></li></ul>", true),
65 normalize(writer.toString(), true));
66 }
67
68 public void testActionErrorsDontEscape() throws Exception {
69
70 ActionErrorTag tag = new ActionErrorTag();
71 TestAction testAction = new TestAction();
72 testAction.addActionError("<p>hey</p>");
73 stack.pop();
74 stack.push(testAction);
75 tag.setEscape(false);
76 tag.setPageContext(pageContext);
77 tag.doStartTag();
78 tag.doEndTag();
79
80 assertEquals(normalize("<ul class=\"errorMessage\"><li><span><p>hey</p></span></li></ul>", true),
81 normalize(writer.toString(), true));
82 }
83
84 public void testHaveActionErrors() throws Exception {
85
86 ActionErrorTag tag = new ActionErrorTag();
87 tag.setId("someid");
88 ((InternalActionSupport)action).setHasActionErrors(true);
89 tag.setPageContext(pageContext);
90 tag.doStartTag();
91 tag.doEndTag();
92
93 verify(ActionErrorTagTest.class.getResource("actionerror-2.txt"));
94 }
95
96 public void testNullError() throws Exception {
97
98 ActionErrorTag tag = new ActionErrorTag();
99 tag.setId("someid");
100 ((InternalActionSupport)action).setHasActionErrors(true);
101 ((InternalActionSupport)action).addActionError(null);
102 tag.setPageContext(pageContext);
103 tag.doStartTag();
104 tag.doEndTag();
105
106 verify(ActionErrorTagTest.class.getResource("actionerror-2.txt"));
107 }
108
109 public void testEmptyErrorList() throws Exception {
110
111 ActionErrorTag tag = new ActionErrorTag();
112 tag.setId("someid");
113 ((InternalActionSupport)action).setHasActionErrors(true);
114 ((InternalActionSupport)action).setJustNullElement(true);
115 tag.setPageContext(pageContext);
116 tag.doStartTag();
117 tag.doEndTag();
118
119 assertTrue(StringUtils.isBlank(writer.toString()));
120 }
121
122
123 public Action getAction() {
124 return new InternalActionSupport();
125 }
126
127
128 public class InternalActionSupport extends ActionSupport {
129
130 private static final long serialVersionUID = -4777466640658557661L;
131
132 private boolean yesActionErrors;
133 private boolean justNullElement;
134
135 public void setJustNullElement(boolean justNullElement) {
136 this.justNullElement = justNullElement;
137 }
138
139 public void setHasActionErrors(boolean aYesActionErrors) {
140 yesActionErrors = aYesActionErrors;
141 }
142
143 public boolean hasActionErrors() {
144 return yesActionErrors;
145 }
146
147 public Collection getActionErrors() {
148 if (justNullElement) {
149 return Arrays.asList(null);
150 } else if (yesActionErrors) {
151 List errors = new ArrayList();
152 errors.add("action error number 1");
153 errors.add("action error number 2");
154 errors.add("action error number 3");
155 return errors;
156 }
157 else {
158 return Collections.EMPTY_LIST;
159 }
160 }
161 }
162 }