55 lines
2.0 KiB
C#
55 lines
2.0 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.Core.Common;
|
|
using System.Data.Entity.Infrastructure;
|
|
using System.Linq;
|
|
using Moq;
|
|
using Xunit;
|
|
|
|
public class ExecutionStrategyResolverTests : TestBase
|
|
{
|
|
[Fact]
|
|
public void GetService_returns_null_when_contract_interface_does_not_match()
|
|
{
|
|
Assert.Null(new ExecutionStrategyResolver().GetService<IQueryable>());
|
|
}
|
|
|
|
[Fact]
|
|
public void GetService_returns_execution_strategy_from_provider()
|
|
{
|
|
var mockExecutionStrategy = new Mock<NonRetryingExecutionStrategy>().Object;
|
|
var providerServicesMock = new Mock<DbProviderServices>();
|
|
providerServicesMock.Setup(m => m.GetExecutionStrategy()).Returns(mockExecutionStrategy);
|
|
var mockProviderServices = providerServicesMock.Object;
|
|
var resolver = new ExecutionStrategyResolver();
|
|
|
|
MutableResolver.AddResolver<DbProviderServices>(
|
|
key =>
|
|
{
|
|
var invariantName = key as string;
|
|
return "FooClient" == invariantName ? mockProviderServices : null;
|
|
});
|
|
|
|
IExecutionStrategy resolvedExecutionStrategy;
|
|
try
|
|
{
|
|
resolvedExecutionStrategy = resolver.GetService<IExecutionStrategy>(new ExecutionStrategyKey("FooClient", "foo"));
|
|
}
|
|
finally
|
|
{
|
|
MutableResolver.ClearResolvers();
|
|
}
|
|
|
|
Assert.Same(mockExecutionStrategy, resolvedExecutionStrategy);
|
|
}
|
|
|
|
[Fact]
|
|
public void The_root_resolver_returns_null_execution_strategy_for_null_key()
|
|
{
|
|
Assert.Null(new ExecutionStrategyResolver().GetService<IExecutionStrategy>(null));
|
|
}
|
|
}
|
|
}
|