// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. using System; using System.Collections.Generic; using Moq; using WebMatrix.Data.Test.Mocks; using Xunit; namespace WebMatrix.Data.Test { public class ConfigurationManagerWrapperTest { [Fact] public void GetConnectionGetsConnectionFromConfig() { // Arrange var configManager = new ConfigurationManagerWrapper(new Dictionary(), "DataDirectory"); Func fileExists = path => false; Func getFromConfig = name => new MockConnectionConfiguration("connection string"); // Act IConnectionConfiguration configuration = configManager.GetConnection("foo", getFromConfig, fileExists); // Assert Assert.NotNull(configuration); Assert.Equal("connection string", configuration.ConnectionString); } [Fact] public void GetConnectionGetsConnectionFromDataDirectoryIfFileWithSupportedExtensionExists() { // Arrange var mockHandler = new Mock(); mockHandler.Setup(m => m.GetConnectionConfiguration(@"DataDirectory\Bar.foo")).Returns(new MockConnectionConfiguration("some file based connection")); var handlers = new Dictionary { { ".foo", mockHandler.Object } }; var configManager = new ConfigurationManagerWrapper(handlers, "DataDirectory"); Func fileExists = path => path.Equals(@"DataDirectory\Bar.foo"); Func getFromConfig = name => null; // Act IConnectionConfiguration configuration = configManager.GetConnection("Bar", getFromConfig, fileExists); // Assert Assert.NotNull(configuration); Assert.Equal("some file based connection", configuration.ConnectionString); } [Fact] public void GetConnectionSdfAndMdfFile_MdfFileWins() { // Arrange var mockSdfHandler = new Mock(); mockSdfHandler.Setup(m => m.GetConnectionConfiguration(@"DataDirectory\Bar.sdf")).Returns(new MockConnectionConfiguration("sdf connection")); var mockMdfHandler = new Mock(); mockMdfHandler.Setup(m => m.GetConnectionConfiguration(@"DataDirectory\Bar.mdf")).Returns(new MockConnectionConfiguration("mdf connection")); var handlers = new Dictionary { { ".sdf", mockSdfHandler.Object }, { ".mdf", mockMdfHandler.Object }, }; var configManager = new ConfigurationManagerWrapper(handlers, "DataDirectory"); Func fileExists = path => path.Equals(@"DataDirectory\Bar.mdf") || path.Equals(@"DataDirectory\Bar.sdf"); Func getFromConfig = name => null; // Act IConnectionConfiguration configuration = configManager.GetConnection("Bar", getFromConfig, fileExists); // Assert Assert.NotNull(configuration); Assert.Equal("mdf connection", configuration.ConnectionString); } [Fact] public void GetConnectionReturnsNullIfNoConnectionFound() { // Act var configManager = new ConfigurationManagerWrapper(new Dictionary(), "DataDirectory"); Func fileExists = path => false; Func getFromConfig = name => null; // Act IConnectionConfiguration configuration = configManager.GetConnection("test", getFromConfig, fileExists); // Assert Assert.Null(configuration); } } }