1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.renderkit.html;
20
21 import java.io.StringWriter;
22
23 import javax.faces.component.behavior.AjaxBehavior;
24 import javax.faces.component.html.HtmlGraphicImage;
25
26 import junit.framework.Test;
27 import junit.framework.TestSuite;
28
29 import org.apache.myfaces.test.utils.HtmlCheckAttributesUtil;
30 import org.apache.myfaces.test.utils.HtmlRenderedAttr;
31 import org.apache.myfaces.test.base.AbstractJsfTestCase;
32 import org.apache.myfaces.test.mock.MockRenderKitFactory;
33 import org.apache.myfaces.test.mock.MockResponseWriter;
34
35
36
37
38
39 public class HtmlImageRendererTest extends AbstractJsfTestCase
40 {
41 private MockResponseWriter writer ;
42 private HtmlGraphicImage graphicImage;
43
44 public HtmlImageRendererTest(String name)
45 {
46 super(name);
47 }
48
49 public static Test suite() {
50 return new TestSuite(HtmlImageRendererTest.class);
51 }
52
53 public void setUp() throws Exception
54 {
55 super.setUp();
56
57 graphicImage = new HtmlGraphicImage();
58
59 writer = new MockResponseWriter(new StringWriter(), null, null);
60 facesContext.setResponseWriter(writer);
61
62 facesContext.getViewRoot().setRenderKitId(MockRenderKitFactory.HTML_BASIC_RENDER_KIT);
63 facesContext.getRenderKit().addRenderer(
64 graphicImage.getFamily(),
65 graphicImage.getRendererType(),
66 new HtmlImageRenderer());
67 facesContext.getAttributes().put("org.apache.myfaces.RENDERED_JSF_JS", Boolean.TRUE);
68 }
69
70 public void tearDown() throws Exception
71 {
72 super.tearDown();
73 graphicImage = null;
74 writer = null;
75 }
76
77 public void testRenderDefault() throws Exception
78 {
79 String imgUrl = "http://www.apache.org/images/feather.gif";
80 String src = facesContext.getApplication().getViewHandler().getResourceURL(facesContext, imgUrl);
81
82 graphicImage.setId("img1");
83 graphicImage.setValue(imgUrl);
84 graphicImage.encodeBegin(facesContext);
85 graphicImage.encodeChildren(facesContext);
86 graphicImage.encodeEnd(facesContext);
87 facesContext.renderResponse();
88
89 String output = writer.getWriter().toString();
90 assertEquals("<img id=\"img1\" src=\"" + src + "\"/>", output);
91 }
92
93 public void testHtmlPropertyPassTru() throws Exception
94 {
95 HtmlRenderedAttr[] attrs = HtmlCheckAttributesUtil.generateBasicReadOnlyAttrs();
96
97 graphicImage.setId("img1");
98 graphicImage.setValue("http://www.apache.org/images/feather.gif");
99
100 HtmlCheckAttributesUtil.checkRenderedAttributes(
101 graphicImage, facesContext, writer, attrs);
102 if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs)) {
103 fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
104 }
105 }
106
107 public void testHtmlPropertyPassTruNotRendered() throws Exception
108 {
109 HtmlRenderedAttr[] attrs = HtmlCheckAttributesUtil.generateAttrsNotRenderedForReadOnly();
110
111 graphicImage.setId("img1");
112 graphicImage.setValue("http://www.apache.org/images/feather.gif");
113
114 HtmlCheckAttributesUtil.checkRenderedAttributes(
115 graphicImage, facesContext, writer, attrs);
116 if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs)) {
117 fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
118 }
119 }
120
121
122
123
124 public void testClientBehaviorHolderRendersIdAndName()
125 {
126 graphicImage.addClientBehavior("keypress", new AjaxBehavior());
127 try
128 {
129 graphicImage.encodeAll(facesContext);
130 String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
131 assertTrue(output.matches(".+id=\".+\".+"));
132 assertTrue(output.matches(".+name=\".+\".+"));
133 }
134 catch (Exception e)
135 {
136 fail(e.getMessage());
137 }
138
139 }
140 }