Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

105 lines
4.2 KiB
C#

// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
namespace System.Data.Entity.Config
{
using System.Data.Entity.Resources;
using Moq;
using Xunit;
public class DbConfigurationEventArgsTests
{
public class AddDependencyResolver
{
[Fact]
public void AddDependencyResolver_throws_if_given_a_null_resolver()
{
Assert.Equal(
"resolver",
Assert.Throws<ArgumentNullException>(
() => (new DbConfigurationEventArgs(new Mock<InternalConfiguration>().Object))
.AddDependencyResolver(null, false)).ParamName);
}
[Fact]
public void AddDependencyResolver_throws_if_the_configuation_is_locked()
{
var internalConfiguration = new InternalConfiguration();
internalConfiguration.Lock();
Assert.Equal(
Strings.ConfigurationLocked("AddDependencyResolver"),
Assert.Throws<InvalidOperationException>(
() =>
new DbConfigurationEventArgs(internalConfiguration)
.AddDependencyResolver(new Mock<IDbDependencyResolver>().Object, false)).Message);
}
[Fact]
public void AddDependencyResolver_delegates_to_internal_configuration()
{
var mockInternalConfiguration = new Mock<InternalConfiguration>();
var resolver = new Mock<IDbDependencyResolver>().Object;
new DbConfigurationEventArgs(mockInternalConfiguration.Object).AddDependencyResolver(resolver, true);
mockInternalConfiguration.Verify(m => m.AddDependencyResolver(resolver, true));
}
}
public class ResolverSnapshot
{
[Fact]
public void ResolverSnapshot_delegates_to_internal_configuration()
{
var mockInternalConfiguration = new Mock<InternalConfiguration>();
var resolver = new Mock<IDbDependencyResolver>().Object;
mockInternalConfiguration.Setup(m => m.ResolverSnapshot).Returns(resolver);
Assert.Same(resolver, new DbConfigurationEventArgs(mockInternalConfiguration.Object).ResolverSnapshot);
}
}
public class WrapService
{
public interface IPilkington
{
}
[Fact]
public void WrapService_throws_if_given_a_null_delegate()
{
Assert.Equal(
"serviceWrapper",
Assert.Throws<ArgumentNullException>(
() => (new DbConfigurationEventArgs(new Mock<InternalConfiguration>().Object))
.WrapService<IPilkington>(null)).ParamName);
}
[Fact]
public void WrapService_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)
.WrapService<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"));
}
}
}
}