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

434 lines
13 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 PackageManagementProjectTests
{
FakePackageManagerFactory fakePackageManagerFactory;
FakePackageRepository fakeSourceRepository;
TestableProject fakeMSBuildProject;
PackageManagementProject project;
FakeProjectManager fakeProjectManager;
FakePackageManager fakePackageManager;
FakePackageManagementEvents fakePackageManagementEvents;
void CreateProject()
{
fakePackageManagerFactory = new FakePackageManagerFactory();
fakePackageManager = fakePackageManagerFactory.FakePackageManager;
fakeProjectManager = fakePackageManager.FakeProjectManager;
fakeSourceRepository = new FakePackageRepository();
fakeMSBuildProject = ProjectHelper.CreateTestProject();
fakePackageManagementEvents = new FakePackageManagementEvents();
project = new PackageManagementProject(
fakeSourceRepository,
fakeMSBuildProject,
fakePackageManagementEvents,
fakePackageManagerFactory);
}
[Test]
public void IsInstalled_PackageIsInstalled_ReturnsTrue()
{
CreateProject();
fakeProjectManager.IsInstalledReturnValue = true;
var package = new FakePackage("Test");
bool installed = project.IsInstalled(package);
Assert.IsTrue(installed);
}
[Test]
public void IsInstalled_PackageIsNotInstalled_ReturnsFalse()
{
CreateProject();
fakeProjectManager.IsInstalledReturnValue = false;
var package = new FakePackage("Test");
bool installed = project.IsInstalled(package);
Assert.IsFalse(installed);
}
[Test]
public void IsInstalled_PackageIsInstalled_PackagePassedToProjectManager()
{
CreateProject();
fakeProjectManager.IsInstalledReturnValue = false;
var expectedPackage = new FakePackage("Test");
project.IsInstalled(expectedPackage);
var actualPackage = fakeProjectManager.PackagePassedToIsInstalled;
Assert.AreEqual(expectedPackage, actualPackage);
}
[Test]
public void Constructor_RepositoryAndProjectPassed_RepositoryUsedToCreatePackageManager()
{
CreateProject();
var actualrepository = fakePackageManagerFactory.PackageRepositoryPassedToCreatePackageManager;
Assert.AreEqual(fakeSourceRepository, actualrepository);
}
[Test]
public void Constructor_RepositoryAndProjectPassed_ProjecUsedToCreatePackageManager()
{
CreateProject();
var actualProject = fakePackageManagerFactory.ProjectPassedToCreateRepository;
Assert.AreEqual(fakeMSBuildProject, actualProject);
}
[Test]
public void GetPackages_ProjectManagerLocalRepositoryHasTwoPackages_ReturnsTwoPackages()
{
CreateProject();
var repository = fakeProjectManager.FakeLocalRepository;
var packageA = repository.AddFakePackage("A");
var packageB = repository.AddFakePackage("B");
var actualPackages = project.GetPackages();
var expectedPackages = new FakePackage[] {
packageA,
packageB
};
PackageCollectionAssert.AreEqual(expectedPackages, actualPackages);
}
[Test]
public void GetInstallPackageOperations_IgnoreDependenciesIsTrue_DependenciesIgnoredWhenRetrievingPackageOperations()
{
CreateProject();
var package = new FakePackage();
project.GetInstallPackageOperations(package, true);
Assert.IsTrue(fakePackageManager.IgnoreDependenciesPassedToGetInstallPackageOperations);
}
[Test]
public void GetInstallPackageOperations_IgnoreDependenciesIsFalse_DependenciesNotIgnoredWhenRetrievingPackageOperations()
{
CreateProject();
var package = new FakePackage();
project.GetInstallPackageOperations(package, false);
Assert.IsFalse(fakePackageManager.IgnoreDependenciesPassedToGetInstallPackageOperations);
}
[Test]
public void GetInstallPackageOperations_PackagePassed_PackageUsedToRetrievePackageOperations()
{
CreateProject();
var expectedPackage = new FakePackage();
project.GetInstallPackageOperations(expectedPackage, true);
var actualPackage = fakePackageManager.PackagePassedToGetInstallPackageOperations;
Assert.AreEqual(expectedPackage, actualPackage);
}
[Test]
public void GetInstallPackageOperations_PackagePassed_ReturnsPackageOperations()
{
CreateProject();
var package = new FakePackage();
var operations = project.GetInstallPackageOperations(package, true);
var expectedOperations = fakePackageManager.PackageOperationsToReturnFromGetInstallPackageOperations;
Assert.AreEqual(expectedOperations, operations);
}
[Test]
public void Logger_SetLogger_LoggerOnPackageManagerIsSet()
{
CreateProject();
var expectedLogger = new FakeLogger();
project.Logger = expectedLogger;
Assert.AreEqual(expectedLogger, fakePackageManager.Logger);
}
[Test]
public void Logger_GetLogger_LoggerOnPackageManagerIsReturned()
{
CreateProject();
var logger = project.Logger;
var expectedLogger = fakePackageManager.Logger;
Assert.AreEqual(expectedLogger, logger);
}
[Test]
public void InstallPackage_PackagePassed_PackageInstalled()
{
CreateProject();
var package = new FakePackage();
project.InstallPackage(package, null, true);
var expectedPackage = fakePackageManager.PackagePassedToInstallPackage;
Assert.AreEqual(expectedPackage, package);
}
[Test]
public void InstallPackage_IgnoreDependenciesIsTrue_DependenciesAreIgnoredWhenPackageIsInstalled()
{
CreateProject();
project.InstallPackage(null, null, true);
Assert.IsTrue(fakePackageManager.IgnoreDependenciesPassedToInstallPackage);
}
[Test]
public void InstallPackage_IgnoreDependenciesIsFalse_DependenciesAreNotIgnoredWhenPackageIsInstalled()
{
CreateProject();
project.InstallPackage(null, null, false);
Assert.IsFalse(fakePackageManager.IgnoreDependenciesPassedToInstallPackage);
}
[Test]
public void InstallPackage_PackageOperationsPassed_PackageOperationsUsedToInstallPackage()
{
CreateProject();
var expectedOperations = new List<PackageOperation>();
project.InstallPackage(null, expectedOperations, false);
var actualOperations = fakePackageManager.PackageOperationsPassedToInstallPackage;
Assert.AreEqual(expectedOperations, actualOperations);
}
[Test]
public void SourceRepository_NewInstance_ReturnsRepositoryUsedToCreateInstance()
{
CreateProject();
var repository = project.SourceRepository;
Assert.AreEqual(fakeSourceRepository, repository);
}
[Test]
public void UninstallPackage_PackagePassed_PackageUninstalled()
{
CreateProject();
var package = new FakePackage();
project.UninstallPackage(package, true, true);
var expectedPackage = fakePackageManager.PackagePassedToUninstallPackage;
Assert.AreEqual(expectedPackage, package);
}
[Test]
public void UninstallPackage_ForceRemoveIsTrue_PackageUninstallIsForced()
{
CreateProject();
project.UninstallPackage(null, forceRemove: true, removeDependencies: false);
Assert.IsTrue(fakePackageManager.ForceRemovePassedToUninstallPackage);
}
[Test]
public void UninstallPackage_ForceRemoveIsFalse_PackageUninstallIsNotForced()
{
CreateProject();
project.UninstallPackage(null, forceRemove: false, removeDependencies: true);
Assert.IsFalse(fakePackageManager.ForceRemovePassedToUninstallPackage);
}
[Test]
public void UninstallPackage_RemoveDependenciesIsTrue_PackageDependenciesIsRemoved()
{
CreateProject();
project.UninstallPackage(null, forceRemove: false, removeDependencies: true);
Assert.IsTrue(fakePackageManager.RemoveDependenciesPassedToUninstallPackage);
}
[Test]
public void UninstallPackage_RemoveDependenciesIsFalse_PackageDependenciesNotRemoved()
{
CreateProject();
project.UninstallPackage(null, forceRemove: true, removeDependencies: false);
Assert.IsFalse(fakePackageManager.RemoveDependenciesPassedToUninstallPackage);
}
[Test]
public void UpdatePackage_PackagePassed_PackageUpdated()
{
CreateProject();
var package = new FakePackage();
project.UpdatePackage(package, null, true);
var expectedPackage = fakePackageManager.PackagePassedToUpdatePackage;
Assert.AreEqual(expectedPackage, package);
}
[Test]
public void UpdatePackage_UpdateDependenciesIsTrue_DependenciesUpdatedWhenPackageIsUpdated()
{
CreateProject();
project.UpdatePackage(null, null, true);
Assert.IsTrue(fakePackageManager.UpdateDependenciesPassedToUpdatePackage);
}
[Test]
public void UpdatePackage_UpdateDependenciesIsFalse_DependenciesAreNotUpdatedWhenPackageIsUpdated()
{
CreateProject();
project.UpdatePackage(null, null, false);
Assert.IsFalse(fakePackageManager.UpdateDependenciesPassedToUpdatePackage);
}
[Test]
public void UpdatePackage_PackageOperationsPassed_PackageOperationsUsedToUpdatePackage()
{
CreateProject();
var expectedOperations = new List<PackageOperation>();
project.UpdatePackage(null, expectedOperations, false);
var actualOperations = fakePackageManager.PackageOperationsPassedToUpdatePackage;
Assert.AreEqual(expectedOperations, actualOperations);
}
[Test]
public void Logger_SetLogger_ProjectManagerUsesLogger()
{
CreateProject();
ILogger expectedLogger = new NullLogger();
project.Logger = expectedLogger;
ILogger actualLogger = fakePackageManager.ProjectManager.Logger;
Assert.AreEqual(expectedLogger, actualLogger);
}
[Test]
public void Logger_SetLogger_ProjectManagerProjectSystemUsesLogger()
{
CreateProject();
ILogger expectedLogger = new NullLogger();
project.Logger = expectedLogger;
ILogger actualLogger = fakePackageManager.ProjectManager.Project.Logger;
Assert.AreEqual(expectedLogger, actualLogger);
}
[Test]
public void Logger_SetLogger_PackageManagerFileSystemUsesLogger()
{
CreateProject();
ILogger expectedLogger = new NullLogger();
project.Logger = expectedLogger;
ILogger actualLogger = fakePackageManager.FileSystem.Logger;
Assert.AreEqual(expectedLogger, actualLogger);
}
[Test]
public void Logger_GetLogger_ReturnsLogger()
{
CreateProject();
ILogger expectedLogger = new NullLogger();
project.Logger = expectedLogger;
ILogger actualLogger = project.Logger;
Assert.AreEqual(expectedLogger, actualLogger);
}
[Test]
public void PackageInstalled_PackagerManagerPackageInstalledEventFired_EventFiresWithPackage()
{
CreateProject();
PackageOperationEventArgs eventArgs = null;
project.PackageInstalled += (sender, e) => eventArgs = e;
var expectedEventArgs = new PackageOperationEventArgs(new FakePackage(), String.Empty);
fakePackageManager.FirePackageInstalled(expectedEventArgs);
Assert.AreEqual(expectedEventArgs, eventArgs);
}
[Test]
public void PackageUninstalled_PackagerManagerPackageUninstalledEventFired_EventFiresWithPackage()
{
CreateProject();
PackageOperationEventArgs eventArgs = null;
project.PackageUninstalled += (sender, e) => eventArgs = e;
var expectedEventArgs = new PackageOperationEventArgs(new FakePackage(), String.Empty);
fakePackageManager.FirePackageUninstalled(expectedEventArgs);
Assert.AreEqual(expectedEventArgs, eventArgs);
}
[Test]
public void PackageReferenceAdded_ProjectManagerPackageReferenceAddedEventFired_EventFiresWithPackage()
{
CreateProject();
PackageOperationEventArgs eventArgs = null;
project.PackageReferenceAdded += (sender, e) => eventArgs = e;
var expectedPackage = new FakePackage();
fakeProjectManager.FirePackageReferenceAdded(expectedPackage);
Assert.AreEqual(expectedPackage, eventArgs.Package);
}
[Test]
public void PackageReferenceRemoved_ProjectManagerPackageReferenceRemovedEventFired_EventFiresWithPackage()
{
CreateProject();
PackageOperationEventArgs eventArgs = null;
project.PackageReferenceRemoved += (sender, e) => eventArgs = e;
var expectedPackage = new FakePackage();
fakeProjectManager.FirePackageReferenceRemoved(expectedPackage);
Assert.AreEqual(expectedPackage, eventArgs.Package);
}
[Test]
public void ConvertToDTEProject_MethodCalled_ReturnsProjectWithExpectedName()
{
CreateProject();
fakeMSBuildProject.Name = "Test";
var dteProject = project.ConvertToDTEProject();
Assert.AreEqual("Test", dteProject.Name);
}
}
}