Browse Source

Refresh Projects window after updating all NuGet packages.

pull/44/head
Matt Ward 13 years ago
parent
commit
0ad4adb5a8
  1. 1
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs
  3. 4
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementEvents.cs
  4. 9
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementEvents.cs
  5. 2
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProject.cs
  6. 19
      src/AddIns/Misc/PackageManagement/Project/Src/ParentPackagesOperationEventArgs.cs
  7. 3
      src/AddIns/Misc/PackageManagement/Project/Src/ProjectBrowserRefresher.cs
  8. 26
      src/AddIns/Misc/PackageManagement/Project/Src/ThreadSafePackageManagementEvents.cs
  9. 7
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackagesAction.cs
  10. 6
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackagesActionFactory.cs
  11. 7
      src/AddIns/Misc/PackageManagement/Project/Src/UpdateSolutionPackagesAction.cs
  12. 4
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackagesViewModel.cs
  13. 8
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementEvents.cs
  14. 6
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatePackagesAction.cs
  15. 6
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdateSolutionPackagesAction.cs
  16. 35
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementEventsTests.cs
  17. 2
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementProjectTests.cs
  18. 17
      src/AddIns/Misc/PackageManagement/Test/Src/ProjectBrowserRefresherTests.cs
  19. 2
      src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs
  20. 61
      src/AddIns/Misc/PackageManagement/Test/Src/ThreadSafePackageManagementEventsTests.cs
  21. 23
      src/AddIns/Misc/PackageManagement/Test/Src/UpdatePackagesActionTests.cs
  22. 18
      src/AddIns/Misc/PackageManagement/Test/Src/UpdateSolutionPackagesActionTests.cs

1
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -232,6 +232,7 @@ @@ -232,6 +232,7 @@
<Compile Include="Src\MSBuildBasedProjectExtensions.cs" />
<Compile Include="Src\PackageLicenseViewModel.cs" />
<Compile Include="Src\PackageManagementServiceProvider.cs" />
<Compile Include="Src\ParentPackagesOperationEventArgs.cs" />
<Compile Include="Src\ProjectBuilder.cs" />
<Compile Include="Src\ReducedPackageOperations.cs" />
<Compile Include="Src\ResolveFileConflictEventArgs.cs" />

2
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs

@ -223,7 +223,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -223,7 +223,7 @@ namespace ICSharpCode.PackageManagement.Design
public UpdatePackagesAction CreateUpdatePackagesAction()
{
var action = new UpdatePackagesAction(this);
var action = new UpdatePackagesAction(this, null);
UpdatePackagesActionsCreated.Add(action);
return action;
}

4
src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementEvents.cs

@ -16,13 +16,15 @@ namespace ICSharpCode.PackageManagement @@ -16,13 +16,15 @@ namespace ICSharpCode.PackageManagement
event EventHandler<PackageOperationExceptionEventArgs> PackageOperationError;
event EventHandler<ParentPackageOperationEventArgs> ParentPackageInstalled;
event EventHandler<ParentPackageOperationEventArgs> ParentPackageUninstalled;
event EventHandler<ParentPackagesOperationEventArgs> ParentPackagesUpdated;
event EventHandler<PackageOperationMessageLoggedEventArgs> PackageOperationMessageLogged;
void OnPackageOperationsStarting();
void OnPackageOperationError(Exception ex);
bool OnAcceptLicenses(IEnumerable<IPackage> packages);
void OnParentPackageInstalled(IPackage package);
void OnParentPackageUninstalled(IPackage package);
void OnParentPackagesUpdated(IEnumerable<IPackage> packages);
void OnPackageOperationMessageLogged(MessageLevel level, string message, params object[] args);
bool OnSelectProjects(IEnumerable<IPackageManagementSelectedProject> selectedProjects);
FileConflictResolution OnResolveFileConflict(string message);

9
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementEvents.cs

@ -90,5 +90,14 @@ namespace ICSharpCode.PackageManagement @@ -90,5 +90,14 @@ namespace ICSharpCode.PackageManagement
}
return FileConflictResolution.IgnoreAll;
}
public event EventHandler<ParentPackagesOperationEventArgs> ParentPackagesUpdated;
public void OnParentPackagesUpdated(IEnumerable<IPackage> packages)
{
if (ParentPackagesUpdated != null) {
ParentPackagesUpdated(this, new ParentPackagesOperationEventArgs(packages));
}
}
}
}

