/* * Copyright (c) [2011-2016] "Pivotal Software, Inc." / "Neo Technology" / "Graph Aware Ltd." * * This product is licensed to you under the Apache License, Version 2.0 (the "License"). * You may not use this product except in compliance with the License. * * This product may include a number of subcomponents with * separate copyright notices and license terms. Your use of the source * code for these subcomponents is subject to the terms and * conditions of the subcomponent's license, as noted in the LICENSE file. * */ package org.springframework.data.neo4j.repository.support; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.junit.Test; import org.junit.runner.RunWith; import org.neo4j.ogm.session.Session; import org.neo4j.ogm.session.SessionFactory; import org.neo4j.ogm.testutil.MultiDriverTestClass; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.transaction.Neo4jTransactionManager; import org.springframework.stereotype.Component; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.PlatformTransactionManager; /** * @author Mark Angrish */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes=SessionBeanDefinitionRegistrarPostProcessorTests.Config.class) public class SessionBeanDefinitionRegistrarPostProcessorTests extends MultiDriverTestClass { @Configuration @ComponentScan(includeFilters = @ComponentScan.Filter(TestComponent.class), useDefaultFilters = false) static class Config { @Bean public static SessionBeanDefinitionRegistrarPostProcessor processor() { return new SessionBeanDefinitionRegistrarPostProcessor(); } @Bean public PlatformTransactionManager transactionManager() { return new Neo4jTransactionManager(sessionFactory()); } @Bean public SessionFactory sessionFactory() { return new SessionFactory(getBaseConfiguration().build(), "org.springframework.data.neo4j.examples.friends.domain"); } } @Autowired SessionInjectionTarget target; /** */ @Test public void injectsSessionIntoConstructors() { assertThat(target, is(notNullValue())); assertThat(target.session, is(notNullValue())); } @TestComponent static class SessionInjectionTarget { private final Session session; @Autowired public SessionInjectionTarget(Session session) { this.session = session; } } /** * Annotation to demarcate test components. */ @Component @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @interface TestComponent { } }