/**
* Copyright (c) 2009--2012 Red Hat, Inc.
*
* This software is licensed to you under the GNU General Public License,
* version 2 (GPLv2). There is NO WARRANTY for this software, express or
* implied, including the implied warranties of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
* along with this software; if not, see
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
*
* Red Hat trademarks are not licensed under GPLv2. No permission is
* granted to use or replicate Red Hat trademarks that are incorporated
* in this software or its documentation.
*/
package com.redhat.rhn.frontend.taglibs.test;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.Tag;
import com.mockobjects.helpers.TagTestHelper;
import com.mockobjects.servlet.MockJspWriter;
import com.mockobjects.servlet.MockPageContext;
import com.redhat.rhn.common.db.datasource.DataResult;
import com.redhat.rhn.frontend.taglibs.ListTag;
import com.redhat.rhn.testing.RhnBaseTestCase;
import com.redhat.rhn.testing.RhnMockHttpServletRequest;
import com.redhat.rhn.testing.TagTestUtils;
/**
* ColumnTagTest
* @version $Rev$
*/
public class ListTagTest extends RhnBaseTestCase {
public void testConstructor() {
ListTag lt = new ListTag();
assertNotNull(lt);
assertNull(lt.getPageList());
}
public void testLegends() throws Exception {
ListTag lt = new ListTag();
TagTestHelper tth = TagTestUtils.setupTagTest(lt, new URL("http://localhost/"));
MockPageContext pc = tth.getPageContext();
RhnMockHttpServletRequest request = new RhnMockHttpServletRequest();
pc.setRequest(request);
lt.setPageContext(pc);
//test null
lt.setLegend(null);
lt.setNoDataText("none.message");
pc.getRequest().setAttribute("legends", null);
lt.doStartTag();
assertNull(pc.getRequest().getAttribute("legends"));
//test 1
lt.setLegend("yankee");
lt.setNoDataText("none.message");
pc.getRequest().setAttribute("legends", "");
lt.doStartTag();
assertEquals("yankee", pc.getRequest().getAttribute("legends"));
//test > 1
lt.setLegend("foxtrot");
lt.setNoDataText("none.message");
pc.getRequest().setAttribute("legends", "yankee,hotel");
lt.doStartTag();
assertEquals("yankee,hotel,foxtrot", pc.getRequest().getAttribute("legends"));
}
public void testTagNoOutput() throws Exception {
ListTag lt = new ListTag();
DataResult dr = new DataResult(new ArrayList());
lt.setPageList(dr);
lt.setNoDataText("cant have spaces");
TagTestHelper tth = TagTestUtils.setupTagTest(lt, new URL("http://localhost/"));
try {
// setup mock objects
MockJspWriter out = (MockJspWriter) tth.getPageContext().getOut();
out.setExpectedData("<div class=\"list-empty-message\">do spaces work?</div>");
// ok let's test the tag
tth.assertDoStartTag(Tag.SKIP_BODY);
out.verify();
}
catch (JspException e) {
fail(e.toString());
}
}
public void testTagOutput() throws Exception {
ListTag lt = new ListTag();
// Invent some data so we have a non-empty list
String[] vals = {"one", "two", "three"};
List<String> results = new ArrayList();
for (String s : vals) {
results.add(s);
}
DataResult dr = new DataResult(results);
lt.setPageList(dr);
lt.setNoDataText("No Data.");
TagTestHelper tth = TagTestUtils.setupTagTest(lt, new URL("http://localhost/"));
try {
// setup mock objects
MockJspWriter out = (MockJspWriter) tth.getPageContext().getOut();
out.setExpectedData("");
// ok let's test the tag
tth.assertDoStartTag(Tag.EVAL_BODY_INCLUDE);
out.verify();
}
catch (JspException e) {
fail(e.toString());
}
}
public void testNullPageList() throws Exception {
ListTag lt = new ListTag();
lt.setPageList(null);
lt.setNoDataText("No Data.");
TagTestHelper tth = TagTestUtils.setupTagTest(lt, new URL("http://localhost/"));
try {
// setup mock objects
MockJspWriter out = (MockJspWriter) tth.getPageContext().getOut();
out.setExpectedData("<div class=\"list-empty-message\">**No Data.**</div>");
// ok let's test the tag
tth.assertDoStartTag(Tag.SKIP_BODY);
out.verify();
}
catch (JspException e) {
fail(e.toString());
}
}
}