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.
217 lines
6.1 KiB
217 lines
6.1 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.Collections.Generic; |
|
using ICSharpCode.PackageManagement; |
|
using ICSharpCode.PackageManagement.Design; |
|
using NuGet; |
|
using NUnit.Framework; |
|
using PackageManagement.Tests.Helpers; |
|
|
|
namespace PackageManagement.Tests |
|
{ |
|
[TestFixture] |
|
public class UninstallPackageActionTests |
|
{ |
|
UninstallPackageAction action; |
|
FakePackageManagementEvents fakePackageManagementEvents; |
|
UninstallPackageHelper uninstallPackageHelper; |
|
FakePackageManagementProject fakeProject; |
|
|
|
void CreateAction() |
|
{ |
|
fakePackageManagementEvents = new FakePackageManagementEvents(); |
|
fakeProject = new FakePackageManagementProject(); |
|
action = new UninstallPackageAction(fakeProject, fakePackageManagementEvents); |
|
uninstallPackageHelper = new UninstallPackageHelper(action); |
|
} |
|
|
|
FakePackage AddOnePackageToProjectSourceRepository(string packageId) |
|
{ |
|
return fakeProject.FakeSourceRepository.AddFakePackage(packageId); |
|
} |
|
|
|
void AddFileToPackageBeingUninstalled(string fileName) |
|
{ |
|
var package = new FakePackage(); |
|
package.AddFile(fileName); |
|
|
|
action.Package = package; |
|
} |
|
|
|
[Test] |
|
public void Execute_PackageObjectPassed_UninstallsPackageFromProject() |
|
{ |
|
CreateAction(); |
|
|
|
uninstallPackageHelper.UninstallTestPackage(); |
|
|
|
var actualPackage = fakeProject.PackagePassedToUninstallPackage; |
|
var expectedPackage = uninstallPackageHelper.TestPackage; |
|
|
|
Assert.AreEqual(expectedPackage, actualPackage); |
|
} |
|
|
|
[Test] |
|
public void Execute_PackageAndPackageRepositoryPassed_OnPackageUninstalledCalledWithPackage() |
|
{ |
|
CreateAction(); |
|
|
|
uninstallPackageHelper.UninstallTestPackage(); |
|
|
|
var actualPackage = fakePackageManagementEvents.PackagePassedToOnParentPackageUninstalled; |
|
var expectedPackage = uninstallPackageHelper.TestPackage; |
|
|
|
Assert.AreEqual(expectedPackage, actualPackage); |
|
} |
|
|
|
[Test] |
|
public void Execute_PackageObjectPassedAndForceRemoveIsFalse_PackageIsNotForcefullyRemoved() |
|
{ |
|
CreateAction(); |
|
|
|
uninstallPackageHelper.ForceRemove = false; |
|
uninstallPackageHelper.UninstallPackageById("PackageId"); |
|
|
|
bool forceRemove = fakeProject.ForceRemovePassedToUninstallPackage; |
|
|
|
Assert.IsFalse(forceRemove); |
|
} |
|
|
|
[Test] |
|
public void Execute_PackageObjectPassedAndForceRemoveIsTrue_PackageIsForcefullyRemoved() |
|
{ |
|
CreateAction(); |
|
|
|
uninstallPackageHelper.ForceRemove = true; |
|
uninstallPackageHelper.UninstallPackageById("PackageId"); |
|
|
|
bool forceRemove = fakeProject.ForceRemovePassedToUninstallPackage; |
|
|
|
Assert.IsTrue(forceRemove); |
|
} |
|
|
|
[Test] |
|
public void Execute_PackageObjectPassedAndRemoveDependenciesIsFalse_PackageDependenciesAreNotRemoved() |
|
{ |
|
CreateAction(); |
|
|
|
uninstallPackageHelper.RemoveDependencies = false; |
|
uninstallPackageHelper.UninstallPackageById("PackageId"); |
|
|
|
bool removeDependencies = fakeProject.RemoveDependenciesPassedToUninstallPackage; |
|
|
|
Assert.IsFalse(removeDependencies); |
|
} |
|
|
|
[Test] |
|
public void Execute_PackageObjectPassedAndRemoveDependenciesIsTrue_PackageDependenciesAreRemoved() |
|
{ |
|
CreateAction(); |
|
|
|
uninstallPackageHelper.RemoveDependencies = true; |
|
uninstallPackageHelper.UninstallPackageById("PackageId"); |
|
|
|
bool removeDependencies = fakeProject.RemoveDependenciesPassedToUninstallPackage; |
|
|
|
Assert.IsTrue(removeDependencies); |
|
} |
|
|
|
[Test] |
|
public void Execute_PackageIdSpecifiedAndForceRemoveIsTrue_PackageIsForcefullyRemoved() |
|
{ |
|
CreateAction(); |
|
|
|
uninstallPackageHelper.ForceRemove = true; |
|
uninstallPackageHelper.UninstallPackageById("PackageId"); |
|
|
|
bool forceRemove = fakeProject.ForceRemovePassedToUninstallPackage; |
|
|
|
Assert.IsTrue(forceRemove); |
|
} |
|
|
|
[Test] |
|
public void Execute_PackageIdSpecifiedAndRemoveDependenciesIsTrue_PackageDependenciesAreRemoved() |
|
{ |
|
CreateAction(); |
|
|
|
uninstallPackageHelper.RemoveDependencies = true; |
|
uninstallPackageHelper.UninstallPackageById("PackageId"); |
|
|
|
bool removeDependencies = fakeProject.RemoveDependenciesPassedToUninstallPackage; |
|
|
|
Assert.IsTrue(removeDependencies); |
|
} |
|
|
|
[Test] |
|
public void Execute_VersionSpecified_VersionUsedWhenSearchingForPackage() |
|
{ |
|
CreateAction(); |
|
|
|
var recentPackage = AddOnePackageToProjectSourceRepository("PackageId"); |
|
recentPackage.Version = new Version("1.2.0"); |
|
|
|
var oldPackage = AddOnePackageToProjectSourceRepository("PackageId"); |
|
oldPackage.Version = new Version("1.0.0"); |
|
|
|
var package = AddOnePackageToProjectSourceRepository("PackageId"); |
|
var version = new Version("1.1.0"); |
|
package.Version = version; |
|
|
|
uninstallPackageHelper.Version = version; |
|
uninstallPackageHelper.UninstallPackageById("PackageId"); |
|
|
|
var actualPackage = fakeProject.PackagePassedToUninstallPackage; |
|
|
|
Assert.AreEqual(package, actualPackage); |
|
} |
|
|
|
[Test] |
|
public void ForceRemove_DefaultValue_ReturnsFalse() |
|
{ |
|
CreateAction(); |
|
Assert.IsFalse(action.ForceRemove); |
|
} |
|
|
|
[Test] |
|
public void RemoveDependencies_DefaultValue_ReturnsFalse() |
|
{ |
|
CreateAction(); |
|
Assert.IsFalse(action.RemoveDependencies); |
|
} |
|
|
|
[Test] |
|
public void HasPackageScriptsToRun_OnePackageInOperationsHasUninstallPowerShellScript_ReturnsTrue() |
|
{ |
|
CreateAction(); |
|
AddFileToPackageBeingUninstalled(@"tools\uninstall.ps1"); |
|
|
|
bool hasPackageScripts = action.HasPackageScriptsToRun(); |
|
|
|
Assert.IsTrue(hasPackageScripts); |
|
} |
|
|
|
[Test] |
|
public void HasPackageScriptsToRun_OnePackageInOperationsHasNoFiles_ReturnsFalse() |
|
{ |
|
CreateAction(); |
|
action.Package = new FakePackage(); |
|
|
|
bool hasPackageScripts = action.HasPackageScriptsToRun(); |
|
|
|
Assert.IsFalse(hasPackageScripts); |
|
} |
|
|
|
[Test] |
|
public void HasPackageScriptsToRun_OnePackageInOperationsHasUninstallPowerShellScriptInUpperCase_ReturnsTrue() |
|
{ |
|
CreateAction(); |
|
AddFileToPackageBeingUninstalled(@"tools\UNINSTALL.PS1"); |
|
|
|
bool hasPackageScripts = action.HasPackageScriptsToRun(); |
|
|
|
Assert.IsTrue(hasPackageScripts); |
|
} |
|
} |
|
}
|
|
|