2
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProject.cs

@ -139,7 +139,7 @@ namespace ICSharpCode.PackageManagement @@ -139,7 +139,7 @@ namespace ICSharpCode.PackageManagement
public UpdatePackagesAction CreateUpdatePackagesAction()
{
return new UpdatePackagesAction(this);
return new UpdatePackagesAction(this, packageManagementEvents);
}
public IEnumerable<PackageOperation> GetUpdatePackagesOperations(

19
src/AddIns/Misc/PackageManagement/Project/Src/ParentPackagesOperationEventArgs.cs

@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
// 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 NuGet;
namespace ICSharpCode.PackageManagement
{
public class ParentPackagesOperationEventArgs : EventArgs
{
public ParentPackagesOperationEventArgs(IEnumerable<IPackage> packages)
{
this.Packages = packages;
}
public IEnumerable<IPackage> Packages { get; private set; }
}
}

3
src/AddIns/Misc/PackageManagement/Project/Src/ProjectBrowserRefresher.cs

@ -19,9 +19,10 @@ namespace ICSharpCode.PackageManagement @@ -19,9 +19,10 @@ namespace ICSharpCode.PackageManagement
packageManagementEvents.ParentPackageInstalled += ProjectChanged;
packageManagementEvents.ParentPackageUninstalled += ProjectChanged;
packageManagementEvents.ParentPackagesUpdated += ProjectChanged;
}
void ProjectChanged(object sender, ParentPackageOperationEventArgs e)
void ProjectChanged(object sender, EventArgs e)
{
projectService.RefreshProjectBrowser();
}

26
src/AddIns/Misc/PackageManagement/Project/Src/ThreadSafePackageManagementEvents.cs

@ -33,6 +33,7 @@ namespace ICSharpCode.PackageManagement @@ -33,6 +33,7 @@ namespace ICSharpCode.PackageManagement
unsafeEvents.PackageOperationError += RaisePackageOperationErrorEventIfHasSubscribers;
unsafeEvents.ParentPackageInstalled += RaiseParentPackageInstalledEventIfHasSubscribers;
unsafeEvents.ParentPackageUninstalled += RaiseParentPackageUninstalledEventIfHasSubscribers;
unsafeEvents.ParentPackagesUpdated += RaiseParentPackagesUpdatedEventIfHasSubscribers;
}
public void Dispose()
@ -46,6 +47,7 @@ namespace ICSharpCode.PackageManagement @@ -46,6 +47,7 @@ namespace ICSharpCode.PackageManagement
unsafeEvents.PackageOperationError -= RaisePackageOperationErrorEventIfHasSubscribers;
unsafeEvents.ParentPackageInstalled -= RaiseParentPackageInstalledEventIfHasSubscribers;
unsafeEvents.ParentPackageUninstalled -= RaiseParentPackageUninstalledEventIfHasSubscribers;
unsafeEvents.ParentPackagesUpdated -= RaiseParentPackagesUpdatedEventIfHasSubscribers;
}
void RaisePackageOperationStartingEventIfHasSubscribers(object sender, EventArgs e)
@ -199,5 +201,29 @@ namespace ICSharpCode.PackageManagement @@ -199,5 +201,29 @@ namespace ICSharpCode.PackageManagement
{
return unsafeEvents.OnResolveFileConflict(message);
}
public event EventHandler<ParentPackagesOperationEventArgs> ParentPackagesUpdated;
public void OnParentPackagesUpdated(IEnumerable<IPackage> packages)
{
unsafeEvents.OnParentPackagesUpdated(packages);
}
void RaiseParentPackagesUpdatedEventIfHasSubscribers(object sender, ParentPackagesOperationEventArgs e)
{
if (ParentPackagesUpdated != null) {
RaiseParentPackagesUpdatedEvent(sender, e);
}
}
void RaiseParentPackagesUpdatedEvent(object sender, ParentPackagesOperationEventArgs e)
{
if (InvokeRequired) {
Action<object, ParentPackagesOperationEventArgs> action = RaiseParentPackagesUpdatedEvent;
SafeThreadAsyncCall(action, sender, e);
} else {
ParentPackagesUpdated(sender, e);
}
}
}
}

