Commit f0e93f0e authored by Stephane Nicoll's avatar Stephane Nicoll

Migrate Couchbase tests to ApplicationContextRunner

parent a1e6a209
...@@ -19,18 +19,16 @@ package org.springframework.boot.autoconfigure.data.couchbase; ...@@ -19,18 +19,16 @@ package org.springframework.boot.autoconfigure.data.couchbase;
import java.util.Collections; import java.util.Collections;
import java.util.Set; import java.util.Set;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration; import org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration;
import org.springframework.boot.autoconfigure.couchbase.CouchbaseProperties; import org.springframework.boot.autoconfigure.couchbase.CouchbaseProperties;
import org.springframework.boot.autoconfigure.couchbase.CouchbaseTestConfigurer; import org.springframework.boot.autoconfigure.couchbase.CouchbaseTestConfigurer;
import org.springframework.boot.autoconfigure.data.couchbase.city.City; import org.springframework.boot.autoconfigure.data.couchbase.city.City;
import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration; import org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration;
import org.springframework.boot.test.util.TestPropertyValues; import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
...@@ -56,101 +54,94 @@ import static org.assertj.core.api.Assertions.assertThat; ...@@ -56,101 +54,94 @@ import static org.assertj.core.api.Assertions.assertThat;
*/ */
class CouchbaseDataAutoConfigurationTests { class CouchbaseDataAutoConfigurationTests {
private AnnotationConfigApplicationContext context; private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(ValidationAutoConfiguration.class,
@AfterEach CouchbaseAutoConfiguration.class, CouchbaseDataAutoConfiguration.class));
void close() {
if (this.context != null) {
this.context.close();
}
}
@Test @Test
void disabledIfCouchbaseIsNotConfigured() { void disabledIfCouchbaseIsNotConfigured() {
load(null); this.contextRunner.run((context) -> assertThat(context).doesNotHaveBean(IndexManager.class));
assertThat(this.context.getBeansOfType(IndexManager.class)).isEmpty();
} }
@Test @Test
void customConfiguration() { void customConfiguration() {
load(CustomCouchbaseConfiguration.class); this.contextRunner.withUserConfiguration(CustomCouchbaseConfiguration.class).run((context) -> {
CouchbaseTemplate couchbaseTemplate = this.context.getBean(CouchbaseTemplate.class); CouchbaseTemplate couchbaseTemplate = context.getBean(CouchbaseTemplate.class);
assertThat(couchbaseTemplate.getDefaultConsistency()).isEqualTo(Consistency.STRONGLY_CONSISTENT); assertThat(couchbaseTemplate.getDefaultConsistency()).isEqualTo(Consistency.STRONGLY_CONSISTENT);
});
} }
@Test @Test
void validatorIsPresent() { void validatorIsPresent() {
load(CouchbaseTestConfigurer.class); this.contextRunner.withUserConfiguration(CouchbaseTestConfigurer.class)
assertThat(this.context.getBeansOfType(ValidatingCouchbaseEventListener.class)).hasSize(1); .run((context) -> assertThat(context).hasSingleBean(ValidatingCouchbaseEventListener.class));
} }
@Test @Test
void autoIndexIsDisabledByDefault() { void autoIndexIsDisabledByDefault() {
load(CouchbaseTestConfigurer.class); this.contextRunner.withUserConfiguration(CouchbaseTestConfigurer.class).run((context) -> {
IndexManager indexManager = this.context.getBean(IndexManager.class); IndexManager indexManager = context.getBean(IndexManager.class);
assertThat(indexManager.isIgnoreViews()).isTrue(); assertThat(indexManager.isIgnoreViews()).isTrue();
assertThat(indexManager.isIgnoreN1qlPrimary()).isTrue(); assertThat(indexManager.isIgnoreN1qlPrimary()).isTrue();
assertThat(indexManager.isIgnoreN1qlSecondary()).isTrue(); assertThat(indexManager.isIgnoreN1qlSecondary()).isTrue();
});
} }
@Test @Test
void enableAutoIndex() { void enableAutoIndex() {
load(CouchbaseTestConfigurer.class, "spring.data.couchbase.auto-index=true"); this.contextRunner.withUserConfiguration(CouchbaseTestConfigurer.class)
IndexManager indexManager = this.context.getBean(IndexManager.class); .withPropertyValues("spring.data.couchbase.auto-index=true").run((context) -> {
assertThat(indexManager.isIgnoreViews()).isFalse(); IndexManager indexManager = context.getBean(IndexManager.class);
assertThat(indexManager.isIgnoreN1qlPrimary()).isFalse(); assertThat(indexManager.isIgnoreViews()).isFalse();
assertThat(indexManager.isIgnoreN1qlSecondary()).isFalse(); assertThat(indexManager.isIgnoreN1qlPrimary()).isFalse();
assertThat(indexManager.isIgnoreN1qlSecondary()).isFalse();
});
} }
@Test @Test
void changeConsistency() { void changeConsistency() {
load(CouchbaseTestConfigurer.class, "spring.data.couchbase.consistency=eventually-consistent"); this.contextRunner.withUserConfiguration(CouchbaseTestConfigurer.class)
SpringBootCouchbaseDataConfiguration configuration = this.context .withPropertyValues("spring.data.couchbase.consistency=eventually-consistent").run((context) -> {
.getBean(SpringBootCouchbaseDataConfiguration.class); SpringBootCouchbaseDataConfiguration configuration = context
assertThat(configuration.getDefaultConsistency()).isEqualTo(Consistency.EVENTUALLY_CONSISTENT); .getBean(SpringBootCouchbaseDataConfiguration.class);
assertThat(configuration.getDefaultConsistency()).isEqualTo(Consistency.EVENTUALLY_CONSISTENT);
});
} }
@Test @Test
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
void entityScanShouldSetInitialEntitySet() { void entityScanShouldSetInitialEntitySet() {
load(EntityScanConfig.class); this.contextRunner.withUserConfiguration(EntityScanConfig.class).run((context) -> {
CouchbaseMappingContext mappingContext = this.context.getBean(CouchbaseMappingContext.class); CouchbaseMappingContext mappingContext = context.getBean(CouchbaseMappingContext.class);
Set<Class<?>> initialEntitySet = (Set<Class<?>>) ReflectionTestUtils.getField(mappingContext, Set<Class<?>> initialEntitySet = (Set<Class<?>>) ReflectionTestUtils.getField(mappingContext,
"initialEntitySet"); "initialEntitySet");
assertThat(initialEntitySet).containsOnly(City.class); assertThat(initialEntitySet).containsOnly(City.class);
});
} }
@Test @Test
void typeKeyDefault() { void typeKeyDefault() {
load(CouchbaseTestConfigurer.class); this.contextRunner.withUserConfiguration(CouchbaseTestConfigurer.class)
assertThat(this.context.getBean(AbstractCouchbaseDataConfiguration.class).typeKey()) .run((context) -> assertThat(context.getBean(AbstractCouchbaseDataConfiguration.class).typeKey())
.isEqualTo(DefaultCouchbaseTypeMapper.DEFAULT_TYPE_KEY); .isEqualTo(DefaultCouchbaseTypeMapper.DEFAULT_TYPE_KEY));
} }
@Test @Test
void typeKeyCanBeCustomized() { void typeKeyCanBeCustomized() {
load(CouchbaseTestConfigurer.class, "spring.data.couchbase.type-key=_custom"); this.contextRunner.withUserConfiguration(CouchbaseTestConfigurer.class)
assertThat(this.context.getBean(AbstractCouchbaseDataConfiguration.class).typeKey()).isEqualTo("_custom"); .withPropertyValues("spring.data.couchbase.type-key=_custom")
.run((context) -> assertThat(context.getBean(AbstractCouchbaseDataConfiguration.class).typeKey())
.isEqualTo("_custom"));
} }
@Test @Test
void customConversions() { void customConversions() {
load(CustomConversionsConfig.class); this.contextRunner.withUserConfiguration(CustomConversionsConfig.class).run((context) -> {
CouchbaseTemplate template = this.context.getBean(CouchbaseTemplate.class); CouchbaseTemplate template = context.getBean(CouchbaseTemplate.class);
assertThat(template.getConverter().getConversionService().canConvert(CouchbaseProperties.class, Boolean.class)) assertThat(
.isTrue(); template.getConverter().getConversionService().canConvert(CouchbaseProperties.class, Boolean.class))
} .isTrue();
});
private void load(Class<?> config, String... environment) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
TestPropertyValues.of(environment).applyTo(context);
if (config != null) {
context.register(config);
}
context.register(PropertyPlaceholderAutoConfiguration.class, ValidationAutoConfiguration.class,
CouchbaseAutoConfiguration.class, CouchbaseDataAutoConfiguration.class);
context.refresh();
this.context = context;
} }
@Configuration @Configuration
......
/* /*
* Copyright 2012-2019 the original author or authors. * Copyright 2012-2020 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -19,7 +19,6 @@ package org.springframework.boot.autoconfigure.data.couchbase; ...@@ -19,7 +19,6 @@ package org.springframework.boot.autoconfigure.data.couchbase;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage; import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage;
...@@ -27,8 +26,7 @@ import org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfigurati ...@@ -27,8 +26,7 @@ import org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfigurati
import org.springframework.boot.autoconfigure.couchbase.CouchbaseTestConfigurer; import org.springframework.boot.autoconfigure.couchbase.CouchbaseTestConfigurer;
import org.springframework.boot.autoconfigure.data.couchbase.city.CityRepository; import org.springframework.boot.autoconfigure.data.couchbase.city.CityRepository;
import org.springframework.boot.autoconfigure.data.couchbase.city.ReactiveCityRepository; import org.springframework.boot.autoconfigure.data.couchbase.city.ReactiveCityRepository;
import org.springframework.boot.test.util.TestPropertyValues; import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.ImportSelector; import org.springframework.context.annotation.ImportSelector;
...@@ -47,21 +45,12 @@ import static org.assertj.core.api.Assertions.assertThat; ...@@ -47,21 +45,12 @@ import static org.assertj.core.api.Assertions.assertThat;
*/ */
class CouchbaseReactiveAndImperativeRepositoriesAutoConfigurationTests { class CouchbaseReactiveAndImperativeRepositoriesAutoConfigurationTests {
private AnnotationConfigApplicationContext context;
@AfterEach
void close() {
this.context.close();
}
@Test @Test
void shouldCreateInstancesForReactiveAndImperativeRepositories() { void shouldCreateInstancesForReactiveAndImperativeRepositories() {
this.context = new AnnotationConfigApplicationContext(); new ApplicationContextRunner()
TestPropertyValues.of("spring.datasource.initialization-mode:never").applyTo(this.context); .withUserConfiguration(ImperativeAndReactiveConfiguration.class, BaseConfiguration.class)
this.context.register(ImperativeAndReactiveConfiguration.class, BaseConfiguration.class); .withPropertyValues("spring.datasource.initialization-mode:never").run((context) -> assertThat(context)
this.context.refresh(); .hasSingleBean(CityRepository.class).hasSingleBean(ReactiveCityRepository.class));
assertThat(this.context.getBean(CityRepository.class)).isNotNull();
assertThat(this.context.getBean(ReactiveCityRepository.class)).isNotNull();
} }
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
......
/* /*
* Copyright 2012-2019 the original author or authors. * Copyright 2012-2020 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -19,18 +19,16 @@ package org.springframework.boot.autoconfigure.data.couchbase; ...@@ -19,18 +19,16 @@ package org.springframework.boot.autoconfigure.data.couchbase;
import java.util.Collections; import java.util.Collections;
import java.util.Set; import java.util.Set;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration; import org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration;
import org.springframework.boot.autoconfigure.couchbase.CouchbaseProperties; import org.springframework.boot.autoconfigure.couchbase.CouchbaseProperties;
import org.springframework.boot.autoconfigure.couchbase.CouchbaseTestConfigurer; import org.springframework.boot.autoconfigure.couchbase.CouchbaseTestConfigurer;
import org.springframework.boot.autoconfigure.data.couchbase.city.City; import org.springframework.boot.autoconfigure.data.couchbase.city.City;
import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration; import org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration;
import org.springframework.boot.test.util.TestPropertyValues; import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
...@@ -52,66 +50,52 @@ import static org.assertj.core.api.Assertions.assertThat; ...@@ -52,66 +50,52 @@ import static org.assertj.core.api.Assertions.assertThat;
* Tests for {@link CouchbaseReactiveDataAutoConfiguration}. * Tests for {@link CouchbaseReactiveDataAutoConfiguration}.
* *
* @author Alex Derkach * @author Alex Derkach
* @author Stephane Nicoll
*/ */
class CouchbaseReactiveDataAutoConfigurationTests { class CouchbaseReactiveDataAutoConfigurationTests {
private AnnotationConfigApplicationContext context; private final ApplicationContextRunner contextRunner = new ApplicationContextRunner().withConfiguration(
AutoConfigurations.of(ValidationAutoConfiguration.class, CouchbaseAutoConfiguration.class,
@AfterEach CouchbaseDataAutoConfiguration.class, CouchbaseReactiveDataAutoConfiguration.class));
void close() {
if (this.context != null) {
this.context.close();
}
}
@Test @Test
void disabledIfCouchbaseIsNotConfigured() { void disabledIfCouchbaseIsNotConfigured() {
load(null); this.contextRunner.run((context) -> assertThat(context).doesNotHaveBean(IndexManager.class));
assertThat(this.context.getBeansOfType(IndexManager.class)).isEmpty();
} }
@Test @Test
void customConfiguration() { void customConfiguration() {
load(CustomCouchbaseConfiguration.class); this.contextRunner.withUserConfiguration(CustomCouchbaseConfiguration.class).run((context) -> {
RxJavaCouchbaseTemplate rxJavaCouchbaseTemplate = this.context.getBean(RxJavaCouchbaseTemplate.class); RxJavaCouchbaseTemplate rxJavaCouchbaseTemplate = context.getBean(RxJavaCouchbaseTemplate.class);
assertThat(rxJavaCouchbaseTemplate.getDefaultConsistency()).isEqualTo(Consistency.STRONGLY_CONSISTENT); assertThat(rxJavaCouchbaseTemplate.getDefaultConsistency()).isEqualTo(Consistency.STRONGLY_CONSISTENT);
});
} }
@Test @Test
void validatorIsPresent() { void validatorIsPresent() {
load(CouchbaseTestConfigurer.class); this.contextRunner.withUserConfiguration(CouchbaseTestConfigurer.class)
assertThat(this.context.getBeansOfType(ValidatingCouchbaseEventListener.class)).hasSize(1); .run((context) -> assertThat(context).hasSingleBean(ValidatingCouchbaseEventListener.class));
} }
@Test @Test
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
void entityScanShouldSetInitialEntitySet() { void entityScanShouldSetInitialEntitySet() {
load(EntityScanConfig.class); this.contextRunner.withUserConfiguration(EntityScanConfig.class).run((context) -> {
CouchbaseMappingContext mappingContext = this.context.getBean(CouchbaseMappingContext.class); CouchbaseMappingContext mappingContext = context.getBean(CouchbaseMappingContext.class);
Set<Class<?>> initialEntitySet = (Set<Class<?>>) ReflectionTestUtils.getField(mappingContext, Set<Class<?>> initialEntitySet = (Set<Class<?>>) ReflectionTestUtils.getField(mappingContext,
"initialEntitySet"); "initialEntitySet");
assertThat(initialEntitySet).containsOnly(City.class); assertThat(initialEntitySet).containsOnly(City.class);
});
} }
@Test @Test
void customConversions() { void customConversions() {
load(CustomConversionsConfig.class); this.contextRunner.withUserConfiguration(CustomConversionsConfig.class).run((context) -> {
RxJavaCouchbaseTemplate template = this.context.getBean(RxJavaCouchbaseTemplate.class); RxJavaCouchbaseTemplate template = context.getBean(RxJavaCouchbaseTemplate.class);
assertThat(template.getConverter().getConversionService().canConvert(CouchbaseProperties.class, Boolean.class)) assertThat(
.isTrue(); template.getConverter().getConversionService().canConvert(CouchbaseProperties.class, Boolean.class))
} .isTrue();
});
private void load(Class<?> config, String... environment) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
TestPropertyValues.of(environment).applyTo(context);
if (config != null) {
context.register(config);
}
context.register(PropertyPlaceholderAutoConfiguration.class, ValidationAutoConfiguration.class,
CouchbaseAutoConfiguration.class, CouchbaseDataAutoConfiguration.class,
CouchbaseReactiveDataAutoConfiguration.class);
context.refresh();
this.context = context;
} }
@Configuration @Configuration
......
/* /*
* Copyright 2012-2019 the original author or authors. * Copyright 2012-2020 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -16,11 +16,10 @@ ...@@ -16,11 +16,10 @@
package org.springframework.boot.autoconfigure.data.couchbase; package org.springframework.boot.autoconfigure.data.couchbase;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage; import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage;
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
import org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration; import org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration;
import org.springframework.boot.autoconfigure.couchbase.CouchbaseTestConfigurer; import org.springframework.boot.autoconfigure.couchbase.CouchbaseTestConfigurer;
import org.springframework.boot.autoconfigure.data.alt.couchbase.CityCouchbaseRepository; import org.springframework.boot.autoconfigure.data.alt.couchbase.CityCouchbaseRepository;
...@@ -28,8 +27,7 @@ import org.springframework.boot.autoconfigure.data.alt.couchbase.ReactiveCityCou ...@@ -28,8 +27,7 @@ import org.springframework.boot.autoconfigure.data.alt.couchbase.ReactiveCityCou
import org.springframework.boot.autoconfigure.data.couchbase.city.City; import org.springframework.boot.autoconfigure.data.couchbase.city.City;
import org.springframework.boot.autoconfigure.data.couchbase.city.ReactiveCityRepository; import org.springframework.boot.autoconfigure.data.couchbase.city.ReactiveCityRepository;
import org.springframework.boot.autoconfigure.data.empty.EmptyDataPackage; import org.springframework.boot.autoconfigure.data.empty.EmptyDataPackage;
import org.springframework.boot.test.util.TestPropertyValues; import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
import org.springframework.data.couchbase.repository.config.EnableCouchbaseRepositories; import org.springframework.data.couchbase.repository.config.EnableCouchbaseRepositories;
...@@ -40,65 +38,50 @@ import static org.assertj.core.api.Assertions.assertThat; ...@@ -40,65 +38,50 @@ import static org.assertj.core.api.Assertions.assertThat;
* Tests for {@link CouchbaseReactiveRepositoriesAutoConfiguration}. * Tests for {@link CouchbaseReactiveRepositoriesAutoConfiguration}.
* *
* @author Alex Derkach * @author Alex Derkach
* @author Stephane Nicoll
*/ */
class CouchbaseReactiveRepositoriesAutoConfigurationTests { class CouchbaseReactiveRepositoriesAutoConfigurationTests {
private AnnotationConfigApplicationContext context; private final ApplicationContextRunner contextRunner = new ApplicationContextRunner().withConfiguration(
AutoConfigurations.of(CouchbaseAutoConfiguration.class, CouchbaseDataAutoConfiguration.class,
@AfterEach CouchbaseRepositoriesAutoConfiguration.class, CouchbaseReactiveDataAutoConfiguration.class,
void close() { CouchbaseReactiveRepositoriesAutoConfiguration.class));
if (this.context != null) {
this.context.close();
}
}
@Test @Test
void couchbaseNotAvailable() { void couchbaseNotAvailable() {
load(null); this.contextRunner.run((context) -> assertThat(context).doesNotHaveBean(ReactiveCityRepository.class));
assertThat(this.context.getBeansOfType(ReactiveCityRepository.class)).hasSize(0);
} }
@Test @Test
void defaultRepository() { void defaultRepository() {
load(DefaultConfiguration.class); this.contextRunner.withUserConfiguration(DefaultConfiguration.class)
assertThat(this.context.getBeansOfType(ReactiveCityRepository.class)).hasSize(1); .run((context) -> assertThat(context).hasSingleBean(ReactiveCityRepository.class));
} }
@Test @Test
void imperativeRepositories() { void imperativeRepositories() {
load(DefaultConfiguration.class, "spring.data.couchbase.repositories.type=imperative"); this.contextRunner.withUserConfiguration(DefaultConfiguration.class)
assertThat(this.context.getBeansOfType(ReactiveCityRepository.class)).hasSize(0); .withPropertyValues("spring.data.couchbase.repositories.type=imperative")
.run((context) -> assertThat(context).doesNotHaveBean(ReactiveCityRepository.class));
} }
@Test @Test
void disabledRepositories() { void disabledRepositories() {
load(DefaultConfiguration.class, "spring.data.couchbase.repositories.type=none"); this.contextRunner.withUserConfiguration(DefaultConfiguration.class)
assertThat(this.context.getBeansOfType(ReactiveCityRepository.class)).hasSize(0); .withPropertyValues("spring.data.couchbase.repositories.type=none")
.run((context) -> assertThat(context).doesNotHaveBean(ReactiveCityRepository.class));
} }
@Test @Test
void noRepositoryAvailable() { void noRepositoryAvailable() {
load(NoRepositoryConfiguration.class); this.contextRunner.withUserConfiguration(NoRepositoryConfiguration.class)
assertThat(this.context.getBeansOfType(ReactiveCityRepository.class)).hasSize(0); .run((context) -> assertThat(context).doesNotHaveBean(ReactiveCityRepository.class));
} }
@Test @Test
void doesNotTriggerDefaultRepositoryDetectionIfCustomized() { void doesNotTriggerDefaultRepositoryDetectionIfCustomized() {
load(CustomizedConfiguration.class); this.contextRunner.withUserConfiguration(CustomizedConfiguration.class)
assertThat(this.context.getBeansOfType(ReactiveCityCouchbaseRepository.class)).isEmpty(); .run((context) -> assertThat(context).doesNotHaveBean(ReactiveCityCouchbaseRepository.class));
}
private void load(Class<?> config, String... environment) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
TestPropertyValues.of(environment).applyTo(context);
if (config != null) {
context.register(config);
}
context.register(PropertyPlaceholderAutoConfiguration.class, CouchbaseAutoConfiguration.class,
CouchbaseDataAutoConfiguration.class, CouchbaseRepositoriesAutoConfiguration.class,
CouchbaseReactiveDataAutoConfiguration.class, CouchbaseReactiveRepositoriesAutoConfiguration.class);
context.refresh();
this.context = context;
} }
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
......
/* /*
* Copyright 2012-2019 the original author or authors. * Copyright 2012-2020 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -16,18 +16,16 @@ ...@@ -16,18 +16,16 @@
package org.springframework.boot.autoconfigure.data.couchbase; package org.springframework.boot.autoconfigure.data.couchbase;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage; import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage;
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
import org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration; import org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration;
import org.springframework.boot.autoconfigure.couchbase.CouchbaseTestConfigurer; import org.springframework.boot.autoconfigure.couchbase.CouchbaseTestConfigurer;
import org.springframework.boot.autoconfigure.data.couchbase.city.City; import org.springframework.boot.autoconfigure.data.couchbase.city.City;
import org.springframework.boot.autoconfigure.data.couchbase.city.CityRepository; import org.springframework.boot.autoconfigure.data.couchbase.city.CityRepository;
import org.springframework.boot.autoconfigure.data.empty.EmptyDataPackage; import org.springframework.boot.autoconfigure.data.empty.EmptyDataPackage;
import org.springframework.boot.test.util.TestPropertyValues; import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
...@@ -41,55 +39,39 @@ import static org.assertj.core.api.Assertions.assertThat; ...@@ -41,55 +39,39 @@ import static org.assertj.core.api.Assertions.assertThat;
*/ */
class CouchbaseRepositoriesAutoConfigurationTests { class CouchbaseRepositoriesAutoConfigurationTests {
private AnnotationConfigApplicationContext context; private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(CouchbaseAutoConfiguration.class,
@AfterEach CouchbaseDataAutoConfiguration.class, CouchbaseRepositoriesAutoConfiguration.class));
void close() {
if (this.context != null) {
this.context.close();
}
}
@Test @Test
void couchbaseNotAvailable() { void couchbaseNotAvailable() {
load(null); this.contextRunner.run((context) -> assertThat(context).doesNotHaveBean(CityRepository.class));
assertThat(this.context.getBeansOfType(CityRepository.class)).hasSize(0);
} }
@Test @Test
void defaultRepository() { void defaultRepository() {
load(DefaultConfiguration.class); this.contextRunner.withUserConfiguration(DefaultConfiguration.class)
assertThat(this.context.getBeansOfType(CityRepository.class)).hasSize(1); .run((context) -> assertThat(context).hasSingleBean(CityRepository.class));
} }
@Test @Test
void reactiveRepositories() { void reactiveRepositories() {
load(DefaultConfiguration.class, "spring.data.couchbase.repositories.type=reactive"); this.contextRunner.withUserConfiguration(DefaultConfiguration.class)
assertThat(this.context.getBeansOfType(CityRepository.class)).hasSize(0); .withPropertyValues("spring.data.couchbase.repositories.type=reactive")
.run((context) -> assertThat(context).doesNotHaveBean(CityRepository.class));
} }
@Test @Test
void disabledRepositories() { void disabledRepositories() {
load(DefaultConfiguration.class, "spring.data.couchbase.repositories.type=none"); this.contextRunner.withUserConfiguration(DefaultConfiguration.class)
assertThat(this.context.getBeansOfType(CityRepository.class)).hasSize(0); .withPropertyValues("spring.data.couchbase.repositories.type=none")
.run((context) -> assertThat(context).doesNotHaveBean(CityRepository.class));
} }
@Test @Test
void noRepositoryAvailable() { void noRepositoryAvailable() {
load(NoRepositoryConfiguration.class); this.contextRunner.withUserConfiguration(NoRepositoryConfiguration.class)
assertThat(this.context.getBeansOfType(CityRepository.class)).hasSize(0); .run((context) -> assertThat(context).doesNotHaveBean(CityRepository.class));
}
private void load(Class<?> config, String... environment) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
TestPropertyValues.of(environment).applyTo(context);
if (config != null) {
context.register(config);
}
context.register(PropertyPlaceholderAutoConfiguration.class, CouchbaseAutoConfiguration.class,
CouchbaseDataAutoConfiguration.class, CouchbaseRepositoriesAutoConfiguration.class);
context.refresh();
this.context = context;
} }
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment