001 /*
002 * Copyright 2002-2004 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005 * use this file except in compliance with the License. You may obtain a copy of
006 * the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013 * License for the specific language governing permissions and limitations under
014 * the License.
015 */
016 package org.springframework.richclient.application.support;
017
018 import junit.framework.Assert;
019 import junit.framework.TestCase;
020 import org.springframework.beans.MutablePropertyValues;
021 import org.springframework.beans.factory.BeanNotOfRequiredTypeException;
022 import org.springframework.context.support.StaticApplicationContext;
023 import org.springframework.richclient.application.ViewDescriptor;
024
025 import javax.swing.*;
026
027
028 /**
029 * Provides a suite of unit tests for the {@link BeanFactoryViewDescriptorRegistry} class.
030 *
031 * @author Kevin Stembridge
032 * @since 0.3
033 *
034 */
035 public class BeanFactoryViewDescriptorRegistryTests extends TestCase {
036
037 /**
038 * Test method for {@link BeanFactoryViewDescriptorRegistry#getViewDescriptor(java.lang.String)}.
039 */
040 public final void testGetViewDescriptor() {
041
042 BeanFactoryViewDescriptorRegistry registry = new BeanFactoryViewDescriptorRegistry();
043 StaticApplicationContext appCtx = new StaticApplicationContext();
044 registry.setApplicationContext(appCtx);
045
046 MutablePropertyValues mpv = new MutablePropertyValues();
047 mpv.addPropertyValue("viewClass", NullView.class);
048 appCtx.registerSingleton("view1", DefaultViewDescriptor.class, mpv);
049 appCtx.registerSingleton("view2", DefaultViewDescriptor.class, mpv);
050 appCtx.registerSingleton("bogusView", String.class);
051
052 Assert.assertNotNull(registry.getViewDescriptor("view1"));
053 Assert.assertNotNull(registry.getViewDescriptor("view2"));
054
055 Assert.assertNull("Should return null when viewName not found", registry.getViewDescriptor("bogus"));
056
057 try {
058 registry.getViewDescriptor("bogusView");
059 Assert.fail("Should have thrown BeanNotOfRequiredTypeException");
060 }
061 catch (BeanNotOfRequiredTypeException e) {
062 //do nothing, test succeeded
063 }
064
065 }
066
067 /**
068 * Performs the following assertions on the
069 * {@link BeanFactoryViewDescriptorRegistry#getViewDescriptors()} method:
070 *
071 * <ul>
072 * <li>The method does not return null if there are no view descriptors in the underlying
073 * registry</li>
074 * <li>The correct number of descriptors are returned.</li>
075 * </ul>
076 */
077 public void testGetViewDescriptors() {
078
079 BeanFactoryViewDescriptorRegistry registry = new BeanFactoryViewDescriptorRegistry();
080 StaticApplicationContext appCtx = new StaticApplicationContext();
081 registry.setApplicationContext(appCtx);
082
083 ViewDescriptor[] viewDescriptors = registry.getViewDescriptors();
084
085 Assert.assertNotNull("View descriptor array should never be null", viewDescriptors);
086 Assert.assertEquals("Should be no view descriptors in the array", 0, viewDescriptors.length);
087
088 MutablePropertyValues mpv = new MutablePropertyValues();
089 mpv.addPropertyValue("viewClass", NullView.class);
090 appCtx.registerSingleton("view1", DefaultViewDescriptor.class, mpv);
091 appCtx.registerSingleton("view2", DefaultViewDescriptor.class, mpv);
092
093 viewDescriptors = registry.getViewDescriptors();
094 Assert.assertEquals("Should be 2 view descriptors in the array", 2, viewDescriptors.length);
095
096 }
097
098 /**
099 * Confirms that an IllegalArgumentException is thrown if a null viewName is passed to the
100 * {@link BeanFactoryViewDescriptorRegistry#getViewDescriptor(String)} method.
101 */
102 public void testForNullViewId() {
103
104 try {
105 new BeanFactoryViewDescriptorRegistry().getViewDescriptor(null);
106 Assert.fail("Should have thrown an IllegalArgumentException for null view ID");
107 }
108 catch (IllegalArgumentException e) {
109 //do nothing, test succeeded
110 }
111
112 }
113
114 private class NullView extends AbstractView
115 {
116
117 protected JComponent createControl()
118 {
119 return new JPanel();
120 }
121 }
122
123 }