public void ReplaceService_wraps_service_and_returns_wrapped_service() { var originalService = new Mock <IPilkington>().Object; var wrappedService = new Mock <IPilkington>().Object; var resolver = new Mock <IDbDependencyResolver>(); resolver.Setup(m => m.GetService(typeof(IPilkington), "Foo")).Returns(originalService); var internalConfiguration = new DbConfiguration().InternalConfiguration; internalConfiguration.AddDependencyResolver(resolver.Object); new DbConfigurationEventArgs(internalConfiguration) .ReplaceService <IPilkington>( (s, k) => { Assert.Same(originalService, s); Assert.Equal("Foo", k); return(wrappedService); }); Assert.Same(wrappedService, internalConfiguration.DependencyResolver.GetService <IPilkington>("Foo")); resolver.Verify(m => m.GetService(typeof(IPilkington), "Foo")); }
public void ResolverSnapshot_returns_copy_of_resolver_chain() { var configuration = new DbConfiguration().InternalConfiguration; var resolver1 = new Mock <IDbDependencyResolver>(); configuration.AddDependencyResolver(resolver1.Object); var snapshot = configuration.ResolverSnapshot; var resolver2 = new Mock <IDbDependencyResolver>(); configuration.AddDependencyResolver(resolver2.Object); snapshot.GetService <object>("Foo"); resolver1.Verify(m => m.GetService(typeof(object), "Foo"), Times.Once()); resolver2.Verify(m => m.GetService(typeof(object), "Foo"), Times.Never()); }
public void SwitchInRootResolver_leaves_other_resolvers_intact() { var configuration = new DbConfiguration().InternalConfiguration; var mockResolver = new Mock <IDbDependencyResolver>(); configuration.AddDependencyResolver(mockResolver.Object); configuration.SwitchInRootResolver(new Mock <RootDependencyResolver>().Object); configuration.DependencyResolver.GetService <object>("Foo"); mockResolver.Verify(m => m.GetService(typeof(object), "Foo")); }
public void ResolverSnapshot_returns_resolvers_in_correct_order() { var callOrder = ""; var configResolver = new Mock <IDbDependencyResolver>(); configResolver.Setup(m => m.GetService(typeof(object), "Foo")).Callback(() => callOrder += " Config"); var configChain = new ResolverChain(); configChain.Add(configResolver.Object); var rootResolver = new Mock <RootDependencyResolver>(); rootResolver.Setup(m => m.GetService(typeof(object), "Foo")).Callback(() => callOrder += " Root"); var configuration = new DbConfiguration( new InternalConfiguration( configChain, new ResolverChain(), rootResolver.Object, new Mock <AppConfigDependencyResolver>().Object)).InternalConfiguration; var normalResolver = new Mock <IDbDependencyResolver>(); normalResolver.Setup(m => m.GetService(typeof(object), "Foo")).Callback(() => callOrder += " Normal"); configuration.AddDependencyResolver(normalResolver.Object); var overrideResolver = new Mock <IDbDependencyResolver>(); overrideResolver.Setup(m => m.GetService(typeof(object), "Foo")).Callback(() => callOrder += " Override"); configuration.AddDependencyResolver(overrideResolver.Object, overrideConfigFile: true); configuration.ResolverSnapshot.GetService <object>("Foo"); Assert.Equal(" Override Config Normal Root", callOrder); }
public void AddDependencyResolver_throws_if_the_configuation_is_locked() { var configuration = new DbConfiguration(); configuration.Lock(); Assert.Equal( Strings.ConfigurationLocked("AddDependencyResolver"), Assert.Throws<InvalidOperationException>( () => configuration.AddDependencyResolver(new Mock<IDbDependencyResolver>().Object)).Message); }
public void SwitchInRootResolver_leaves_other_resolvers_intact() { var configuration = new DbConfiguration(); var mockResolver = new Mock<IDbDependencyResolver>(); configuration.AddDependencyResolver(mockResolver.Object); configuration.SwitchInRootResolver(new Mock<RootDependencyResolver>().Object); configuration.DependencyResolver.GetService<object>("Foo"); mockResolver.Verify(m => m.GetService(typeof(object), "Foo")); }
public void ReplaceService_wraps_service_and_returns_wrapped_service() { var originalService = new Mock<IPilkington>().Object; var wrappedService = new Mock<IPilkington>().Object; var resolver = new Mock<IDbDependencyResolver>(); resolver.Setup(m => m.GetService(typeof(IPilkington), "Foo")).Returns(originalService); var internalConfiguration = new DbConfiguration().InternalConfiguration; internalConfiguration.AddDependencyResolver(resolver.Object); new DbConfigurationEventArgs(internalConfiguration) .ReplaceService<IPilkington>( (s, k) => { Assert.Same(originalService, s); Assert.Equal("Foo", k); return wrappedService; }); Assert.Same(wrappedService, internalConfiguration.DependencyResolver.GetService<IPilkington>("Foo")); resolver.Verify(m => m.GetService(typeof(IPilkington), "Foo")); }
public void ResolverSnapshot_returns_resolvers_in_correct_order() { var callOrder = ""; var configResolver = new Mock<IDbDependencyResolver>(); configResolver.Setup(m => m.GetService(typeof(object), "Foo")).Callback(() => callOrder += " Config"); var configChain = new ResolverChain(); configChain.Add(configResolver.Object); var rootResolver = new Mock<RootDependencyResolver>(); rootResolver.Setup(m => m.GetService(typeof(object), "Foo")).Callback(() => callOrder += " Root"); var configuration = new DbConfiguration( new InternalConfiguration( configChain, new ResolverChain(), rootResolver.Object, new Mock<AppConfigDependencyResolver>().Object)).InternalConfiguration; var normalResolver = new Mock<IDbDependencyResolver>(); normalResolver.Setup(m => m.GetService(typeof(object), "Foo")).Callback(() => callOrder += " Normal"); configuration.AddDependencyResolver(normalResolver.Object); var overrideResolver = new Mock<IDbDependencyResolver>(); overrideResolver.Setup(m => m.GetService(typeof(object), "Foo")).Callback(() => callOrder += " Override"); configuration.AddDependencyResolver(overrideResolver.Object, overrideConfigFile: true); configuration.ResolverSnapshot.GetService<object>("Foo"); Assert.Equal(" Override Config Normal Root", callOrder); }
public void ResolverSnapshot_returns_copy_of_resolver_chain() { var configuration = new DbConfiguration().InternalConfiguration; var resolver1 = new Mock<IDbDependencyResolver>(); configuration.AddDependencyResolver(resolver1.Object); var snapshot = configuration.ResolverSnapshot; var resolver2 = new Mock<IDbDependencyResolver>(); configuration.AddDependencyResolver(resolver2.Object); snapshot.GetService<object>("Foo"); resolver1.Verify(m => m.GetService(typeof(object), "Foo"), Times.Once()); resolver2.Verify(m => m.GetService(typeof(object), "Foo"), Times.Never()); }