View Javadoc
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   * @author timp
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     * @see org.melati.poem.Setting#setValue(String)
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     * @see org.melati.poem.Setting#getValueField()
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     * @see org.melati.poem.Setting#Setting(Integer, String, String, String,
86     *      String)
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     * @see org.melati.poem.Setting#setRaw(Object)
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    * FIXME Should we be able to change nullability?
132    * You cannot change the type, so hard to see how 
133    * Exception could be thrown in getRaw().
134    * 
135    * @see org.melati.poem.Setting#getRaw()
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     //System.err.println("Type:"+ s.getType());
143     //System.err.println("Nullable:"+ s.toTypeParameter().getNullable());
144     assertEquals("eggs", s.getValue());
145     s.setValue(null);
146     s.setNullable(false);
147     PoemThread.commit();
148     //System.err.println("Nullable:"+ s.toTypeParameter().getNullable());
149     //System.err.println("Type:"+ s.getType());
150     try {
151       s.getRaw();
152      // fail("Should have blown up.");
153     } catch (SettingValidationException e) {
154       e.printStackTrace();
155       e = null;
156     }
157     s.delete();
158 
159   }
160 
161   /**
162    * @see org.melati.poem.Setting#getCooked()
163    */
164   public void testGetCooked() {
165 
166   }
167 
168   /**
169    * @see org.melati.poem.Setting#getIntegerCooked()
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    * @see org.melati.poem.Setting#getStringCooked()
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    * @see org.melati.poem.Setting#getBooleanCooked()
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    * @see org.melati.poem.Setting#getValue()
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 }