11package org .seasar .doma .boot .autoconfigure ;
22
3+ import static org .hamcrest .CoreMatchers .containsString ;
34import static org .hamcrest .CoreMatchers .instanceOf ;
45import static org .hamcrest .CoreMatchers .is ;
56import static org .hamcrest .CoreMatchers .notNullValue ;
67import static org .hamcrest .MatcherAssert .assertThat ;
78import static org .junit .jupiter .api .Assertions .assertEquals ;
89import static org .junit .jupiter .api .Assertions .assertFalse ;
910import static org .junit .jupiter .api .Assertions .assertNotNull ;
11+ import static org .junit .jupiter .api .Assertions .assertThrows ;
1012import static org .junit .jupiter .api .Assertions .assertTrue ;
1113import static org .mockito .ArgumentMatchers .anyString ;
1214import static org .mockito .Mockito .mock ;
5557import org .seasar .doma .jdbc .statistic .DefaultStatisticManager ;
5658import org .seasar .doma .jdbc .statistic .StatisticManager ;
5759import org .seasar .doma .message .Message ;
60+ import org .springframework .beans .factory .BeanCreationException ;
5861import org .springframework .beans .factory .NoSuchBeanDefinitionException ;
5962import org .springframework .boot .autoconfigure .jdbc .DataSourceAutoConfiguration ;
6063import org .springframework .boot .autoconfigure .jdbc .JdbcConnectionDetails ;
6972import org .springframework .dao .DataIntegrityViolationException ;
7073import org .springframework .dao .QueryTimeoutException ;
7174import org .springframework .dao .support .PersistenceExceptionTranslator ;
75+ import org .springframework .jdbc .datasource .SimpleDriverDataSource ;
7276import org .springframework .jdbc .datasource .TransactionAwareDataSourceProxy ;
7377
7478public class DomaAutoConfigurationTest {
@@ -279,8 +283,6 @@ public void testDialectByJdbConnectionDetails() {
279283 sources .addFirst (new MapPropertySource ("test" ,
280284 Map .of ("doma.exception-translation-enabled" ,
281285 "false" /* prevent database connections */ )));
282- EnvironmentTestUtils .addEnvironment (this .context ,
283- "doma.exception-translation-enabled:false" ); // Prevent database connections
284286 this .context .register (DomaAutoConfiguration .class , DataSourceAutoConfiguration .class );
285287 this .context .registerBean (JdbcConnectionDetails .class , () -> new JdbcConnectionDetails () {
286288 @ Override
@@ -303,6 +305,37 @@ public String getJdbcUrl() {
303305 assertThat (dialect , is (instanceOf (PostgresDialect .class )));
304306 }
305307
308+ @ Test
309+ public void testDialectMissingJdbConnectionDetails () {
310+ MutablePropertySources sources = context .getEnvironment ()
311+ .getPropertySources ();
312+ sources .addFirst (new MapPropertySource ("test" ,
313+ Map .of ("doma.exception-translation-enabled" ,
314+ "false" /* prevent database connections */ )));
315+ this .context .register (DomaAutoConfiguration .class , DataSourceAutoConfiguration .class );
316+ this .context .registerBean (DataSource .class , SimpleDriverDataSource ::new );
317+ BeanCreationException exception = assertThrows (BeanCreationException .class ,
318+ () -> this .context .refresh ());
319+ assertThat (exception .getMessage (), containsString (
320+ "No connection details available. You will probably have to set 'doma.dialect' explicitly." ));
321+ //Dialect dialect = this.context.getBean(Dialect.class);
322+ //assertThat(dialect, is(instanceOf(PostgresDialect.class)));
323+ }
324+
325+ @ Test
326+ public void testDialectMissingJdbConnectionDetailsExplicitDialect () {
327+ MutablePropertySources sources = context .getEnvironment ()
328+ .getPropertySources ();
329+ sources .addFirst (new MapPropertySource ("test" ,
330+ Map .of ("doma.dialect" , "POSTGRES" , "doma.exception-translation-enabled" ,
331+ "false" /* prevent database connections */ )));
332+ this .context .register (DomaAutoConfiguration .class , DataSourceAutoConfiguration .class );
333+ this .context .registerBean (DataSource .class , SimpleDriverDataSource ::new );
334+ this .context .refresh ();
335+ Dialect dialect = this .context .getBean (Dialect .class );
336+ assertThat (dialect , is (instanceOf (PostgresDialect .class )));
337+ }
338+
306339 @ Test
307340 public void testDialectByDomaPropertiesIgnoreDataSourceUrl () {
308341 MutablePropertySources sources = context .getEnvironment ()
0 commit comments