#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.
 
 
 
 
 
 

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);
}
}
}