Skip to content

Commit

Permalink
tests for scriptcs#142
Browse files Browse the repository at this point in the history
  • Loading branch information
filipw committed Mar 28, 2013
1 parent 75bc1ef commit 921490a
Show file tree
Hide file tree
Showing 4 changed files with 122 additions and 3 deletions.
109 changes: 109 additions & 0 deletions test/ScriptCs.Tests/CleanCommandTests.cs
@@ -0,0 +1,109 @@
using System;
using Moq;
using ScriptCs.Command;
using ScriptCs.Package;
using Xunit;

namespace ScriptCs.Tests
{
public class CleanCommandTests
{
public class ExecuteMethod
{
[Fact]
public void ShouldDeletePackagesFolder()
{
var args = new ScriptCsArgs { Clean = true };

var fs = new Mock<IFileSystem>();
var resolver = new Mock<IPackageAssemblyResolver>();
var executor = new Mock<IScriptExecutor>();
var scriptpackResolver = new Mock<IScriptPackResolver>();
var packageInstaller = new Mock<IPackageInstaller>();
var root = new ScriptServiceRoot(fs.Object, resolver.Object, executor.Object, scriptpackResolver.Object, packageInstaller.Object);
fs.Setup(i => i.DirectoryExists(It.Is<string>(x => x.Contains(Constants.PackagesFolder)))).Returns(true);
fs.Setup(i => i.GetWorkingDirectory(It.IsAny<string>())).Returns("c:\\");

var factory = new CommandFactory(root);
var result = factory.CreateCommand(args);

result.Execute();

fs.Verify(i => i.DirectoryExists(It.Is<string>(x => x.Contains(Constants.PackagesFolder))), Times.Once());
fs.Verify(i => i.DeleteDirectory(It.Is<string>(x => x.Contains(Constants.PackagesFolder))), Times.Once());
}

[Fact]
public void ShouldDeleteBinFolder()
{
var args = new ScriptCsArgs { Clean = true };

var fs = new Mock<IFileSystem>();
var resolver = new Mock<IPackageAssemblyResolver>();
var executor = new Mock<IScriptExecutor>();
var scriptpackResolver = new Mock<IScriptPackResolver>();
var packageInstaller = new Mock<IPackageInstaller>();
var root = new ScriptServiceRoot(fs.Object, resolver.Object, executor.Object, scriptpackResolver.Object, packageInstaller.Object);
fs.Setup(i => i.DirectoryExists(It.Is<string>(x => x.Contains(Constants.BinFolder)))).Returns(true);
fs.Setup(i => i.GetWorkingDirectory(It.IsAny<string>())).Returns("c:\\");

var factory = new CommandFactory(root);
var result = factory.CreateCommand(args);

result.Execute();

fs.Verify(i => i.DirectoryExists(It.Is<string>(x => x.Contains(Constants.BinFolder))), Times.Once());
fs.Verify(i => i.DeleteDirectory(It.Is<string>(x => x.Contains(Constants.BinFolder))), Times.Once());
}

[Fact]
public void ShouldNotDeleteBinFolderIfDllsAreLeft()
{
var args = new ScriptCsArgs { Clean = true };

var fs = new Mock<IFileSystem>();
var resolver = new Mock<IPackageAssemblyResolver>();
var executor = new Mock<IScriptExecutor>();
var scriptpackResolver = new Mock<IScriptPackResolver>();
var packageInstaller = new Mock<IPackageInstaller>();
var root = new ScriptServiceRoot(fs.Object, resolver.Object, executor.Object, scriptpackResolver.Object, packageInstaller.Object);

fs.Setup(i => i.DirectoryExists(It.Is<string>(x => x.Contains(Constants.BinFolder)))).Returns(true);
fs.Setup(i => i.GetWorkingDirectory(It.IsAny<string>())).Returns("c:/");
fs.Setup(i => i.EnumerateFiles(It.IsAny<string>(), It.IsAny<string>())).Returns(new[] { "c:/file.dll", "c:/file2.dll" });

var factory = new CommandFactory(root);
var result = factory.CreateCommand(args);

result.Execute();

fs.Verify(i => i.DeleteDirectory(It.Is<string>(x => x.Contains(Constants.BinFolder))), Times.Never());
}

[Fact]
public void ShouldDeleteAllFilesResolvedFromPackages()
{
var args = new ScriptCsArgs { Clean = true };

var fs = new Mock<IFileSystem>();
var resolver = new Mock<IPackageAssemblyResolver>();
var executor = new Mock<IScriptExecutor>();
var scriptpackResolver = new Mock<IScriptPackResolver>();
var packageInstaller = new Mock<IPackageInstaller>();
var root = new ScriptServiceRoot(fs.Object, resolver.Object, executor.Object, scriptpackResolver.Object, packageInstaller.Object);

fs.Setup(i => i.DirectoryExists(It.Is<string>(x => x.Contains(Constants.BinFolder)))).Returns(true);
fs.Setup(i => i.GetWorkingDirectory(It.IsAny<string>())).Returns("c:\\");
fs.Setup(i => i.FileExists(It.IsAny<string>())).Returns(true);
resolver.Setup(i => i.GetAssemblyNames(It.IsAny<string>(), It.IsAny<Action<string>>())).Returns(new[] { "c:\\file.dll", "c:\\file2.dll" });

var factory = new CommandFactory(root);
var result = factory.CreateCommand(args);

result.Execute();

fs.Verify(i => i.FileDelete(It.IsAny<string>()), Times.Exactly(2));
}
}
}
}
12 changes: 12 additions & 0 deletions test/ScriptCs.Tests/CommandFactoryTests.cs
Expand Up @@ -89,6 +89,18 @@ public void ShouldRestoreWhenBothNameAndRestoreArePassed()
(compositeCommand.Commands[1] is IScriptCommand).ShouldBeTrue();
}

[Fact]
public void ShouldCleanWhenCleanFlagIsPassed()
{
var args = new ScriptCsArgs { Clean = true, ScriptName = null };

var factory = new CommandFactory(CreateRoot());
var result = factory.CreateCommand(args);

result.ShouldNotBeNull();
result.ShouldImplement<ICleanCommand>();
}

[Fact]
public void ShouldReturnInvalidWhenNoNameOrInstallSet()
{
Expand Down
3 changes: 0 additions & 3 deletions test/ScriptCs.Tests/RestoreCommandTests.cs
@@ -1,11 +1,8 @@
using System;
using System.IO;

using Moq;

using ScriptCs.Command;
using ScriptCs.Package;

using Xunit;

namespace ScriptCs.Tests
Expand Down
1 change: 1 addition & 0 deletions test/ScriptCs.Tests/ScriptCs.Tests.csproj
Expand Up @@ -36,6 +36,7 @@
<Compile Include="..\..\common\CommonVersionInfo.cs">
<Link>Properties\CommonVersionInfo.cs</Link>
</Compile>
<Compile Include="CleanCommandTests.cs" />
<Compile Include="CommandFactoryTests.cs" />
<Compile Include="InstallCommandTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
Expand Down

0 comments on commit 921490a

Please sign in to comment.