1 package com.atlassian.config.db;
2
3 import com.atlassian.config.ApplicationConfig;
4 import com.atlassian.config.ApplicationConfiguration;
5 import junit.framework.TestCase;
6
7 public class HibernateConfigTest extends TestCase
8 {
9
10 private HibernateConfig hibernateConfig;
11 private ApplicationConfiguration applicationConfiguration;
12
13 private static interface DatabasePredicate
14 {
15 boolean test();
16 }
17
18 @Override
19 protected void setUp() throws Exception
20 {
21 super.setUp();
22 hibernateConfig = new HibernateConfig();
23 applicationConfiguration = new ApplicationConfig();
24 hibernateConfig.setApplicationConfig(applicationConfiguration);
25 useProperty("hibernate.dialect", "");
26 useProperty(HibernateConfig.HIBERNATE_SETUP, "false");
27 }
28
29 @Override
30 protected void tearDown() throws Exception
31 {
32 super.tearDown();
33 hibernateConfig = null;
34 applicationConfiguration = null;
35 }
36
37 public void testIsHibernateSetup() throws Exception
38 {
39 assertFalse(hibernateConfig.isHibernateSetup());
40 }
41
42 public void testGetHibernateProperties() throws Exception
43 {
44 assertNotNull(hibernateConfig.getHibernateProperties());
45 }
46
47 public void testIsMySql() throws Exception
48 {
49 testIsDatabase("net.sf.hibernate.dialect.MySQLDialect", new DatabasePredicate()
50 {
51 public boolean test()
52 {
53 return hibernateConfig.isMySql();
54 }
55 });
56
57 }
58
59 public void testIsOracle() throws Exception
60 {
61 testIsDatabase("net.sf.hibernate.dialect.OracleDialect", new DatabasePredicate()
62 {
63 public boolean test()
64 {
65 return hibernateConfig.isOracle();
66 }
67 });
68 testIsDatabase("net.sf.hibernate.dialect.Oracle9Dialect", new DatabasePredicate()
69 {
70 public boolean test()
71 {
72 return hibernateConfig.isOracle();
73 }
74 });
75 }
76
77 public void testIsHSQL() throws Exception
78 {
79 testIsDatabase("net.sf.hibernate.dialect.HSQLDialect", new DatabasePredicate()
80 {
81 public boolean test()
82 {
83 return hibernateConfig.isHSQL();
84 }
85 });
86 }
87
88 private void testIsDatabase(final String dialect, final DatabasePredicate p)
89 {
90 assertFalse(p.test());
91 useProperty(HibernateConfig.HIBERNATE_SETUP, "true");
92 assertFalse(p.test());
93
94 useProperty("hibernate.dialect", dialect);
95 assertTrue(p.test());
96 useProperty("hibernate.dialect", "net.sf.hibernate.dialect.ProgressDialect");
97 assertFalse(p.test());
98 }
99
100 private void useProperty(final String key, final String value)
101 {
102 applicationConfiguration.setProperty(key, value);
103 }
104
105 }