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

280 lines
8.5 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 InstallPackageActionTests
{
FakePackageManagementEvents fakePackageManagementEvents;
FakePackageManagementProject fakeProject;
InstallPackageAction action;
InstallPackageHelper installPackageHelper;
void CreateAction()
{
fakePackageManagementEvents = new FakePackageManagementEvents();
fakeProject = new FakePackageManagementProject();
action = new InstallPackageAction(fakeProject, fakePackageManagementEvents);
installPackageHelper = new InstallPackageHelper(action);
}
FakePackage AddOnePackageToProjectSourceRepository(string packageId)
{
return fakeProject.FakeSourceRepository.AddFakePackage(packageId);
}
void AddInstallOperationWithFile(string fileName)
{
var package = new FakePackage();
package.AddFile(fileName);
var operation = new PackageOperation(package, PackageAction.Install);
var operations = new List<PackageOperation>();
operations.Add(operation);
action.Operations = operations;
}
[Test]
public void Execute_PackageIsSet_InstallsPackageIntoProject()
{
CreateAction();
installPackageHelper.InstallTestPackage();
var actualPackage = fakeProject.PackagePassedToInstallPackage;
var expectedPackage = installPackageHelper.TestPackage;
Assert.AreEqual(expectedPackage, actualPackage);
}
[Test]
public void Execute_PackageIsSet_InstallsPackageUsingPackageOperations()
{
CreateAction();
var expectedOperations = new List<PackageOperation>();
installPackageHelper.PackageOperations = expectedOperations;
installPackageHelper.InstallTestPackage();
var actualOperations = fakeProject.PackageOperationsPassedToInstallPackage;
Assert.AreEqual(expectedOperations, actualOperations);
}
[Test]
public void Execute_PackageIsSet_InstallsPackageNotIgnoringDependencies()
{
CreateAction();
installPackageHelper.IgnoreDependencies = false;
installPackageHelper.InstallTestPackage();
bool ignored = fakeProject.IgnoreDependenciesPassedToInstallPackage;
Assert.IsFalse(ignored);
}
[Test]
public void Execute_PackageIsSetAndIgnoreDependencies_IsTrueInstallsPackageIgnoringDependencies()
{
CreateAction();
installPackageHelper.IgnoreDependencies = true;
installPackageHelper.InstallTestPackage();
bool ignored = fakeProject.IgnoreDependenciesPassedToInstallPackage;
Assert.IsTrue(ignored);
}
[Test]
public void IgnoreDependencies_DefaultValue_IsFalse()
{
CreateAction();
Assert.IsFalse(action.IgnoreDependencies);
}
[Test]
public void Execute_PackageAndPackageRepositoryPassed_PackageInstallNotificationRaisedWithInstalledPackage()
{
CreateAction();
installPackageHelper.InstallTestPackage();
var expectedPackage = installPackageHelper.TestPackage;
var actualPackage = fakePackageManagementEvents.PackagePassedToOnParentPackageInstalled;
Assert.AreEqual(expectedPackage, actualPackage);
}
[Test]
public void Execute_PackageIdAndSourceAndProjectPassed_PackageOperationsRetrievedFromProject()
{
CreateAction();
fakeProject.AddFakeInstallOperation();
installPackageHelper.InstallPackageById("PackageId");
var actualOperations = action.Operations;
var expectedOperations = fakeProject.FakeInstallOperations;
Assert.AreEqual(expectedOperations, actualOperations);
}
[Test]
public void Execute_PackageSpecifiedButNoPackageOperations_PackageUsedWhenPackageOperationsRetrievedForProject()
{
CreateAction();
installPackageHelper.PackageOperations = null;
installPackageHelper.InstallTestPackage();
var expectedPackage = installPackageHelper.TestPackage;
var actualPackage = fakeProject.PackagePassedToGetInstallPackageOperations;
Assert.AreEqual(expectedPackage, actualPackage);
}
[Test]
public void Execute_PackageIdAndSourceAndProjectPassedAndIgnoreDependenciesIsTrue_DependenciesIgnoredWhenGettingPackageOperations()
{
CreateAction();
installPackageHelper.IgnoreDependencies = true;
installPackageHelper.InstallPackageById("PackageId");
bool result = fakeProject.IgnoreDependenciesPassedToGetInstallPackageOperations;
Assert.IsTrue(result);
}
[Test]
public void InstallPackage_PackageIdAndSourceAndProjectPassedAndIgnoreDependenciesIsFalse_DependenciesNotIgnoredWhenGettingPackageOperations()
{
CreateAction();
installPackageHelper.IgnoreDependencies = false;
installPackageHelper.InstallPackageById("PackageId");
bool result = fakeProject.IgnoreDependenciesPassedToGetInstallPackageOperations;
Assert.IsFalse(result);
}
[Test]
public void Execute_VersionSpecified_VersionUsedWhenSearchingForPackage()
{
CreateAction();
var recentPackage = AddOnePackageToProjectSourceRepository("PackageId");
recentPackage.Version = new SemanticVersion("1.2.0");
var oldPackage = AddOnePackageToProjectSourceRepository("PackageId");
oldPackage.Version = new SemanticVersion("1.0.0");
var package = AddOnePackageToProjectSourceRepository("PackageId");
var version = new SemanticVersion("1.1.0");
package.Version = version;
installPackageHelper.Version = version;
installPackageHelper.InstallPackageById("PackageId");
var actualPackage = fakeProject.PackagePassedToInstallPackage;
Assert.AreEqual(package, actualPackage);
}
[Test]
public void HasPackageScriptsToRun_OnePackageInOperationsHasInitPowerShellScript_ReturnsTrue()
{
CreateAction();
action.PackageId = "Test";
AddInstallOperationWithFile(@"tools\init.ps1");
bool hasPackageScripts = action.HasPackageScriptsToRun();
Assert.IsTrue(hasPackageScripts);
}
[Test]
public void HasPackageScriptsToRun_OnePackageInOperationsHasNoFiles_ReturnsFalse()
{
CreateAction();
action.PackageId = "Test";
action.Operations = new List<PackageOperation>();
bool hasPackageScripts = action.HasPackageScriptsToRun();
Assert.IsFalse(hasPackageScripts);
}
[Test]
public void HasPackageScriptsToRun_OnePackageInOperationsHasInitPowerShellScriptInUpperCase_ReturnsTrue()
{
CreateAction();
action.PackageId = "Test";
AddInstallOperationWithFile(@"tools\INIT.PS1");
bool hasPackageScripts = action.HasPackageScriptsToRun();
Assert.IsTrue(hasPackageScripts);
}
[Test]
public void HasPackageScriptsToRun_OnePackageInOperationsHasInstallPowerShellScriptInUpperCase_ReturnsTrue()
{
CreateAction();
action.PackageId = "Test";
AddInstallOperationWithFile(@"tools\INSTALL.PS1");
bool hasPackageScripts = action.HasPackageScriptsToRun();
Assert.IsTrue(hasPackageScripts);
}
[Test]
public void HasPackageScriptsToRun_OnePackageInOperationsHasUninstallPowerShellScriptInUpperCase_ReturnsTrue()
{
CreateAction();
action.PackageId = "Test";
AddInstallOperationWithFile(@"tools\UNINSTALL.PS1");
bool hasPackageScripts = action.HasPackageScriptsToRun();
Assert.IsTrue(hasPackageScripts);
}
[Test]
public void HasPackageScriptsToRun_ProjectHasOnePackageOperation_DoesNotThrowNullReferenceException()
{
CreateAction();
FakePackage package = fakeProject.FakeSourceRepository.AddFakePackageWithVersion("Test", "1.0");
var operation = new FakePackageOperation(package, PackageAction.Install);
action.PackageId = package.Id;
action.PackageVersion = package.Version;
fakeProject.FakeInstallOperations.Add(operation);
bool hasPackageScripts = false;
Assert.DoesNotThrow(() => hasPackageScripts = action.HasPackageScriptsToRun());
}
[Test]
public void HasPackageScriptsToRun_ProjectHasOnePackageOperation_PackageLocated()
{
CreateAction();
FakePackage expectedPackage = fakeProject.FakeSourceRepository.AddFakePackageWithVersion("Test", "1.0");
var operation = new FakePackageOperation(expectedPackage, PackageAction.Install);
action.PackageId = expectedPackage.Id;
action.PackageVersion = expectedPackage.Version;
fakeProject.FakeInstallOperations.Add(operation);
bool hasPackageScripts = action.HasPackageScriptsToRun();
IPackage actualPackage = action.Package;
Assert.AreEqual(expectedPackage, actualPackage);
}
}
}