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

153 lines
5.7 KiB
C#

// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
using System.Collections.Generic;
using System.Linq;
using System.Web.WebPages.Administration.PackageManager;
using Moq;
using Xunit;
namespace System.Web.WebPages.Administration.Test
{
public class PackageManagerModuleTest
{
[Fact]
public void InitSourceFileDoesNotAffectSourcesFileWhenFeedIsNotNull()
{
// Arrange
bool sourceFileCalled = false;
var sourceFile = GetPackagesSourceFile();
sourceFile.Setup(s => s.Exists()).Returns(false);
sourceFile.Setup(s => s.WriteSources(It.IsAny<IEnumerable<WebPackageSource>>())).Callback(() => sourceFileCalled = true);
sourceFile.Setup(c => c.ReadSources()).Callback(() => sourceFileCalled = true);
ISet<WebPackageSource> set = new HashSet<WebPackageSource>();
// Act
PackageManagerModule.InitPackageSourceFile(sourceFile.Object, ref set);
// Assert
Assert.False(sourceFileCalled);
}
[Fact]
public void InitSourceFileWritesToDiskIfSourcesFileDoesNotExist()
{
// Arrange
ISet<WebPackageSource> set = null;
var sourceFile = GetPackagesSourceFile();
sourceFile.Setup(s => s.Exists()).Returns(false);
sourceFile.Setup(s => s.WriteSources(It.IsAny<IEnumerable<WebPackageSource>>()));
// Act
PackageManagerModule.InitPackageSourceFile(sourceFile.Object, ref set);
Assert.NotNull(set);
Assert.Equal(set.Count(), 2);
Assert.Equal(set.First().Source, "http://go.microsoft.com/fwlink/?LinkID=226946");
Assert.Equal(set.Last().Source, "http://go.microsoft.com/fwlink/?LinkID=226948");
}
[Fact]
public void InitSourceFileReadsFromDiskWhenFileAlreadyExists()
{
// Arrange
var sourceFile = GetPackagesSourceFile();
sourceFile.Setup(s => s.Exists()).Returns(true);
ISet<WebPackageSource> set = null;
// Act
PackageManagerModule.InitPackageSourceFile(sourceFile.Object, ref set);
// Assert
Assert.NotNull(set);
Assert.Equal(set.Count(), 2);
}
[Fact]
public void AddFeedWritesSourceIfItDoesNotExist()
{
// Arrange
bool writeCalled = false;
var sourceFile = GetPackagesSourceFile();
sourceFile.Setup(c => c.WriteSources(It.IsAny<IEnumerable<WebPackageSource>>())).Callback(() => writeCalled = true);
ISet<WebPackageSource> set = new HashSet<WebPackageSource>(GetSources());
// Act
bool returnValue = PackageManagerModule.AddPackageSource(sourceFile.Object, set, new WebPackageSource(source: "http://www.microsoft.com/feed3", name: "Feed3"));
// Assert
Assert.Equal(set.Count(), 3);
Assert.True(writeCalled);
Assert.True(returnValue);
}
[Fact]
public void AddFeedDoesNotWritesSourceIfExists()
{
// Arrange
bool writeCalled = false;
var sourceFile = GetPackagesSourceFile();
sourceFile.Setup(c => c.WriteSources(It.IsAny<IEnumerable<WebPackageSource>>())).Callback(() => writeCalled = true);
ISet<WebPackageSource> set = new HashSet<WebPackageSource>(GetSources());
// Act
bool returnValue = PackageManagerModule.AddPackageSource(sourceFile.Object, set, new WebPackageSource(source: "http://www.microsoft.com/feed1", name: "Feed1"));
// Assert
Assert.Equal(set.Count(), 2);
Assert.False(writeCalled);
Assert.False(returnValue);
}
[Fact]
public void RemoveFeedRemovesSourceFromSet()
{
// Arrange
bool writeCalled = false;
var sourceFile = GetPackagesSourceFile();
sourceFile.Setup(c => c.WriteSources(It.IsAny<IEnumerable<WebPackageSource>>())).Callback(() => writeCalled = true);
ISet<WebPackageSource> set = new HashSet<WebPackageSource>(GetSources());
// Act
PackageManagerModule.RemovePackageSource(sourceFile.Object, set, "feed1");
// Assert
Assert.Equal(set.Count(), 1);
Assert.False(set.Any(s => s.Name == "Feed1"));
Assert.True(writeCalled);
}
[Fact]
public void RemoveFeedDoesNotAffectSourceFileIsFeedDoesNotExist()
{
// Arrange
bool writeCalled = false;
var sourceFile = GetPackagesSourceFile();
sourceFile.Setup(c => c.WriteSources(It.IsAny<IEnumerable<WebPackageSource>>())).Callback(() => writeCalled = true);
ISet<WebPackageSource> set = new HashSet<WebPackageSource>(GetSources());
// Act
PackageManagerModule.RemovePackageSource(sourceFile.Object, set, "feed3");
// Assert
Assert.Equal(set.Count(), 2);
Assert.False(writeCalled);
}
private static Mock<IPackagesSourceFile> GetPackagesSourceFile()
{
var sourceFile = new Mock<IPackagesSourceFile>();
sourceFile.Setup(c => c.ReadSources()).Returns(GetSources());
return sourceFile;
}
private static IEnumerable<WebPackageSource> GetSources()
{
return new[]
{
new WebPackageSource(name: "Feed1", source: "http://www.microsoft.com/feed1"),
new WebPackageSource(name: "Feed2", source: "http://www.microsoft.com/feed2")
};
}
}
}