7
src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackagesAction.cs

@ -12,10 +12,14 @@ namespace ICSharpCode.PackageManagement @@ -12,10 +12,14 @@ namespace ICSharpCode.PackageManagement
{
List<IPackage> packages = new List<IPackage>();
List<PackageOperation> operations = new List<PackageOperation>();
IPackageManagementEvents packageManagementEvents;
public UpdatePackagesAction(IPackageManagementProject project)
public UpdatePackagesAction(
IPackageManagementProject project,
IPackageManagementEvents packageManagementEvents)
{
Project = project;
this.packageManagementEvents = packageManagementEvents;
UpdateDependencies = true;
}
@ -62,6 +66,7 @@ namespace ICSharpCode.PackageManagement @@ -62,6 +66,7 @@ namespace ICSharpCode.PackageManagement
protected virtual void ExecuteCore()
{
Project.UpdatePackages(this);
packageManagementEvents.OnParentPackagesUpdated(Packages);
}
void ExecuteWithScriptRunner()

6
src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackagesActionFactory.cs

@ -12,14 +12,16 @@ namespace ICSharpCode.PackageManagement @@ -12,14 +12,16 @@ namespace ICSharpCode.PackageManagement
public class UpdatePackagesActionFactory
{
ILogger logger;
IPackageManagementEvents packageManagementEvents;
bool singleProjectSelected;
IPackageManagementProject project;
PackageManagementSelectedProjects selectedProjects;
IEnumerable<IPackageFromRepository> packages;
public UpdatePackagesActionFactory(ILogger logger)
public UpdatePackagesActionFactory(ILogger logger, IPackageManagementEvents packageManagementEvents)
{
this.logger = logger;
this.packageManagementEvents = packageManagementEvents;
}
public IUpdatePackagesAction CreateAction(
@ -52,7 +54,7 @@ namespace ICSharpCode.PackageManagement @@ -52,7 +54,7 @@ namespace ICSharpCode.PackageManagement
if (singleProjectSelected) {
return project.CreateUpdatePackagesAction();
} else {
return new UpdateSolutionPackagesAction(selectedProjects.Solution);
return new UpdateSolutionPackagesAction(selectedProjects.Solution, packageManagementEvents);
}
}

7
src/AddIns/Misc/PackageManagement/Project/Src/UpdateSolutionPackagesAction.cs

@ -14,11 +14,15 @@ namespace ICSharpCode.PackageManagement @@ -14,11 +14,15 @@ namespace ICSharpCode.PackageManagement
List<IPackageFromRepository> packages = new List<IPackageFromRepository>();
List<PackageOperation> operations = new List<PackageOperation>();
List<IPackageManagementProject> projects;
IPackageManagementEvents packageManagementEvents;
public UpdateSolutionPackagesAction(IPackageManagementSolution solution)
public UpdateSolutionPackagesAction(
IPackageManagementSolution solution,
IPackageManagementEvents packageManagementEvents)
{
this.Solution = solution;
this.UpdateDependencies = true;
this.packageManagementEvents = packageManagementEvents;
}
public IPackageManagementSolution Solution { get; private set; }
@ -76,6 +80,7 @@ namespace ICSharpCode.PackageManagement @@ -76,6 +80,7 @@ namespace ICSharpCode.PackageManagement
{
RunPackageOperations();
UpdatePackageReferences();
packageManagementEvents.OnParentPackagesUpdated(Packages);
}
void RunPackageOperations()

4
src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackagesViewModel.cs

@ -15,6 +15,7 @@ namespace ICSharpCode.PackageManagement @@ -15,6 +15,7 @@ namespace ICSharpCode.PackageManagement
UpdatedPackages updatedPackages;
string errorMessage = String.Empty;
ILogger logger;
IPackageManagementEvents packageManagementEvents;
public UpdatedPackagesViewModel(
IPackageManagementSolution solution,
@ -28,6 +29,7 @@ namespace ICSharpCode.PackageManagement @@ -28,6 +29,7 @@ namespace ICSharpCode.PackageManagement
{
this.selectedProjects = new PackageManagementSelectedProjects(solution);
this.logger = packageViewModelFactory.Logger;
this.packageManagementEvents = packageViewModelFactory.PackageManagementEvents;
ShowPackageSources = true;
ShowUpdateAllPackages = true;
}
@ -68,7 +70,7 @@ namespace ICSharpCode.PackageManagement @@ -68,7 +70,7 @@ namespace ICSharpCode.PackageManagement
protected override void TryUpdatingAllPackages()
{
var factory = new UpdatePackagesActionFactory(logger);
var factory = new UpdatePackagesActionFactory(logger, packageManagementEvents);
IUpdatePackagesAction action = factory.CreateAction(selectedProjects, GetPackagesFromViewModels());
ActionRunner.Run(action);
}

8
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementEvents.cs

@ -18,6 +18,7 @@ namespace PackageManagement.Tests.Helpers @@ -18,6 +18,7 @@ namespace PackageManagement.Tests.Helpers
public event EventHandler<PackageOperationExceptionEventArgs> PackageOperationError;
public event EventHandler<ParentPackageOperationEventArgs> ParentPackageInstalled;
public event EventHandler<ParentPackageOperationEventArgs> ParentPackageUninstalled;
public event EventHandler<ParentPackagesOperationEventArgs> ParentPackagesUpdated;
public event EventHandler<PackageOperationMessageLoggedEventArgs> PackageOperationMessageLogged;
public event EventHandler<ResolveFileConflictEventArgs> ResolveFileConflict;
#pragma warning restore 0067
@ -118,5 +119,12 @@ namespace PackageManagement.Tests.Helpers @@ -118,5 +119,12 @@ namespace PackageManagement.Tests.Helpers
MessagePassedToOnResolveFileConflict = message;
return FileConflictResolutionToReturn;
}
public IEnumerable<IPackage> PackagesPassedToOnParentPackageUpdated;
public void OnParentPackagesUpdated(IEnumerable<IPackage> packages)
{
PackagesPassedToOnParentPackageUpdated = packages;
}
}
}

