public void testRepository() {
BeanDefinition beanDefinition = beanFactory.getBeanDefinition("testRepository");
assertNotNull("BeanDefinition not created", beanDefinition);
assertEquals("Wrong number of arguments", 3, beanDefinition.getConstructorArgumentValues().getArgumentCount());
ValueHolder firstArgument = beanDefinition.getConstructorArgumentValues().getArgumentValue(0,
AggregateFactory.class);
assertNotNull("First argument is wrong", firstArgument);
assertEquals("First argument is wrong", GenericAggregateFactory.class,
((GenericBeanDefinition) firstArgument.getValue()).getBeanClass());
assertEquals("First argument is wrong", EventSourcedAggregateRootMock.class.getName(),
((GenericBeanDefinition) firstArgument.getValue()).getConstructorArgumentValues().getIndexedArgumentValue(0, String.class).getValue());
ValueHolder secondArgument = beanDefinition.getConstructorArgumentValues()
.getArgumentValue(1, BeanDefinition.class);
assertNotNull("Second argument is wrong", secondArgument);
assertTrue("Second argument is wrong", secondArgument.getValue() instanceof RuntimeBeanReference);
assertEquals("Second argument is wrong", "eventStore",
((RuntimeBeanReference) secondArgument.getValue()).getBeanName());
ValueHolder thirdArgument = beanDefinition.getConstructorArgumentValues()
.getArgumentValue(2, BeanDefinition.class);
assertNotNull("Third argument is wrong", thirdArgument);
assertTrue("Third argument is wrong", thirdArgument.getValue() instanceof BeanDefinition);
assertEquals("Third argument is wrong",
PessimisticLockManager.class.getName(),
((BeanDefinition) thirdArgument.getValue()).getBeanClassName());
PropertyValue eventBusPropertyValue = beanDefinition.getPropertyValues().getPropertyValue("eventBus");
assertNotNull("Property missing", eventBusPropertyValue);
RuntimeBeanReference eventBusReference = (RuntimeBeanReference) eventBusPropertyValue.getValue();
assertEquals("Wrong reference", "eventBus", eventBusReference.getBeanName());