blob: 4c59ea0686710e7f1a157951ade12c447bf85810 [file] [log] [blame]
/*
* $Id$
*
* 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.tiles.jsp.taglib;
import static org.easymock.EasyMock.*;
import static org.easymock.classextension.EasyMock.*;
import static org.junit.Assert.*;
import java.io.IOException;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.JspTag;
import javax.servlet.jsp.tagext.TagData;
import javax.servlet.jsp.tagext.VariableInfo;
import org.apache.tiles.Attribute;
import org.apache.tiles.AttributeContext;
import org.apache.tiles.TilesContainer;
import org.apache.tiles.access.TilesAccess;
import org.apache.tiles.request.ApplicationAccess;
import org.apache.tiles.request.ApplicationContext;
import org.apache.tiles.request.jsp.JspRequest;
import org.junit.Before;
import org.junit.Test;
/**
* Tests {@link UseAttributeTag}.
*
* @version $Rev$ $Date$
*/
public class UseAttributeTagTest {
/**
* The tag to test.
*/
private UseAttributeTag tag;
/**
* Sets up the test.
*/
@Before
public void setUp() {
tag = new UseAttributeTag();
}
/**
* Test method for {@link org.apache.tiles.jsp.taglib.UseAttributeTag#execute(org.apache.tiles.request.Request)}.
* @throws IOException
* @throws JspException
*/
@Test
public void testExecute() throws JspException, IOException {
JspFragment jspBody = createMock(JspFragment.class);
PageContext pageContext = createMock(PageContext.class);
JspTag parent = createMock(JspTag.class);
ApplicationContext applicationContext = createMock(ApplicationContext.class);
HttpServletRequest httpServletRequest = createMock(HttpServletRequest.class);
HttpServletResponse httpServletResponse = createMock(HttpServletResponse.class);
@SuppressWarnings("unchecked")
Map<String, Object> applicationScope = createMock(Map.class);
TilesContainer container = createMock(TilesContainer.class);
AttributeContext attributeContext = createMock(AttributeContext.class);
Attribute attribute = createMock(Attribute.class);
expect(pageContext.getAttribute(
ApplicationAccess.APPLICATION_CONTEXT_ATTRIBUTE,
PageContext.APPLICATION_SCOPE)).andReturn(applicationContext);
expect(applicationContext.getApplicationScope()).andReturn(applicationScope).anyTimes();
expect(pageContext.getRequest()).andReturn(httpServletRequest);
expect(pageContext.getResponse()).andReturn(httpServletResponse);
expect(pageContext.getAttribute(TilesAccess.CURRENT_CONTAINER_ATTRIBUTE_NAME, PageContext.REQUEST_SCOPE)).andReturn(container);
expect(container.getAttributeContext(isA(JspRequest.class))).andReturn(attributeContext);
expect(attributeContext.getAttribute("name")).andReturn(attribute);
expect(container.evaluate(isA(Attribute.class), isA(JspRequest.class))).andReturn(new Integer(1));
pageContext.setAttribute("id", new Integer(1), PageContext.PAGE_SCOPE);
replay(jspBody, pageContext, parent,
applicationContext, httpServletRequest, httpServletResponse,
applicationScope, container, attributeContext, attribute);
tag.setName("name");
tag.setScope("page");
tag.setId("id");
tag.setIgnore(false);
tag.setJspContext(pageContext);
tag.setJspBody(jspBody);
tag.setParent(parent);
tag.doTag();
verify(jspBody, pageContext, parent,
applicationContext, httpServletRequest, httpServletResponse,
container, attributeContext, attribute);
}
/**
* Test method for {@link org.apache.tiles.jsp.taglib.UseAttributeTag#setId(java.lang.String)}.
*/
@Test
public void testSetId() {
tag.setId("id");
assertEquals("id", tag.getId());
}
/**
* Test method for {@link org.apache.tiles.jsp.taglib.UseAttributeTag#getScope()}.
*/
@Test
public void testGetScope() {
tag.setScope("scope");
assertEquals("scope", tag.getScope());
}
/**
* Test method for {@link org.apache.tiles.jsp.taglib.UseAttributeTag#setName(java.lang.String)}.
*/
@Test
public void testSetName() {
tag.setName("name");
assertEquals("name", tag.getName());
}
/**
* Test method for {@link org.apache.tiles.jsp.taglib.UseAttributeTag#setIgnore(boolean)}.
*/
@Test
public void testSetIgnore() {
tag.setIgnore(true);
assertTrue(tag.isIgnore());
}
/**
* Test method for {@link org.apache.tiles.jsp.taglib.UseAttributeTag#setClassname(java.lang.String)}.
*/
@Test
public void testSetClassname() {
tag.setClassname("classname");
assertEquals("classname", tag.getClassname());
}
/**
* Test method for {@link org.apache.tiles.jsp.taglib.UseAttributeTag#getScriptingVariable()}.
*/
@Test
public void testGetScriptingVariable() {
tag.setName("name");
assertEquals("name", tag.getScriptingVariable());
tag.setId("id");
assertEquals("id", tag.getScriptingVariable());
}
/**
* Tests {@link UseAttributeTag.Tei}.
*/
@Test
public void testTei() {
TagData tagData = createMock(TagData.class);
expect(tagData.getAttributeString("classname")).andReturn("my.Clazz");
expect(tagData.getAttributeString("id")).andReturn("id");
replay(tagData);
UseAttributeTag.Tei tei = new UseAttributeTag.Tei();
VariableInfo[] infos = tei.getVariableInfo(tagData);
assertEquals(1, infos.length);
VariableInfo info = infos[0];
assertEquals("id", info.getVarName());
assertEquals("my.Clazz", info.getClassName());
assertTrue(info.getDeclare());
assertEquals(VariableInfo.AT_END, info.getScope());
verify(tagData);
}
/**
* Tests {@link UseAttributeTag.Tei}.
*/
@Test
public void testTeiDefaults() {
TagData tagData = createMock(TagData.class);
expect(tagData.getAttributeString("classname")).andReturn(null);
expect(tagData.getAttributeString("id")).andReturn(null);
expect(tagData.getAttributeString("name")).andReturn("name");
replay(tagData);
UseAttributeTag.Tei tei = new UseAttributeTag.Tei();
VariableInfo[] infos = tei.getVariableInfo(tagData);
assertEquals(1, infos.length);
VariableInfo info = infos[0];
assertEquals("name", info.getVarName());
assertEquals("java.lang.Object", info.getClassName());
assertTrue(info.getDeclare());
assertEquals(VariableInfo.AT_END, info.getScope());
verify(tagData);
}
}