1 package org.melati.poem.test;
2
3 import java.sql.Date;
4
5 import org.melati.poem.PoemThread;
6 import org.melati.poem.PoemTypeFactory;
7 import org.melati.poem.Setting;
8 import org.melati.poem.Setting.SettingTypeMismatchException;
9 import org.melati.poem.Setting.SettingValidationException;
10
11
12
13
14
15 public class SettingTest extends EverythingTestCase {
16
17 public SettingTest(String name) {
18 super(name);
19 }
20
21 protected void setUp() throws Exception {
22 super.setUp();
23 }
24
25 protected void tearDown() throws Exception {
26 super.tearDown();
27 }
28
29
30
31
32 public void testSetValue() {
33 Setting stringSetting = getDb().getSettingTable().ensure("stringSetting",
34 "set", "String", "A set string setting");
35 stringSetting.setValue("new");
36 assertEquals("new", stringSetting.getCooked());
37 stringSetting.setRaw("new2");
38 assertEquals("new2", stringSetting.getCooked());
39 stringSetting.delete();
40
41 Setting integerSetting = getDb().getSettingTable().ensure("integerSetting",
42 12, "Integer Setting", "A set Integer setting");
43 integerSetting.setRaw(new Integer(13));
44 assertEquals(new Integer(13), integerSetting.getCooked());
45 try {
46 integerSetting.setValue("ghgh");
47 fail("Should have blown up");
48 } catch (SettingValidationException e) {
49 e = null;
50 }
51
52 try {
53 integerSetting.setRaw("ghgh");
54 fail("Should have blown up");
55 } catch (SettingValidationException e) {
56 e = null;
57 }
58 integerSetting.delete();
59
60 }
61
62
63
64
65 public void testGetValueField() {
66 Setting s = new Setting(PoemTypeFactory.STRING.getCode(), "testSetting",
67 "eggs", "Test Setting", "A test setting");
68 getDb().getSettingTable().create(s);
69 assertEquals("eggs", s.getValueField().getCooked());
70
71 s.delete();
72
73 s = new Setting(PoemTypeFactory.PASSWORD.getCode(), "columnSetting",
74 "0", "Password", "A test setting");
75 getDb().getSettingTable().create(s);
76 s.setRaw(getDb().getUserTable().administratorUser().getPasswordField());
77 assertEquals("password: FIXME", s.getValueField().getCooked());
78 s.delete();
79
80
81
82 }
83
84
85
86
87
88 public void testSettingIntegerStringStringStringString() {
89 Setting s = new Setting(PoemTypeFactory.STRING.getCode(), "testSetting",
90 "eggs", "Test Setting", "A test setting");
91 getDb().getSettingTable().create(s);
92 assertEquals("eggs", s.getValue());
93 s.delete();
94 }
95
96
97
98
99 public void testSetRawObject() {
100 Setting s = new Setting(PoemTypeFactory.STRING.getCode(), "testSetting",
101 "eggs", "Test Setting", "A test setting");
102 getDb().getSettingTable().create(s);
103 assertEquals("eggs", s.getValue());
104 s.delete();
105
106 Setting integerSetting = getDb().getSettingTable().ensure("integerSetting",
107 12, "Integer", "A set Integer setting");
108 integerSetting.setRaw(new Integer(13));
109 assertEquals(new Integer(13), integerSetting.getCooked());
110 try {
111 integerSetting.setRaw("pp");
112 fail("Should have bombed.");
113 } catch (SettingValidationException e) {
114 e = null;
115 }
116
117 integerSetting.delete();
118
119 Setting timestampSetting = getDb().getSettingTable().ensure("timestampSetting",
120 PoemTypeFactory.TIMESTAMP, new Date(System.currentTimeMillis()), "Timestamp", "A timestamp setting");
121 try {
122 timestampSetting.setRaw("Not a date");
123 fail("Should have bombed");
124 } catch (SettingValidationException e) {
125 e = null;
126 }
127 timestampSetting.delete();
128 }
129
130
131
132
133
134
135
136
137 public void testGetRaw() {
138 Setting s = new Setting(PoemTypeFactory.STRING.getCode(), "testSetting",
139 "eggs", "Test Setting", "A test setting");
140 getDb().getSettingTable().create(s);
141 s.setNullable(true);
142
143
144 assertEquals("eggs", s.getValue());
145 s.setValue(null);
146 s.setNullable(false);
147 PoemThread.commit();
148
149
150 try {
151 s.getRaw();
152
153 } catch (SettingValidationException e) {
154 e.printStackTrace();
155 e = null;
156 }
157 s.delete();
158
159 }
160
161
162
163
164 public void testGetCooked() {
165
166 }
167
168
169
170
171 public void testGetIntegerCooked() {
172 Setting integerSetting = getDb().getSettingTable().ensure("integerSetting",
173 12, "Integer", "A set Integer setting");
174 integerSetting.setRaw(new Integer(13));
175 assertEquals(new Integer(13), integerSetting.getCooked());
176 assertEquals(new Integer(13), integerSetting.getIntegerCooked());
177 integerSetting.setNullable(true);
178 integerSetting.setRaw(null);
179 assertNull(integerSetting.getIntegerCooked());
180 integerSetting.setNullable(false);
181 try {
182 integerSetting.getIntegerCooked();
183 fail("Should have bombed.");
184 } catch (SettingTypeMismatchException e) {
185 e = null;
186 }
187
188 integerSetting.delete();
189 }
190
191
192
193
194 public void testGetStringCooked() {
195 Setting stringSetting = getDb().getSettingTable().ensure("stringSetting",
196 "set", "String", "A set String setting");
197 stringSetting.setRaw("v2");
198 assertEquals("v2", stringSetting.getCooked());
199 assertEquals("v2", stringSetting.getStringCooked());
200 stringSetting.setNullable(true);
201 stringSetting.setRaw(null);
202 assertNull(stringSetting.getStringCooked());
203 stringSetting.setNullable(false);
204 try {
205 stringSetting.getStringCooked();
206 fail("Should have bombed.");
207 } catch (SettingTypeMismatchException e) {
208 e = null;
209 }
210
211 stringSetting.delete();
212
213 }
214
215
216
217
218 public void testGetBooleanCooked() {
219 Setting booleanSetting = getDb().getSettingTable().ensure("booleanSetting",
220 false, "Boolean", "A set boolean setting");
221 booleanSetting.setRaw(Boolean.TRUE);
222 assertEquals(Boolean.TRUE, booleanSetting.getCooked());
223 assertEquals(Boolean.TRUE, booleanSetting.getBooleanCooked());
224 booleanSetting.setNullable(true);
225 booleanSetting.setRaw(null);
226 assertNull(booleanSetting.getBooleanCooked());
227 booleanSetting.setNullable(false);
228 try {
229 booleanSetting.getBooleanCooked();
230 fail("Should have bombed.");
231 } catch (SettingTypeMismatchException e) {
232 e = null;
233 }
234
235 booleanSetting.delete();
236 }
237
238
239
240
241 public void testGetValue() {
242 Setting userSetting = getDb().getSettingTable().ensure("userSetting",
243 PoemTypeFactory.TROID,
244 getDb().guestUser().getTroid(),
245 "User", "A User setting");
246 assertEquals(new Integer(0),userSetting.getCooked());
247 userSetting.delete();
248 }
249
250 }