/* * Copyright 2002-2005 the original author or authors. * * Licensed 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.springframework.web.servlet.view.jasperreports; import java.util.Locale; import junit.framework.TestCase; import org.springframework.context.support.StaticApplicationContext; import org.springframework.web.servlet.view.velocity.VelocityView; /** * @author Rob Harrop */ public class JasperReportViewResolverTests extends TestCase { public void testResolveView() throws Exception { StaticApplicationContext ctx = new StaticApplicationContext(); String prefix = "org/springframework/ui/jasperreports/"; String suffix = ".jasper"; String viewName = "DataSourceReport"; JasperReportsViewResolver viewResolver = new JasperReportsViewResolver(); viewResolver.setViewClass(JasperReportsHtmlView.class); viewResolver.setPrefix(prefix); viewResolver.setSuffix(suffix); viewResolver.setApplicationContext(ctx); AbstractJasperReportsView view = (AbstractJasperReportsView) viewResolver.resolveViewName(viewName, Locale.ENGLISH); assertNotNull("View should not be null", view); assertEquals("Incorrect URL", prefix + viewName + suffix, view.getUrl()); } public void testSetIncorrectViewClass() { try { new JasperReportsViewResolver().setViewClass(VelocityView.class); fail("Should not be able to set view class to a class that does not extend AbstractJasperReportsView"); } catch (IllegalArgumentException ex) { // success } } public void testWithViewNamesAndEndsWithPattern() throws Exception { doViewNamesTest(new String[]{"DataSource*"}); } public void testWithViewNamesAndStartsWithPattern() throws Exception { doViewNamesTest(new String[]{"*Report"}); } public void testWithViewNamesAndStatic() throws Exception { doViewNamesTest(new String[]{"DataSourceReport"}); } private void doViewNamesTest(String[] viewNames) throws Exception { StaticApplicationContext ctx = new StaticApplicationContext(); String prefix = "org/springframework/ui/jasperreports/"; String suffix = ".jasper"; String viewName = "DataSourceReport"; JasperReportsViewResolver viewResolver = new JasperReportsViewResolver(); viewResolver.setViewClass(JasperReportsHtmlView.class); viewResolver.setPrefix(prefix); viewResolver.setSuffix(suffix); viewResolver.setViewNames(viewNames); viewResolver.setApplicationContext(ctx); AbstractJasperReportsView view = (AbstractJasperReportsView) viewResolver.resolveViewName(viewName, Locale.ENGLISH); assertNotNull("View should not be null", view); assertEquals("Incorrect URL", prefix + viewName + suffix, view.getUrl()); assertNull(viewResolver.resolveViewName("foo", Locale.ENGLISH)); } }