#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

229 lines
5.8 KiB

// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Management.Automation;
using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.Scripting;
using NuGet;
using NUnit.Framework;
using PackageManagement.Cmdlets.Tests.Helpers;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Cmdlets.Tests
{
[TestFixture]
public class UninstallPackageCmdletTests : CmdletTestsBase
{
TestableUninstallPackageCmdlet cmdlet;
FakeCmdletTerminatingError fakeTerminatingError;
FakePackageManagementProject fakeProject;
FakeUninstallPackageAction uninstallPackageAction;
void CreateCmdletWithoutActiveProject()
{
cmdlet = new TestableUninstallPackageCmdlet();
fakeTerminatingError = cmdlet.FakeCmdletTerminatingError;
fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost;
fakeProject = fakeConsoleHost.FakeProject;
uninstallPackageAction = fakeProject.FakeUninstallPackageAction;
}
void CreateCmdletWithActivePackageSourceAndProject()
{
CreateCmdletWithoutActiveProject();
AddPackageSourceToConsoleHost();
AddDefaultProjectToConsoleHost();
}
void RunCmdlet()
{
cmdlet.CallProcessRecord();
}
void SetIdParameter(string id)
{
cmdlet.Id = id;
}
void EnableForceParameter()
{
cmdlet.Force = new SwitchParameter(true);
}
void EnableRemoveDependenciesParameter()
{
cmdlet.RemoveDependencies = new SwitchParameter(true);
}
void SetVersionParameter(SemanticVersion version)
{
cmdlet.Version = version;
}
void SetProjectNameParameter(string name)
{
cmdlet.ProjectName = name;
}
[Test]
public void ProcessRecord_NoActiveProject_ThrowsNoProjectOpenTerminatingError()
{
CreateCmdletWithoutActiveProject();
AddPackageSourceToConsoleHost();
SetIdParameter("Test");
Assert.Throws(typeof(FakeCmdletTerminatingErrorException), () => RunCmdlet());
}
[Test]
public void ProcessRecord_PackageIdSpecified_PackageIdUsedToUninstallPackage()
{
CreateCmdletWithActivePackageSourceAndProject();
SetIdParameter("Test");
RunCmdlet();
var actualPackageId = uninstallPackageAction.PackageId;
Assert.AreEqual("Test", actualPackageId);
}
[Test]
public void ProcessRecord_ForceParameterSet_PackageForcefullyUninstalled()
{
CreateCmdletWithActivePackageSourceAndProject();
SetIdParameter("Test");
EnableForceParameter();
RunCmdlet();
bool result = uninstallPackageAction.ForceRemove;
Assert.IsTrue(result);
}
[Test]
public void ProcessRecord_ForceParameterNotSet_PackageIsNotForcefullyUninstalled()
{
CreateCmdletWithActivePackageSourceAndProject();
SetIdParameter("Test");
RunCmdlet();
bool result = uninstallPackageAction.ForceRemove;
Assert.IsFalse(result);
}
[Test]
public void ProcessRecord_RemoveDependenciesParameterSet_PackageDependenciesUninstalled()
{
CreateCmdletWithActivePackageSourceAndProject();
SetIdParameter("Test");
EnableRemoveDependenciesParameter();
RunCmdlet();
bool result = uninstallPackageAction.RemoveDependencies;
Assert.IsTrue(result);
}
[Test]
public void ProcessRecord_RemoveDependenciesParameterNotSet_PackageDependenciesNotUninstalled()
{
CreateCmdletWithActivePackageSourceAndProject();
SetIdParameter("Test");
RunCmdlet();
bool result = uninstallPackageAction.RemoveDependencies;
Assert.IsFalse(result);
}
[Test]
public void ProcessRecord_PackageVersionParameterSet_VersionUsedWhenUninstallingPackage()
{
CreateCmdletWithActivePackageSourceAndProject();
SetIdParameter("Test");
var version = new SemanticVersion("1.0.1");
SetVersionParameter(version);
RunCmdlet();
SemanticVersion actualVersion = uninstallPackageAction.PackageVersion;
Assert.AreEqual(version, actualVersion);
}
[Test]
public void ProcessRecord_PackageVersionParameterNotSet_VersionUsedWhenUninstallingPackageIsNull()
{
CreateCmdletWithActivePackageSourceAndProject();
SetIdParameter("Test");
RunCmdlet();
SemanticVersion actualVersion = uninstallPackageAction.PackageVersion;
Assert.IsNull(actualVersion);
}
[Test]
public void ProcessRecord_ProjectNameSpecified_ProjectMatchingProjectNameUsedWhenUninstallingPackage()
{
CreateCmdletWithActivePackageSourceAndProject();
SetIdParameter("Test");
SetProjectNameParameter("MyProject");
RunCmdlet();
string actualProjectName = fakeConsoleHost.ProjectNamePassedToGetProject;
Assert.AreEqual("MyProject", actualProjectName);
}
[Test]
public void ProcessRecord_ProjectNameSpecified_ProjectNameUsedToFindProject()
{
CreateCmdletWithActivePackageSourceAndProject();
SetIdParameter("Test");
SetProjectNameParameter("MyProject");
RunCmdlet();
string actual = fakeConsoleHost.ProjectNamePassedToGetProject;
string expected = "MyProject";
Assert.AreEqual(expected, actual);
}
[Test]
public void ProcessRecord_PackageIdSpecified_PackageIsUninstalled()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
PackageSource packageSource = AddPackageSourceToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
Assert.IsTrue(uninstallPackageAction.IsExecuted);
}
[Test]
public void ProcessRecord_PackageIdSpecified_CmdletUsedAsScriptRunner()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
PackageSource packageSource = AddPackageSourceToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
IPackageScriptRunner scriptRunner = uninstallPackageAction.PackageScriptRunner;
Assert.AreEqual(cmdlet, scriptRunner);
}
}
}