-package de.juplo.autoconfigure;
-
-
-import com.fasterxml.jackson.core.JsonFactory;
-import de.juplo.jackson.SimpleMapperService;
-import static org.junit.Assert.assertEquals;
-import org.junit.Test;
-import org.springframework.context.annotation.Configuration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.boot.autoconfigure.logging.AutoConfigurationReportLoggingInitializer;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.annotation.AnnotationConfigApplicationContext;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-import org.springframework.beans.factory.NoSuchBeanDefinitionException;
-import org.springframework.context.annotation.Bean;
-
-
-
-public class SimpleMapperServiceAutoConfigurationTest
-{
- private final Logger LOG =
- LoggerFactory.getLogger(SimpleMapperServiceAutoConfigurationTest.class);
-
-
- @Test
- public void emptyConfiguration()
- {
- LOG.info("<-- Start Of New Test-Case!");
-
- ConfigurableApplicationContext context = load(EmptyConfiguration.class);
-
- SimpleMapperService service = context.getBean(SimpleMapperService.class);
- assertNotNull(service);
- assertNotNull(service.getFactory());
- JsonFactory factory = context.getBean(JsonFactory.class);
- assertNotNull(factory);
- assertEquals(factory, service.getFactory());
-
- context.close();
- }
-
- @Test
- public void factoryConfigured()
- {
- LOG.info("<-- Start Of New Test-Case!");
-
- ConfigurableApplicationContext context = load(FactoryConfigured.class);
-
- SimpleMapperService service = context.getBean(SimpleMapperService.class);
- assertNotNull(service);
- assertNotNull(service.getFactory());
- JsonFactory factory = context.getBean(JsonFactory.class);
- assertNotNull(factory);
- assertEquals(FactoryConfigured.factory, factory);
- assertEquals(factory, service.getFactory());
-
- context.close();
- }
-
- @Test
- public void serviceConfigured()
- {
- LOG.info("<-- Start Of New Test-Case!");
-
- ConfigurableApplicationContext context = load(ServiceConfigured.class);
-
- SimpleMapperService service = context.getBean(SimpleMapperService.class);
- assertNotNull(service);
- assertNotNull(service.getFactory());
- assertEquals(ServiceConfigured.factory, service.getFactory());
- try
- {
- context.getBean(JsonFactory.class);
- fail("A bean of type JsonFactory was found!");
- }
- catch(NoSuchBeanDefinitionException e)
- {
- LOG.trace("expected exception", e);
- }
-
- context.close();
- }
-
-
- @Configuration
- static class EmptyConfiguration
- {
- }
-
- @Configuration
- static class FactoryConfigured
- {
- static JsonFactory factory = new JsonFactory();
-
-
- @Bean
- public JsonFactory factory()
- {
- return factory;
- }
- }
-
- @Configuration
- static class ServiceConfigured
- {
- static JsonFactory factory = new JsonFactory();
- static SimpleMapperService service = new SimpleMapperService(factory);
-
-
- @Bean
- public SimpleMapperService service()
- {
- return service;
- }
- }
-
-
- private ConfigurableApplicationContext load(Class<?> config, String... pairs)
- {
- AnnotationConfigApplicationContext ctx =
- new AnnotationConfigApplicationContext();
- ctx.register(config);
- ctx.register(SimpleMapperServiceAutoConfiguration.class); // << Does not work as expected, if the autoconfiguration is registered before the configuration!
- AutoConfigurationReportLoggingInitializer report =
- new AutoConfigurationReportLoggingInitializer();
- report.initialize(ctx);
- ctx.refresh();
- return ctx;
- }
-}