1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.springframework.richclient.form.builder;
17
18 import javax.swing.JComponent;
19 import javax.swing.JLabel;
20 import javax.swing.JTextArea;
21 import javax.swing.JTextField;
22
23 import org.easymock.EasyMock;
24 import org.springframework.binding.form.FormModel;
25 import org.springframework.binding.form.support.DefaultFormModel;
26 import org.springframework.richclient.factory.ComponentFactory;
27 import org.springframework.richclient.form.binding.BindingFactory;
28 import org.springframework.richclient.form.binding.swing.SwingBindingFactory;
29 import org.springframework.richclient.test.SpringRichTestCase;
30
31
32
33
34
35
36 public abstract class AbstractFormBuilderTestCase extends SpringRichTestCase {
37 private AbstractFormBuilder formBuilder;
38 private FormModel formModel;
39 private ComponentFactory mockComponentFactory;
40 private FormComponentInterceptorFactory mockInterceptorFactory;
41
42 public void testCreateTextArea() {
43 final JTextArea textArea = new JTextArea();
44
45 EasyMock.expect(mockComponentFactory.createTextArea(5, 40)).andReturn(textArea);
46
47 EasyMock.replay(mockComponentFactory);
48
49 JComponent result = formBuilder.createTextArea("property");
50 assertSame(textArea, result);
51
52 EasyMock.verify(mockComponentFactory);
53 }
54
55 public void testCreateLabelWithNullInterceptor() {
56 final JLabel label = new JLabel("test-label");
57
58 EasyMock.expect(mockComponentFactory.createLabel("")).andReturn(label);
59 EasyMock.expect(mockInterceptorFactory.getInterceptor(formModel)).andReturn(null);
60
61 EasyMock.replay(mockComponentFactory);
62 EasyMock.replay(mockInterceptorFactory);
63
64 JTextField component = new JTextField();
65 formBuilder.createLabelFor("property", component);
66
67 EasyMock.verify(mockComponentFactory);
68 EasyMock.verify(mockInterceptorFactory);
69 }
70
71 public void testCreateLabel() {
72 final JLabel label = new JLabel("test-label");
73
74 EasyMock.expect(mockComponentFactory.createLabel("")).andReturn(label);
75
76 FormComponentInterceptor mockInterceptor= (FormComponentInterceptor) EasyMock.createMock(FormComponentInterceptor.class);
77 mockInterceptor.processLabel("property", label);
78
79 EasyMock.expect(mockInterceptorFactory.getInterceptor(formModel)).andReturn(mockInterceptor);
80
81 EasyMock.replay(mockComponentFactory);
82 EasyMock.replay(mockInterceptorFactory);
83 EasyMock.replay(mockInterceptor);
84
85 JTextField component = new JTextField();
86 JLabel result = formBuilder.createLabelFor("property", component);
87
88 assertSame(label, result);
89 assertNotNull("createLabelFor cannot return null", result);
90 assertEquals(component, result.getLabelFor());
91
92 EasyMock.verify(mockComponentFactory);
93 EasyMock.verify(mockInterceptorFactory);
94 EasyMock.verify(mockInterceptor);
95 }
96
97 protected final void doSetUp() throws Exception {
98 formModel = new DefaultFormModel(new TestBean());
99 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 }