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 }