public void UpgradeConfig_WithSourceAndDestinationDirectory_UpgradesWebConfig() { // arrange const string newConfig = @"<configuration><connectionStrings><connectionString name=""default"" /></connectionStrings><Foo /></configuration>"; const string oldConfig = @"<configuration><connectionStrings><connectionString name=""mine"" /></connectionStrings></configuration>"; var newConfigFile = new Mock<IFile>(); var stream = new NonDisposableMemoryStream(); newConfigFile.Setup(f => f.OpenWrite()).Returns(stream); newConfigFile.Setup(f => f.Contents).Returns(newConfig); var existingFileConfig = new Mock<IFile>(); newConfigFile.Setup(f => f.Overwrite(existingFileConfig.Object)); existingFileConfig.Setup(f => f.Contents).Returns(oldConfig); existingFileConfig.Setup(f => f.Exists).Returns(true); var sourceDirectory = new Mock<IDirectory>(); sourceDirectory.Setup(s => s.CombineFile("Web.config")).Returns(newConfigFile.Object); var destinationDirectory = new Mock<IDirectory>(); destinationDirectory.Setup(d => d.CombineFile("Web.config")).Returns(existingFileConfig.Object); var upgrader = new WebConfigUpgrader(sourceDirectory.Object); // act upgrader.UpgradeConfig(destinationDirectory.Object); // assert const string expected = @"<configuration> <connectionStrings> <connectionString name=""mine"" /> </connectionStrings> <Foo /> </configuration>"; Assert.AreEqual(expected, stream.ToStringContents()); }
public void UpgradeSkins_WritesNewSkins_ToSkinTemplateDirectory() { // arrange var targetDirectory = new Mock <IDirectory>(); targetDirectory.Setup(d => d.Combine("Skins")).Returns(targetDirectory.Object); targetDirectory.Setup(d => d.Combine("Foo")).Returns(targetDirectory.Object); const string configXml = @"<?xml version=""1.0""?> <SkinTemplates xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""> <Skins> <SkinTemplate Name=""Foo"" TemplateFolder=""Foo"" StyleMergeMode=""MergedAfter""> <Styles> <Style href=""csharp.css"" /> </Styles> </SkinTemplate> </Skins> </SkinTemplates>"; var file = new Mock <IFile>(); file.Setup(f => f.Contents).Returns(configXml); file.Setup(f => f.Directory.Parent).Returns(targetDirectory.Object); var memoryStream = new NonDisposableMemoryStream(); var skinFile = new Mock <IFile>(); skinFile.Setup(f => f.OpenWrite()).Returns(memoryStream); var skinDirectory = new Mock <IDirectory>(); skinDirectory.Setup(d => d.Exists).Returns(false); skinDirectory.Setup(d => d.CombineFile("skin.config")).Returns(skinFile.Object); skinDirectory.Setup(d => d.Ensure()).Returns(skinDirectory.Object); var skinsDirectory = new Mock <IDirectory>(); skinsDirectory.Setup(d => d.Combine("Foo")).Returns(skinDirectory.Object); skinsDirectory.Setup(d => d.Ensure()).Returns(skinDirectory.Object); var oldConfig = new LegacySkinsConfig(file.Object); // act oldConfig.UpgradeSkins(skinsDirectory.Object); // assert targetDirectory.Verify(d => d.CopyTo(skinDirectory.Object)); const string expected = @"<SkinTemplates> <SkinTemplate Name=""Foo"" StyleMergeMode=""MergedAfter""> <Styles> <Style href=""csharp.css"" /> </Styles> </SkinTemplate> </SkinTemplates>"; Assert.AreEqual(expected, memoryStream.ToStringContents()); }
public void UpgradeSkins_WritesNewSkins_ToSkinTemplateDirectory() { // arrange var targetDirectory = new Mock<IDirectory>(); targetDirectory.Setup(d => d.Combine("Skins")).Returns(targetDirectory.Object); targetDirectory.Setup(d => d.Combine("Foo")).Returns(targetDirectory.Object); const string configXml = @"<?xml version=""1.0""?> <SkinTemplates xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""> <Skins> <SkinTemplate Name=""Foo"" TemplateFolder=""Foo"" StyleMergeMode=""MergedAfter""> <Styles> <Style href=""csharp.css"" /> </Styles> </SkinTemplate> </Skins> </SkinTemplates>"; var file = new Mock<IFile>(); file.Setup(f => f.Contents).Returns(configXml); file.Setup(f => f.Directory.Parent).Returns(targetDirectory.Object); var memoryStream = new NonDisposableMemoryStream(); var skinFile = new Mock<IFile>(); skinFile.Setup(f => f.OpenWrite()).Returns(memoryStream); var skinDirectory = new Mock<IDirectory>(); skinDirectory.Setup(d => d.Exists).Returns(false); skinDirectory.Setup(d => d.CombineFile("skin.config")).Returns(skinFile.Object); skinDirectory.Setup(d => d.Ensure()).Returns(skinDirectory.Object); var skinsDirectory = new Mock<IDirectory>(); skinsDirectory.Setup(d => d.Combine("Foo")).Returns(skinDirectory.Object); skinsDirectory.Setup(d => d.Ensure()).Returns(skinDirectory.Object); var oldConfig = new LegacySkinsConfig(file.Object); // act oldConfig.UpgradeSkins(skinsDirectory.Object); // assert targetDirectory.Verify(d => d.CopyTo(skinDirectory.Object)); const string expected = @"<SkinTemplates> <SkinTemplate Name=""Foo"" StyleMergeMode=""MergedAfter""> <Styles> <Style href=""csharp.css"" /> </Styles> </SkinTemplate> </SkinTemplates>"; Assert.AreEqual(expected, memoryStream.ToStringContents()); }
public void UpgradeConfig_WithSourceAndDestinationDirectory_UpgradesWebConfig() { // arrange const string newConfig = @"<configuration><connectionStrings><connectionString name=""default"" /></connectionStrings><Foo /></configuration>"; const string oldConfig = @"<configuration><connectionStrings><connectionString name=""mine"" /></connectionStrings></configuration>"; var newConfigFile = new Mock <IFile>(); var stream = new NonDisposableMemoryStream(); newConfigFile.Setup(f => f.OpenWrite()).Returns(stream); newConfigFile.Setup(f => f.Contents).Returns(newConfig); var existingFileConfig = new Mock <IFile>(); newConfigFile.Setup(f => f.Overwrite(existingFileConfig.Object)); existingFileConfig.Setup(f => f.Contents).Returns(oldConfig); existingFileConfig.Setup(f => f.Exists).Returns(true); var sourceDirectory = new Mock <IDirectory>(); sourceDirectory.Setup(s => s.CombineFile("Web.config")).Returns(newConfigFile.Object); var destinationDirectory = new Mock <IDirectory>(); destinationDirectory.Setup(d => d.CombineFile("Web.config")).Returns(existingFileConfig.Object); var upgrader = new WebConfigUpgrader(sourceDirectory.Object); // act upgrader.UpgradeConfig(destinationDirectory.Object); // assert const string expected = @"<configuration> <connectionStrings> <connectionString name=""mine"" /> </connectionStrings> <Foo /> </configuration>"; Assert.AreEqual(expected, stream.ToStringContents()); }