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

258 lines
8.4 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 ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.Scripting;
using NuGet;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
using Rhino.Mocks;
namespace PackageManagement.Tests.Scripting
{
[TestFixture]
public class RunPackageScriptsActionTests
{
RunPackageScriptsAction action;
FakePackageManagementProject fakeProject;
FakePackageScriptFactory fakeScriptFactory;
FakePackageScriptRunner fakeScriptRunner;
IGlobalMSBuildProjectCollection globalMSBuildProjectCollection;
void CreateAction()
{
fakeProject = new FakePackageManagementProject();
fakeScriptFactory = new FakePackageScriptFactory();
fakeScriptRunner = new FakePackageScriptRunner();
globalMSBuildProjectCollection = MockRepository.GenerateStub<IGlobalMSBuildProjectCollection>();
action = new RunPackageScriptsAction(
fakeProject,
fakeScriptRunner,
fakeScriptFactory,
globalMSBuildProjectCollection);
}
PackageOperationEventArgs CreatePackageOperationEventArgs()
{
return CreatePackageOperationEventArgs(@"d:\projects\myproject\packages\test");
}
PackageOperationEventArgs CreatePackageOperationEventArgs(string installPath)
{
var package = new FakePackage("Test");
return CreatePackageOperationEventArgs(package, installPath);
}
PackageOperationEventArgs CreatePackageOperationEventArgs(FakePackage package)
{
string installPath = @"d:\projects\myproject\packages\test";
return CreatePackageOperationEventArgs(package, installPath);
}
PackageOperationEventArgs CreatePackageOperationEventArgs(FakePackage package, string installPath)
{
return new PackageOperationEventArgs(package, null, installPath);
}
[Test]
public void Constructor_PackageIsInstalled_PackageInitScriptIsRun()
{
CreateAction();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageInstalledEvent(eventArgs);
IPackageScript actualScript = fakeScriptRunner.FirstScriptRun;
FakePackageScript expectedScript = fakeScriptFactory.FirstPackageInitializeScriptCreated;
Assert.AreEqual(expectedScript, actualScript);
}
[Test]
public void Constructor_PackageIsInstalled_PackageInitScriptIsCreated()
{
CreateAction();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(@"d:\projects\myproject\packages\test");
fakeProject.FirePackageInstalledEvent(eventArgs);
string path = fakeScriptFactory.FirstPackageInstallDirectoryPassed;
Assert.AreEqual(@"d:\projects\myproject\packages\test", path);
}
[Test]
public void Dispose_PackageIsInstalled_PackageInitScriptIsNotRun()
{
CreateAction();
action.Dispose();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageInstalledEvent(eventArgs);
int count = fakeScriptFactory.FakePackageInstallScriptsCreated.Count;
Assert.AreEqual(0, count);
}
[Test]
public void Constructor_PackageIsInstalled_PackageInitScriptIsPassedPackage()
{
CreateAction();
var expectedPackage = new FakePackage();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(expectedPackage);
fakeProject.FirePackageInstalledEvent(eventArgs);
IPackage package = fakeScriptFactory.FirstPackageInitializeScriptCreated.Package;
Assert.AreEqual(expectedPackage, package);
}
[Test]
public void Constructor_PackageReferenceIsAdded_PackageInstallScriptIsRun()
{
CreateAction();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageReferenceAddedEvent(eventArgs);
IPackageScript actualScript = fakeScriptRunner.FirstScriptRun;
FakePackageScript expectedScript = fakeScriptFactory.FirstPackageInstallScriptCreated;
Assert.AreEqual(expectedScript, actualScript);
}
[Test]
public void Constructor_PackageReferenceIsAdded_PackageInstallScriptIsCreated()
{
CreateAction();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(@"d:\projects\myproject\packages\test");
fakeProject.FirePackageReferenceAddedEvent(eventArgs);
string path = fakeScriptFactory.FirstPackageInstallDirectoryPassed;
Assert.AreEqual(@"d:\projects\myproject\packages\test", path);
}
[Test]
public void Dispose_PackageReferenceIsAdded_PackageInstallScriptIsNotRun()
{
CreateAction();
action.Dispose();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageReferenceAddedEvent(eventArgs);
int count = fakeScriptFactory.FakePackageInstallScriptsCreated.Count;
Assert.AreEqual(0, count);
}
[Test]
public void Constructor_PackageReferenceIsAdded_InstallScriptIsPassedProject()
{
CreateAction();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageReferenceAddedEvent(eventArgs);
IPackageManagementProject project = fakeScriptFactory.FirstPackageInstallScriptCreated.Project;
Assert.AreEqual(fakeProject, project);
}
[Test]
public void Constructor_PackageReferenceIsAdded_InstallScriptIsPassedPackageFromPackageOperationEventArgs()
{
CreateAction();
var expectedPackage = new FakePackage();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(expectedPackage);
fakeProject.FirePackageReferenceAddedEvent(eventArgs);
IPackage package = fakeScriptFactory.FirstPackageInstallScriptCreated.Package;
Assert.AreEqual(expectedPackage, package);
}
[Test]
public void Constructor_PackageReferenceIsBeingRemoved_PackageUninstallScriptIsRun()
{
CreateAction();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageReferenceRemovingEvent(eventArgs);
IPackageScript actualScript = fakeScriptRunner.FirstScriptRun;
FakePackageScript expectedScript = fakeScriptFactory.FirstPackageUninstallScriptCreated;
Assert.AreEqual(expectedScript, actualScript);
}
[Test]
public void Constructor_PackageReferenceIsBeingRemoved_PackageUninstallScriptIsCreated()
{
CreateAction();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(@"d:\projects\myproject\packages\test");
fakeProject.FirePackageReferenceRemovingEvent(eventArgs);
string path = fakeScriptFactory.FirstPackageInstallDirectoryPassed;
Assert.AreEqual(@"d:\projects\myproject\packages\test", path);
}
[Test]
public void Dispose_PackageReferenceIsBeingRemoved_PackageUninstallScriptIsNotRun()
{
CreateAction();
action.Dispose();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageReferenceRemovingEvent(eventArgs);
int count = fakeScriptFactory.FakePackageUninstallScriptsCreated.Count;
Assert.AreEqual(0, count);
}
[Test]
public void Constructor_PackageReferenceIsBeingRemoved_UninstallScriptIsPassedProject()
{
CreateAction();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs();
fakeProject.FirePackageReferenceRemovingEvent(eventArgs);
IPackageManagementProject project = fakeScriptFactory.FirstPackageUninstallScriptCreated.Project;
Assert.AreEqual(fakeProject, project);
}
[Test]
public void Constructor_PackageReferenceIsBeingRemoved_UninstallScriptIsPassedPackageFromPackageOperationEventArgs()
{
CreateAction();
var expectedPackage = new FakePackage();
PackageOperationEventArgs eventArgs = CreatePackageOperationEventArgs(expectedPackage);
fakeProject.FirePackageReferenceRemovingEvent(eventArgs);
IPackage package = fakeScriptFactory.FirstPackageUninstallScriptCreated.Package;
Assert.AreEqual(expectedPackage, package);
}
[Test]
public void Dispose_OneProjectAddedToGlobalMSBuildProjectCollection_GlobalMSBuildProjectCollectionIsDisposed()
{
CreateAction();
action.Dispose();
globalMSBuildProjectCollection.AssertWasCalled(projectCollection => projectCollection.Dispose());
}
[Test]
public void Constructor_NewInstance_OneProjectAddedToGlobalMSBuildProjectCollection()
{
CreateAction();
globalMSBuildProjectCollection.AssertWasCalled(collection => collection.AddProject(fakeProject));
}
}
}