6
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatePackagesAction.cs

@ -14,8 +14,10 @@ namespace PackageManagement.Tests.Helpers @@ -14,8 +14,10 @@ namespace PackageManagement.Tests.Helpers
public IPackageManagementProject ProjectPassedToCreateRunPackageScriptsAction;
public RunPackageScriptsAction RunPackageScriptsAction;
public TestableUpdatePackagesAction(IPackageManagementProject project)
: base(project)
public TestableUpdatePackagesAction(
IPackageManagementProject project,
IPackageManagementEvents packageManagementEvents)
: base(project, packageManagementEvents)
{
}

6
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdateSolutionPackagesAction.cs

@ -16,8 +16,10 @@ namespace PackageManagement.Tests.Helpers @@ -16,8 +16,10 @@ namespace PackageManagement.Tests.Helpers
public List<IPackageManagementProject> ProjectsPassedToCreateRunPackageScriptsAction;
public RunAllProjectPackageScriptsAction RunPackageScriptsAction;
public TestableUpdateSolutionPackagesAction(IPackageManagementSolution solution)
: base(solution)
public TestableUpdateSolutionPackagesAction(
IPackageManagementSolution solution,
IPackageManagementEvents packageManagementEvents)
: base(solution, packageManagementEvents)
{
}

35
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementEventsTests.cs

@ -387,5 +387,40 @@ namespace PackageManagement.Tests @@ -387,5 +387,40 @@ namespace PackageManagement.Tests
Assert.AreEqual(FileConflictResolution.IgnoreAll, resolution);
}
[Test]
public void OnParentPackagesUpdated_OneEventSubscriber_PackagesUpdatedEventFired()
{
CreateEvents();
ParentPackagesOperationEventArgs eventArgs = null;
events.ParentPackagesUpdated += (sender, e) => eventArgs = e;
var packages = new FakePackage[] { new FakePackage("Test") };
events.OnParentPackagesUpdated(packages);
Assert.AreEqual(packages, eventArgs.Packages);
}
[Test]
public void OnParentPackagesUpdated_OneEventSubscriber_SenderIsPackageManagementEvents()
{
CreateEvents();
object eventSender = null;
events.ParentPackagesUpdated += (sender, e) => eventSender = sender;
var packages = new FakePackage[] { new FakePackage("Test") };
events.OnParentPackagesUpdated(packages);
Assert.AreEqual(events, eventSender);
}
[Test]
public void OnParentPackagesUpdated_NoEventSubscribers_NullReferenceExceptionNotThrown()
{
CreateEvents();
var packages = new FakePackage[] { new FakePackage("Test") };
Assert.DoesNotThrow(() => events.OnParentPackagesUpdated(packages));
}
}
}

