@Test public void testLookupWhereBeanFactoryYieldsNonDataSourceType() throws Exception { final BeanFactory beanFactory = mock(BeanFactory.class); given(beanFactory.getBean(DATASOURCE_BEAN_NAME, DataSource.class)) .willThrow( new BeanNotOfRequiredTypeException( DATASOURCE_BEAN_NAME, DataSource.class, String.class)); try { BeanFactoryDataSourceLookup lookup = new BeanFactoryDataSourceLookup(beanFactory); lookup.getDataSource(DATASOURCE_BEAN_NAME); fail("should have thrown DataSourceLookupFailureException"); } catch (DataSourceLookupFailureException ex) { /* expected */ } }
@Test public void testLookupSunnyDay() { BeanFactory beanFactory = mock(BeanFactory.class); StubDataSource expectedDataSource = new StubDataSource(); given(beanFactory.getBean(DATASOURCE_BEAN_NAME, DataSource.class)) .willReturn(expectedDataSource); BeanFactoryDataSourceLookup lookup = new BeanFactoryDataSourceLookup(); lookup.setBeanFactory(beanFactory); DataSource dataSource = lookup.getDataSource(DATASOURCE_BEAN_NAME); assertNotNull( "A DataSourceLookup implementation must *never* return null from " + "getDataSource(): this one obviously (and incorrectly) is", dataSource); assertSame(expectedDataSource, dataSource); }
@Test(expected = IllegalStateException.class) public void testLookupWhereBeanFactoryHasNotBeenSupplied() throws Exception { BeanFactoryDataSourceLookup lookup = new BeanFactoryDataSourceLookup(); lookup.getDataSource(DATASOURCE_BEAN_NAME); }