private TransactionInterceptor transactionInterceptorWithTransactionManagerName( String transactionManagerName, BeanFactory beanFactory) { return createTransactionInterceptor(beanFactory, transactionManagerName, null); }
@Test public void determineTransactionManagerWithQualifierAndDefaultName() { BeanFactory beanFactory = mock(BeanFactory.class); associateTransactionManager(beanFactory, "defaultTransactionManager"); TransactionInterceptor ti = transactionInterceptorWithTransactionManagerName( "defaultTransactionManager", beanFactory); PlatformTransactionManager fooTransactionManager = associateTransactionManager(beanFactory, "fooTransactionManager"); DefaultTransactionAttribute attribute = new DefaultTransactionAttribute(); attribute.setQualifier("fooTransactionManager"); assertSame(fooTransactionManager, ti.determineTransactionManager(attribute)); }
@Test public void determineTransactionManagerWithQualifierAndDefault() { BeanFactory beanFactory = mock(BeanFactory.class); PlatformTransactionManager transactionManager = mock(PlatformTransactionManager.class); TransactionInterceptor ti = transactionInterceptorWithTransactionManager(transactionManager, beanFactory); PlatformTransactionManager fooTransactionManager = associateTransactionManager(beanFactory, "fooTransactionManager"); DefaultTransactionAttribute attribute = new DefaultTransactionAttribute(); attribute.setQualifier("fooTransactionManager"); assertSame(fooTransactionManager, ti.determineTransactionManager(attribute)); }
@Test public void determineTransactionManagerWithQualifierSeveralTimes() { BeanFactory beanFactory = mock(BeanFactory.class); TransactionInterceptor ti = simpleTransactionInterceptor(beanFactory); PlatformTransactionManager txManager = associateTransactionManager(beanFactory, "fooTransactionManager"); DefaultTransactionAttribute attribute = new DefaultTransactionAttribute(); attribute.setQualifier("fooTransactionManager"); PlatformTransactionManager actual = ti.determineTransactionManager(attribute); assertSame(txManager, actual); // Call again, should be cached PlatformTransactionManager actual2 = ti.determineTransactionManager(attribute); assertSame(txManager, actual2); verify(beanFactory, times(1)).containsBean("fooTransactionManager"); verify(beanFactory, times(1)).getBean("fooTransactionManager", PlatformTransactionManager.class); }
@Test public void determineTransactionManagerWithNoTransactionAttribute() { BeanFactory beanFactory = mock(BeanFactory.class); TransactionInterceptor ti = simpleTransactionInterceptor(beanFactory); assertNull(ti.determineTransactionManager(null)); }
@Test public void determineTransactionManagerWithNoBeanFactoryAndNoTransactionAttribute() { PlatformTransactionManager transactionManager = mock(PlatformTransactionManager.class); TransactionInterceptor ti = transactionInterceptorWithTransactionManager(transactionManager, null); assertSame(transactionManager, ti.determineTransactionManager(null)); }
@Test public void determineTransactionManagerWithEmptyQualifierAndDefaultName() { BeanFactory beanFactory = mock(BeanFactory.class); PlatformTransactionManager defaultTransactionManager = associateTransactionManager(beanFactory, "defaultTransactionManager"); TransactionInterceptor ti = transactionInterceptorWithTransactionManagerName( "defaultTransactionManager", beanFactory); DefaultTransactionAttribute attribute = new DefaultTransactionAttribute(); attribute.setQualifier(""); assertSame(defaultTransactionManager, ti.determineTransactionManager(attribute)); }
@Test public void determineTransactionManagerWithQualifierUnknown() { BeanFactory beanFactory = mock(BeanFactory.class); TransactionInterceptor ti = simpleTransactionInterceptor(beanFactory); DefaultTransactionAttribute attribute = new DefaultTransactionAttribute(); attribute.setQualifier("fooTransactionManager"); thrown.expect(NoSuchBeanDefinitionException.class); thrown.expectMessage("'fooTransactionManager'"); ti.determineTransactionManager(attribute); }
@Test public void determineTransactionManagerWithNoBeanFactory() { PlatformTransactionManager transactionManager = mock(PlatformTransactionManager.class); TransactionInterceptor ti = transactionInterceptorWithTransactionManager(transactionManager, null); assertSame(transactionManager, ti.determineTransactionManager(new DefaultTransactionAttribute())); }
@Test public void determineTransactionManagerWithBeanNameSeveralTimes() { BeanFactory beanFactory = mock(BeanFactory.class); TransactionInterceptor ti = transactionInterceptorWithTransactionManagerName( "fooTransactionManager", beanFactory); PlatformTransactionManager txManager = associateTransactionManager(beanFactory, "fooTransactionManager"); DefaultTransactionAttribute attribute = new DefaultTransactionAttribute(); PlatformTransactionManager actual = ti.determineTransactionManager(attribute); assertSame(txManager, actual); // Call again, should be cached PlatformTransactionManager actual2 = ti.determineTransactionManager(attribute); assertSame(txManager, actual2); verify(beanFactory, times(1)).getBean("fooTransactionManager", PlatformTransactionManager.class); }
private TransactionInterceptor transactionInterceptorWithTransactionManager( PlatformTransactionManager transactionManager, BeanFactory beanFactory) { return createTransactionInterceptor(beanFactory, null, transactionManager); }
@Test public void determineTransactionManagerDefaultSeveralTimes() { BeanFactory beanFactory = mock(BeanFactory.class); TransactionInterceptor ti = simpleTransactionInterceptor(beanFactory); PlatformTransactionManager txManager = mock(PlatformTransactionManager.class); given(beanFactory.getBean(PlatformTransactionManager.class)).willReturn(txManager); DefaultTransactionAttribute attribute = new DefaultTransactionAttribute(); PlatformTransactionManager actual = ti.determineTransactionManager(attribute); assertSame(txManager, actual); // Call again, should be cached PlatformTransactionManager actual2 = ti.determineTransactionManager(attribute); assertSame(txManager, actual2); verify(beanFactory, times(1)).getBean(PlatformTransactionManager.class); }
private TransactionInterceptor simpleTransactionInterceptor(BeanFactory beanFactory) { return createTransactionInterceptor(beanFactory, null, null); }