// 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()); } [Fact] public void GetService_returns_execution_strategy_from_provider() { var mockExecutionStrategy = new Mock().Object; var providerServicesMock = new Mock(); providerServicesMock.Setup(m => m.GetExecutionStrategy()).Returns(mockExecutionStrategy); var mockProviderServices = providerServicesMock.Object; var resolver = new ExecutionStrategyResolver(); MutableResolver.AddResolver( key => { var invariantName = key as string; return "FooClient" == invariantName ? mockProviderServices : null; }); IExecutionStrategy resolvedExecutionStrategy; try { resolvedExecutionStrategy = resolver.GetService(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(null)); } } }