2
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementProjectTests.cs

@ -66,7 +66,7 @@ namespace PackageManagement.Tests @@ -66,7 +66,7 @@ namespace PackageManagement.Tests
void CreateUpdatePackagesAction()
{
updatePackagesAction = new UpdatePackagesAction(project);
updatePackagesAction = new UpdatePackagesAction(project, null);
}
[Test]

17
src/AddIns/Misc/PackageManagement/Test/Src/ProjectBrowserRefresherTests.cs

@ -31,7 +31,12 @@ namespace PackageManagement.Tests @@ -31,7 +31,12 @@ namespace PackageManagement.Tests
{
packageManagementEvents.OnParentPackageUninstalled(new FakePackage("Test"));
}
void RaiseOnParentPackagesUpdatedEvent()
{
packageManagementEvents.OnParentPackagesUpdated(new FakePackage[0]);
}
[Test]
public void OnParentPackageInstalled_EventFires_ProjectBrowserIsRefreshed()
{
@ -49,5 +54,15 @@ namespace PackageManagement.Tests @@ -49,5 +54,15 @@ namespace PackageManagement.Tests
Assert.IsTrue(fakeProjectService.IsRefreshProjectBrowserCalled);
}
[Test]
public void OnParentPackagesUpdated_EventFires_ProjectBrowserIsRefreshed()
{
CreateProjectBrowserRefresher();
RaiseOnParentPackagesUpdatedEvent();
Assert.IsTrue(fakeProjectService.IsRefreshProjectBrowserCalled);
}
}
}

2
src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs

@ -273,7 +273,7 @@ namespace PackageManagement.Tests @@ -273,7 +273,7 @@ namespace PackageManagement.Tests
UpdatePackagesAction CreateUpdatePackagesAction()
{
return new UpdatePackagesAction(new FakePackageManagementProject());
return new UpdatePackagesAction(new FakePackageManagementProject(), null);
}
UpdatePackagesAction CreateUpdatePackagesActionWithPackages(params IPackageFromRepository[] packages)

61
src/AddIns/Misc/PackageManagement/Test/Src/ThreadSafePackageManagementEventsTests.cs

@ -506,5 +506,66 @@ namespace PackageManagement.Tests @@ -506,5 +506,66 @@ namespace PackageManagement.Tests
Assert.IsFalse(eventHandlerFired);
}
[Test]
public void OnParentPackagesUpdated_NoInvokeRequired_NonThreadSafeOnParentPackagesUpdatedMethodCalled()
{
CreateEvents();
var expectedPackages = new FakePackage[] { new FakePackage() };
threadSafeEvents.OnParentPackagesUpdated(expectedPackages);
IEnumerable<IPackage> packages = fakeEvents.PackagesPassedToOnParentPackageUpdated;
Assert.AreEqual(expectedPackages, packages);
}
[Test]
public void ParentPackagesUpdated_UnsafeEventFired_ThreadSafeEventFired()
{
CreateEventsWithRealPackageManagementEvents();
bool fired = false;
threadSafeEvents.ParentPackagesUpdated += (sender, e) => fired = true;
unsafeEvents.OnParentPackagesUpdated(null);
Assert.IsTrue(fired);
}
[Test]
public void ParentPackagesUpdated_UnsafeEventFiredAndInvokeRequired_ThreadSafeEventIsSafelyInvoked()
{
CreateEventsWithRealPackageManagementEvents();
fakeWorkbench.InvokeRequiredReturnValue = true;
threadSafeEvents.ParentPackagesUpdated += OnEventHandlerFired;
var expectedPackages = new FakePackage[] { new FakePackage() };
unsafeEvents.OnParentPackagesUpdated(expectedPackages);
var eventArgs = fakeWorkbench.Arg2PassedToSafeThreadAsyncCall as ParentPackagesOperationEventArgs;
Assert.AreEqual(expectedPackages, eventArgs.Packages);
}
[Test]
public void ParentPackagesUpdated_UnsafeEventFiredAndInvokeRequiredButNoEventHandlerRegistered_ThreadSafeEventIsNotInvoked()
{
CreateEventsWithRealPackageManagementEvents();
fakeWorkbench.InvokeRequiredReturnValue = true;
var packages = new FakePackage[] { new FakePackage() };
unsafeEvents.OnParentPackagesUpdated(packages);
Assert.IsFalse(fakeWorkbench.IsSafeThreadAsyncCallMade);
}
[Test]
public void Dispose_ParentPackagesUpdatedHandlerExistsAndThreadUnsafeEventFiredAfterDispose_ThreadSafeEventIsNotFired()
{
CreateEventsWithRealPackageManagementEvents();
eventHandlerFired = false;
threadSafeEvents.ParentPackagesUpdated += OnEventHandlerFired;
threadSafeEvents.Dispose();
unsafeEvents.OnParentPackagesUpdated(new FakePackage[0]);
Assert.IsFalse(eventHandlerFired);
}
}
}

