From 54f2d150c568aa8e0fdbf9b0e0eac2bba7563819 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 055234a19..451d573d6 100755 --- a/src/test/java/org/springframework/data/repository/support/RepositoriesUnitTests.java +++ b/src/test/java/org/springframework/data/repository/support/RepositoriesUnitTests.java @@ -56,6 +56,7 @@ import org.springframework.util.ClassUtils; * * @author Oliver Gierke * @author Thomas Darimont + * @author Jan Zeppenfeld */ @ExtendWith(MockitoExtension.class) @MockitoSettings(strictness = Strictness.LENIENT) @@ -183,6 +184,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 {}