|
21 | 21 | import java.sql.SQLException; |
22 | 22 | import java.sql.SQLTimeoutException; |
23 | 23 | import java.util.Collections; |
| 24 | +import java.util.HashMap; |
24 | 25 | import java.util.Map; |
25 | 26 |
|
26 | 27 | import javax.sql.DataSource; |
|
29 | 30 | import org.junit.Before; |
30 | 31 | import org.junit.Test; |
31 | 32 | import org.seasar.doma.boot.DomaPersistenceExceptionTranslator; |
32 | | -import org.seasar.doma.jdbc.*; |
| 33 | +import org.seasar.doma.jdbc.Config; |
| 34 | +import org.seasar.doma.jdbc.EntityListenerProvider; |
| 35 | +import org.seasar.doma.jdbc.GreedyCacheSqlFileRepository; |
| 36 | +import org.seasar.doma.jdbc.JdbcException; |
| 37 | +import org.seasar.doma.jdbc.Naming; |
| 38 | +import org.seasar.doma.jdbc.NoCacheSqlFileRepository; |
| 39 | +import org.seasar.doma.jdbc.SqlFileRepository; |
| 40 | +import org.seasar.doma.jdbc.UtilLoggingJdbcLogger; |
33 | 41 | import org.seasar.doma.jdbc.criteria.Entityql; |
34 | 42 | import org.seasar.doma.jdbc.criteria.NativeSql; |
35 | 43 | import org.seasar.doma.jdbc.dialect.Dialect; |
| 44 | +import org.seasar.doma.jdbc.dialect.H2Dialect; |
36 | 45 | import org.seasar.doma.jdbc.dialect.MysqlDialect; |
37 | 46 | import org.seasar.doma.jdbc.dialect.PostgresDialect; |
38 | 47 | import org.seasar.doma.jdbc.dialect.StandardDialect; |
@@ -197,28 +206,54 @@ public void testSQLExceptionTranslator() { |
197 | 206 | } |
198 | 207 | } |
199 | 208 |
|
200 | | - @Test |
201 | | - public void testAutoRegisteredCriteriaAPI() { |
202 | | - this.context.register(DomaAutoConfiguration.class, DataSourceAutoConfiguration.class); |
203 | | - this.context.refresh(); |
204 | | - Entityql entityql = this.context.getBean(Entityql.class); |
205 | | - assertNotNull(entityql); |
206 | | - NativeSql nativeSql = this.context.getBean(NativeSql.class); |
207 | | - assertNotNull(nativeSql); |
208 | | - } |
| 209 | + @Test |
| 210 | + public void testAutoRegisteredCriteriaAPI() { |
| 211 | + this.context.register(DomaAutoConfiguration.class, DataSourceAutoConfiguration.class); |
| 212 | + this.context.refresh(); |
| 213 | + Entityql entityql = this.context.getBean(Entityql.class); |
| 214 | + assertNotNull(entityql); |
| 215 | + NativeSql nativeSql = this.context.getBean(NativeSql.class); |
| 216 | + assertNotNull(nativeSql); |
| 217 | + } |
| 218 | + |
| 219 | + @Test |
| 220 | + public void testCriteriaAPIWithConfig() { |
| 221 | + this.context.register(MyCriteriaAPIConfig.class, DomaAutoConfiguration.class, |
| 222 | + DataSourceAutoConfiguration.class); |
| 223 | + this.context.refresh(); |
| 224 | + Map<String, Entityql> entityqlBeans = this.context.getBeansOfType(Entityql.class); |
| 225 | + assertEquals(1, entityqlBeans.size()); |
| 226 | + assertNotNull(entityqlBeans.get("myEntityql")); |
| 227 | + Map<String, NativeSql> nativeSqlBeans = this.context.getBeansOfType(NativeSql.class); |
| 228 | + assertEquals(1, nativeSqlBeans.size()); |
| 229 | + assertNotNull(nativeSqlBeans.get("myNativeSql")); |
| 230 | + } |
209 | 231 |
|
210 | | - @Test |
211 | | - public void testCriteriaAPIWithConfig() { |
212 | | - this.context.register(MyCriteriaAPIConfig.class, DomaAutoConfiguration.class, |
213 | | - DataSourceAutoConfiguration.class); |
214 | | - this.context.refresh(); |
215 | | - Map<String, Entityql> entityqlBeans = this.context.getBeansOfType(Entityql.class); |
216 | | - assertEquals(1, entityqlBeans.size()); |
217 | | - assertNotNull(entityqlBeans.get("myEntityql")); |
218 | | - Map<String, NativeSql> nativeSqlBeans = this.context.getBeansOfType(NativeSql.class); |
219 | | - assertEquals(1, nativeSqlBeans.size()); |
220 | | - assertNotNull(nativeSqlBeans.get("myNativeSql")); |
221 | | - } |
| 232 | + @Test |
| 233 | + public void testDialectByDataSourceUrl() { |
| 234 | + MutablePropertySources sources = context.getEnvironment() |
| 235 | + .getPropertySources(); |
| 236 | + sources.addFirst(new MapPropertySource("test", |
| 237 | + Collections.singletonMap("spring.datasource.url", "jdbc:h2:mem:example"))); |
| 238 | + this.context.register(DomaAutoConfiguration.class, DataSourceAutoConfiguration.class); |
| 239 | + this.context.refresh(); |
| 240 | + Dialect dialect = this.context.getBean(Dialect.class); |
| 241 | + assertThat(dialect, is(instanceOf(H2Dialect.class))); |
| 242 | + } |
| 243 | + |
| 244 | + @Test |
| 245 | + public void testDialectByDomaPropertiesIgnoreDataSourceUrl() { |
| 246 | + MutablePropertySources sources = context.getEnvironment() |
| 247 | + .getPropertySources(); |
| 248 | + Map<String, Object> source = new HashMap<>(); |
| 249 | + source.put("spring.datasource.url", "jdbc:h2:mem:example"); |
| 250 | + source.put("doma.dialect", "POSTGRES"); |
| 251 | + sources.addFirst(new MapPropertySource("test", source)); |
| 252 | + this.context.register(DomaAutoConfiguration.class, DataSourceAutoConfiguration.class); |
| 253 | + this.context.refresh(); |
| 254 | + Dialect dialect = this.context.getBean(Dialect.class); |
| 255 | + assertThat(dialect, is(instanceOf(PostgresDialect.class))); |
| 256 | + } |
222 | 257 |
|
223 | 258 | @After |
224 | 259 | public void tearDown() { |
@@ -287,17 +322,17 @@ public static void addEnvironment(ConfigurableApplicationContext context, |
287 | 322 | } |
288 | 323 | } |
289 | 324 |
|
290 | | - @Configuration |
291 | | - public static class MyCriteriaAPIConfig { |
| 325 | + @Configuration |
| 326 | + public static class MyCriteriaAPIConfig { |
292 | 327 |
|
293 | | - @Bean |
294 | | - public Entityql myEntityql(Config config) { |
295 | | - return new Entityql(config); |
296 | | - } |
| 328 | + @Bean |
| 329 | + public Entityql myEntityql(Config config) { |
| 330 | + return new Entityql(config); |
| 331 | + } |
297 | 332 |
|
298 | | - @Bean |
299 | | - public NativeSql myNativeSql(Config config) { |
300 | | - return new NativeSql(config); |
301 | | - } |
302 | | - } |
| 333 | + @Bean |
| 334 | + public NativeSql myNativeSql(Config config) { |
| 335 | + return new NativeSql(config); |
| 336 | + } |
| 337 | + } |
303 | 338 | } |
0 commit comments