23
src/AddIns/Misc/PackageManagement/Test/Src/UpdatePackagesActionTests.cs

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
using System;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.Scripting;
using NuGet;
using NUnit.Framework;
@ -16,11 +17,13 @@ namespace PackageManagement.Tests @@ -16,11 +17,13 @@ namespace PackageManagement.Tests
{
TestableUpdatePackagesAction action;
IPackageManagementProject project;
IPackageManagementEvents packageEvents;
void CreateAction()
{
CreateSolution();
action = new TestableUpdatePackagesAction(project);
packageEvents = MockRepository.GenerateStub<IPackageManagementEvents>();
action = new TestableUpdatePackagesAction(project, packageEvents);
}
void CreateActionWithOperations(params PackageOperation[] operations)
@ -49,6 +52,13 @@ namespace PackageManagement.Tests @@ -49,6 +52,13 @@ namespace PackageManagement.Tests
return MockRepository.GenerateStub<IPackageScriptRunner>();
}
FakePackage AddPackageToAction(string id, string version)
{
var package = new FakePackage(id, version);
action.AddPackages(new FakePackage[] { package });
return package;
}
[Test]
public void UpdateDependencies_DefaultValue_IsTrue()
{
@ -161,5 +171,16 @@ namespace PackageManagement.Tests @@ -161,5 +171,16 @@ namespace PackageManagement.Tests
project.AssertWasCalled(p => p.UpdatePackages(action));
}
[Test]
public void Execute_ActionHasOnePackage_ParentPackagesUpdatedEventIsFired()
{
CreateAction();
AddPackageToAction("Test", "1.0");
action.Execute();
packageEvents.AssertWasCalled(events => events.OnParentPackagesUpdated(action.Packages));
}
}
}

18
src/AddIns/Misc/PackageManagement/Test/Src/UpdateSolutionPackagesActionTests.cs

@ -19,11 +19,13 @@ namespace PackageManagement.Tests @@ -19,11 +19,13 @@ namespace PackageManagement.Tests
IPackageManagementSolution solution;
List<IPackageManagementProject> projects;
IPackageRepository sourceRepository;
IPackageManagementEvents packageEvents;
void CreateAction()
{
CreateSolution();
action = new TestableUpdateSolutionPackagesAction(solution);
packageEvents = MockRepository.GenerateStub<IPackageManagementEvents>();
action = new TestableUpdateSolutionPackagesAction(solution, packageEvents);
}
void CreateActionWithOperations(params PackageOperation[] operations)
@ -307,5 +309,19 @@ namespace PackageManagement.Tests @@ -307,5 +309,19 @@ namespace PackageManagement.Tests
Assert.AreEqual(logger, project1.Logger);
Assert.AreEqual(logger, project2.Logger);
}
[Test]
public void Execute_OneProjectThatHasOlderVersionOfPackageBeingUpdated_PackagesUpdatedEventIsFired()
{
PackageOperation operation = CreateInstallOperationWithFile(@"tools\readme.txt");
CreateActionWithOperations(operation);
IPackageFromRepository package = AddPackageToAction("Test", "1.0");
IPackageManagementProject project = AddProjectToSolution();
var expectedOperations = new PackageOperation[] { operation };
action.Execute();
packageEvents.AssertWasCalled(events => events.OnParentPackagesUpdated(action.Packages));
}
}
}

Loading…
Cancel
Save