001 /*
002 * Copyright 2002-2007 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.form.builder;
017
018 import javax.swing.JComponent;
019 import javax.swing.JLabel;
020 import javax.swing.JTextArea;
021 import javax.swing.JTextField;
022
023 import org.easymock.EasyMock;
024 import org.springframework.binding.form.FormModel;
025 import org.springframework.binding.form.support.DefaultFormModel;
026 import org.springframework.richclient.factory.ComponentFactory;
027 import org.springframework.richclient.form.binding.BindingFactory;
028 import org.springframework.richclient.form.binding.swing.SwingBindingFactory;
029 import org.springframework.richclient.test.SpringRichTestCase;
030
031 /**
032 * Skeleton Testcase for <code>AbstractFormBuilder</code>.
033 *
034 * @author Peter De Bruycker
035 */
036 public abstract class AbstractFormBuilderTestCase extends SpringRichTestCase {
037 private AbstractFormBuilder formBuilder;
038 private FormModel formModel;
039 private ComponentFactory mockComponentFactory;
040 private FormComponentInterceptorFactory mockInterceptorFactory;
041
042 public void testCreateTextArea() {
043 final JTextArea textArea = new JTextArea();
044
045 EasyMock.expect(mockComponentFactory.createTextArea(5, 40)).andReturn(textArea);
046
047 EasyMock.replay(mockComponentFactory);
048
049 JComponent result = formBuilder.createTextArea("property");
050 assertSame(textArea, result);
051
052 EasyMock.verify(mockComponentFactory);
053 }
054
055 public void testCreateLabelWithNullInterceptor() {
056 final JLabel label = new JLabel("test-label");
057
058 EasyMock.expect(mockComponentFactory.createLabel("")).andReturn(label);
059 EasyMock.expect(mockInterceptorFactory.getInterceptor(formModel)).andReturn(null);
060
061 EasyMock.replay(mockComponentFactory);
062 EasyMock.replay(mockInterceptorFactory);
063
064 JTextField component = new JTextField();
065 formBuilder.createLabelFor("property", component);
066
067 EasyMock.verify(mockComponentFactory);
068 EasyMock.verify(mockInterceptorFactory);
069 }
070
071 public void testCreateLabel() {
072 final JLabel label = new JLabel("test-label");
073
074 EasyMock.expect(mockComponentFactory.createLabel("")).andReturn(label);
075
076 FormComponentInterceptor mockInterceptor= (FormComponentInterceptor) EasyMock.createMock(FormComponentInterceptor.class);
077 mockInterceptor.processLabel("property", label);
078
079 EasyMock.expect(mockInterceptorFactory.getInterceptor(formModel)).andReturn(mockInterceptor);
080
081 EasyMock.replay(mockComponentFactory);
082 EasyMock.replay(mockInterceptorFactory);
083 EasyMock.replay(mockInterceptor);
084
085 JTextField component = new JTextField();
086 JLabel result = formBuilder.createLabelFor("property", component);
087
088 assertSame(label, result);
089 assertNotNull("createLabelFor cannot return null", result);
090 assertEquals(component, result.getLabelFor());
091
092 EasyMock.verify(mockComponentFactory);
093 EasyMock.verify(mockInterceptorFactory);
094 EasyMock.verify(mockInterceptor);
095 }
096
097 protected final void doSetUp() throws Exception {
098 formModel = new DefaultFormModel(new TestBean());
099 BindingFactory bindingFactory= new SwingBindingFactory(formModel);
100
101 formBuilder = createFormBuilder(bindingFactory);
102 assertNotNull("formBuilder cannot be null", formBuilder);
103
104 mockComponentFactory= (ComponentFactory) EasyMock.createMock(ComponentFactory.class);
105 formBuilder.setComponentFactory(mockComponentFactory);
106
107 mockInterceptorFactory = (FormComponentInterceptorFactory) EasyMock.createMock(FormComponentInterceptorFactory.class);
108 formBuilder.setFormComponentInterceptorFactory(mockInterceptorFactory);
109
110 additionalSetUp();
111 }
112
113 protected abstract AbstractFormBuilder createFormBuilder(BindingFactory bindingFactory);
114
115 protected void additionalSetUp() throws Exception {
116
117 }
118 }