From 4f3afba7bfa977123b17204cc3790ec2a7d74138 Mon Sep 17 00:00:00 2001 From: Jan Zeppenfeld Date: Mon, 15 Feb 2021 15:58:24 +0100 Subject: [PATCH] Add test for Repositories verifying isPrimary flag. See #1583. Original pull request: #465. --- .../support/RepositoriesUnitTests.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/test/java/org/springframework/data/repository/support/RepositoriesUnitTests.java b/src/test/java/org/springframework/data/repository/support/RepositoriesUnitTests.java index e5789a757..1e3ec2530 100755 --- a/src/test/java/org/springframework/data/repository/support/RepositoriesUnitTests.java +++ b/src/test/java/org/springframework/data/repository/support/RepositoriesUnitTests.java @@ -58,6 +58,7 @@ import org.springframework.util.ClassUtils; * * @author Oliver Gierke * @author Thomas Darimont + * @author Jan Zeppenfeld */ @ExtendWith(MockitoExtension.class) @MockitoSettings(strictness = Strictness.LENIENT) @@ -185,6 +186,28 @@ class RepositoriesUnitTests { }); } + @Test // DATACMNS-1142 + void keepsPrimaryRepositoryInCaseOfMultipleOnesIfContextIsNotAConfigurableListableBeanFactory() { + + DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); + beanFactory.registerBeanDefinition("first", getRepositoryBeanDefinition(FirstRepository.class)); + + AbstractBeanDefinition definition = getRepositoryBeanDefinition(PrimaryRepository.class); + definition.setPrimary(true); + + beanFactory.registerBeanDefinition("primary", definition); + beanFactory.registerBeanDefinition("third", getRepositoryBeanDefinition(ThirdRepository.class)); + + context = new GenericApplicationContext(beanFactory); + context.refresh(); + + Repositories repositories = new Repositories(context); + + assertThat(repositories.getRepositoryFor(SomeEntity.class)).hasValueSatisfying(it -> { + assertThat(it).isInstanceOf(PrimaryRepository.class); + }); + } + class Person {} class Address {}