Browse Source

Refactor PackageManagementService to reduce the number of method parameters.

pull/15/head
Matt Ward 15 years ago
parent
commit
92e828e142
  1. 15
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InstallPackageCmdlet.cs
  2. 22
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UninstallPackageCmdlet.cs
  3. 15
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs
  4. 35
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/InstallPackageCmdletTests.cs
  5. 34
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UninstallPackageCmdletTests.cs
  6. 34
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UpdatePackageCmdletTests.cs
  7. 2
      src/AddIns/Misc/PackageManagement/PackageManagement.sln
  8. 7
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  9. 26
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeInstallPackageTask.cs
  10. 138
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs
  11. 11
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManager.cs
  12. 26
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeUninstallPackageAction.cs
  13. 26
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeUpdatePackageAction.cs
  14. 34
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs
  15. 1
      src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageManager.cs
  16. 40
      src/AddIns/Misc/PackageManagement/Project/Src/InstallPackageAction.cs
  17. 4
      src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackagesViewModel.cs
  18. 135
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs
  19. 11
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
  20. 76
      src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageAction.cs
  21. 4
      src/AddIns/Misc/PackageManagement/Project/Src/RecentPackagesViewModel.cs
  22. 29
      src/AddIns/Misc/PackageManagement/Project/Src/UninstallPackageAction.cs
  23. 40
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackageAction.cs
  24. 6
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs
  25. 12
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ExceptionThrowingPackageManagementService.cs
  26. 20
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/InstallPackageHelper.cs
  27. 20
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/UninstallPackageHelper.cs
  28. 19
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/UpdatePackageHelper.cs
  29. 4
      src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackagesViewModelTests.cs
  30. 110
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs
  31. 57
      src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs
  32. 4
      src/AddIns/Misc/PackageManagement/Test/Src/RecentPackagesViewModelTests.cs
  33. 17
      src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackageViewModelTests.cs

15
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InstallPackageCmdlet.cs

@ -53,7 +53,20 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -53,7 +53,20 @@ namespace ICSharpCode.PackageManagement.Cmdlets
{
PackageSource packageSource = GetActivePackageSource(Source);
MSBuildBasedProject project = GetActiveProject(ProjectName);
PackageManagementService.InstallPackage(Id, Version, project, packageSource, IgnoreDependencies.IsPresent);
InstallPackageAction action = CreateInstallPackageTask(packageSource, project);
action.Execute();
}
InstallPackageAction CreateInstallPackageTask(PackageSource packageSource, MSBuildBasedProject project)
{
InstallPackageAction action = PackageManagementService.CreateInstallPackageAction();
action.PackageId = Id;
action.PackageVersion = Version;
action.Project = project;
action.PackageSource = packageSource;
action.IgnoreDependencies = IgnoreDependencies.IsPresent;
return action;
}
}
}

22
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UninstallPackageCmdlet.cs

@ -54,18 +54,26 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -54,18 +54,26 @@ namespace ICSharpCode.PackageManagement.Cmdlets
MSBuildBasedProject project = GetActiveProject(ProjectName);
PackageSource packageSource = GetActivePackageSource();
PackageManagementService.UninstallPackage(
Id,
Version,
project,
packageSource,
Force.IsPresent,
RemoveDependencies.IsPresent);
UninstallPackageAction action = CreateUninstallPackageAction(project, packageSource);
action.Execute();
}
PackageSource GetActivePackageSource()
{
return GetActivePackageSource(null);
}
UninstallPackageAction CreateUninstallPackageAction(MSBuildBasedProject project, PackageSource packageSource)
{
var action = PackageManagementService.CreateUninstallPackageAction();
action.PackageId = Id;
action.PackageVersion = Version;
action.Project = project;
action.PackageSource = packageSource;
action.ForceRemove = Force.IsPresent;
action.RemoveDependencies = RemoveDependencies.IsPresent;
return action;
}
}
}

15
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs

@ -53,7 +53,20 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -53,7 +53,20 @@ namespace ICSharpCode.PackageManagement.Cmdlets
{
PackageSource packageSource = GetActivePackageSource(Source);
MSBuildBasedProject project = GetActiveProject(ProjectName);
PackageManagementService.UpdatePackage(Id, Version, project, packageSource, !IgnoreDependencies.IsPresent);
UpdatePackageAction action = CreateUpdatePackageAction(packageSource, project);
action.Execute();
}
UpdatePackageAction CreateUpdatePackageAction(PackageSource packageSource, MSBuildBasedProject project)
{
var action = PackageManagementService.CreateUpdatePackageAction();
action.PackageSource = packageSource;
action.Project = project;
action.PackageId = Id;
action.PackageVersion = Version;
action.UpdateDependencies = !IgnoreDependencies.IsPresent;
return action;
}
}
}

35
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/InstallPackageCmdletTests.cs

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
using System;
using System.Management.Automation;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.Scripting;
using NuGet;
@ -18,6 +19,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -18,6 +19,7 @@ namespace PackageManagement.Cmdlets.Tests
TestableInstallPackageCmdlet cmdlet;
FakeCmdletTerminatingError fakeTerminatingError;
FakePackageManagementService fakePackageManagementService;
FakeInstallPackageAction fakeInstallPackageTask;
void CreateCmdletWithoutActiveProject()
{
@ -25,6 +27,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -25,6 +27,7 @@ namespace PackageManagement.Cmdlets.Tests
fakeTerminatingError = cmdlet.FakeCmdletTerminatingError;
fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost;
fakePackageManagementService = cmdlet.FakePackageManagementService;
fakeInstallPackageTask = fakePackageManagementService.ActionToReturnFromCreateInstallPackageAction;
}
void CreateCmdletWithActivePackageSourceAndProject()
@ -94,7 +97,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -94,7 +97,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualPackageId = fakePackageManagementService.PackageIdPassedToInstallPackage;
var actualPackageId = fakeInstallPackageTask.PackageId;
Assert.AreEqual("Test", actualPackageId);
}
@ -108,7 +111,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -108,7 +111,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualPackageSource = fakePackageManagementService.PackageSourcePassedToInstallPackage;
var actualPackageSource = fakeInstallPackageTask.PackageSource;
Assert.AreEqual(packageSource, actualPackageSource);
}
@ -122,7 +125,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -122,7 +125,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualProject = fakePackageManagementService.ProjectPassedToInstallPackage;
var actualProject = fakeInstallPackageTask.Project;
Assert.AreEqual(project, actualProject);
}
@ -136,7 +139,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -136,7 +139,7 @@ namespace PackageManagement.Cmdlets.Tests
EnableIgnoreDependenciesParameter();
RunCmdlet();
bool result = fakePackageManagementService.IgnoreDependenciesPassedToInstallPackage;
bool result = fakeInstallPackageTask.IgnoreDependencies;
Assert.IsTrue(result);
}
@ -149,7 +152,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -149,7 +152,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
bool result = fakePackageManagementService.IgnoreDependenciesPassedToInstallPackage;
bool result = fakeInstallPackageTask.IgnoreDependencies;
Assert.IsFalse(result);
}
@ -164,7 +167,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -164,7 +167,7 @@ namespace PackageManagement.Cmdlets.Tests
RunCmdlet();
var expected = "http://sharpdevelop.net/packages";
var actual = fakePackageManagementService.PackageSourcePassedToInstallPackage.Source;
var actual = fakeInstallPackageTask.PackageSource.Source;
Assert.AreEqual(expected, actual);
}
@ -179,7 +182,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -179,7 +182,7 @@ namespace PackageManagement.Cmdlets.Tests
SetVersionParameter(version);
RunCmdlet();
var actualVersion = fakePackageManagementService.VersionPassedToInstallPackage;
var actualVersion = fakeInstallPackageTask.PackageVersion;
Assert.AreEqual(version, actualVersion);
}
@ -192,7 +195,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -192,7 +195,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualVersion = fakePackageManagementService.VersionPassedToInstallPackage;
var actualVersion = fakeInstallPackageTask.PackageVersion;
Assert.IsNull(actualVersion);
}
@ -207,7 +210,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -207,7 +210,7 @@ namespace PackageManagement.Cmdlets.Tests
SetProjectNameParameter("MyProject");
RunCmdlet();
var actualProject = fakePackageManagementService.ProjectPassedToInstallPackage;
var actualProject = fakeInstallPackageTask.Project;
var expectedProject = fakePackageManagementService.FakeProjectToReturnFromGetProject;
Assert.AreEqual(expectedProject, actualProject);
@ -227,5 +230,19 @@ namespace PackageManagement.Cmdlets.Tests @@ -227,5 +230,19 @@ namespace PackageManagement.Cmdlets.Tests
Assert.AreEqual(expected, actual);
}
[Test]
public void ProcessRecord_PackageIdSpecified_PackageIsInstalled()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
var packageSource = AddPackageSourceToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
bool result = fakeInstallPackageTask.IsExecuteCalled;
Assert.IsTrue(result);
}
}
}

34
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UninstallPackageCmdletTests.cs

@ -16,6 +16,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -16,6 +16,7 @@ namespace PackageManagement.Cmdlets.Tests
TestableUninstallPackageCmdlet cmdlet;
FakeCmdletTerminatingError fakeTerminatingError;
FakePackageManagementService fakePackageManagementService;
FakeUninstallPackageAction uninstallPackageAction;
void CreateCmdletWithoutActiveProject()
{
@ -23,6 +24,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -23,6 +24,7 @@ namespace PackageManagement.Cmdlets.Tests
fakeTerminatingError = cmdlet.FakeCmdletTerminatingError;
fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost;
fakePackageManagementService = cmdlet.FakePackageManagementService;
uninstallPackageAction = fakePackageManagementService.ActionToReturnFromCreateUninstallPackageAction;
}
void CreateCmdletWithActivePackageSourceAndProject()
@ -92,7 +94,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -92,7 +94,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualPackageId = fakePackageManagementService.PackageIdPassedToUninstallPackage;
var actualPackageId = uninstallPackageAction.PackageId;
Assert.AreEqual("Test", actualPackageId);
}
@ -106,7 +108,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -106,7 +108,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualProject = fakePackageManagementService.ProjectPassedToUninstallPackage;
var actualProject = uninstallPackageAction.Project;
Assert.AreEqual(project, actualProject);
}
@ -120,7 +122,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -120,7 +122,7 @@ namespace PackageManagement.Cmdlets.Tests
EnableForceParameter();
RunCmdlet();
bool result = fakePackageManagementService.ForceRemovePassedToUninstallPackage;
bool result = uninstallPackageAction.ForceRemove;
Assert.IsTrue(result);
}
@ -133,7 +135,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -133,7 +135,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
bool result = fakePackageManagementService.ForceRemovePassedToUninstallPackage;
bool result = uninstallPackageAction.ForceRemove;
Assert.IsFalse(result);
}
@ -147,7 +149,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -147,7 +149,7 @@ namespace PackageManagement.Cmdlets.Tests
EnableRemoveDependenciesParameter();
RunCmdlet();
bool result = fakePackageManagementService.RemoveDependenciesPassedToUninstallPackage;
bool result = uninstallPackageAction.RemoveDependencies;
Assert.IsTrue(result);
}
@ -160,7 +162,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -160,7 +162,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
bool result = fakePackageManagementService.RemoveDependenciesPassedToUninstallPackage;
bool result = uninstallPackageAction.RemoveDependencies;
Assert.IsFalse(result);
}
@ -175,7 +177,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -175,7 +177,7 @@ namespace PackageManagement.Cmdlets.Tests
SetVersionParameter(version);
RunCmdlet();
var actualVersion = fakePackageManagementService.VersionPassedToUninstallPackage;
var actualVersion = uninstallPackageAction.PackageVersion;
Assert.AreEqual(version, actualVersion);
}
@ -188,7 +190,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -188,7 +190,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualVersion = fakePackageManagementService.VersionPassedToUninstallPackage;
var actualVersion = uninstallPackageAction.PackageVersion;
Assert.IsNull(actualVersion);
}
@ -203,7 +205,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -203,7 +205,7 @@ namespace PackageManagement.Cmdlets.Tests
SetProjectNameParameter("MyProject");
RunCmdlet();
var actualProject = fakePackageManagementService.ProjectPassedToUninstallPackage;
var actualProject = uninstallPackageAction.Project;
var expectedProject = fakePackageManagementService.FakeProjectToReturnFromGetProject;
Assert.AreEqual(expectedProject, actualProject);
@ -233,9 +235,21 @@ namespace PackageManagement.Cmdlets.Tests @@ -233,9 +235,21 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualPackageSource = fakePackageManagementService.PackageSourcePassedToUninstallPackage;
var actualPackageSource = uninstallPackageAction.PackageSource;
Assert.AreEqual(packageSource, actualPackageSource);
}
[Test]
public void ProcessRecord_PackageIdSpecified_PackageIsUninstalled()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
var packageSource = AddPackageSourceToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
Assert.IsTrue(uninstallPackageAction.IsExecuted);
}
}
}

34
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UpdatePackageCmdletTests.cs

@ -16,6 +16,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -16,6 +16,7 @@ namespace PackageManagement.Cmdlets.Tests
TestableUpdatePackageCmdlet cmdlet;
FakeCmdletTerminatingError fakeTerminatingError;
FakePackageManagementService fakePackageManagementService;
FakeUpdatePackageAction fakeUpdatePackageAction;
void CreateCmdletWithoutActiveProject()
{
@ -23,6 +24,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -23,6 +24,7 @@ namespace PackageManagement.Cmdlets.Tests
fakeTerminatingError = cmdlet.FakeCmdletTerminatingError;
fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost;
fakePackageManagementService = cmdlet.FakePackageManagementService;
fakeUpdatePackageAction = fakePackageManagementService.ActionToReturnFromCreateUpdatePackageAction;
}
void CreateCmdletWithActivePackageSourceAndProject()
@ -92,7 +94,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -92,7 +94,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualPackageId = fakePackageManagementService.PackageIdPassedToUpdatePackage;
var actualPackageId = fakeUpdatePackageAction.PackageId;
Assert.AreEqual("Test", actualPackageId);
}
@ -106,7 +108,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -106,7 +108,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualPackageSource = fakePackageManagementService.PackageSourcePassedToUpdatePackage;
var actualPackageSource = fakeUpdatePackageAction.PackageSource;
Assert.AreEqual(packageSource, actualPackageSource);
}
@ -120,7 +122,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -120,7 +122,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualProject = fakePackageManagementService.ProjectPassedToUpdatePackage;
var actualProject = fakeUpdatePackageAction.Project;
Assert.AreEqual(project, actualProject);
}
@ -134,7 +136,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -134,7 +136,7 @@ namespace PackageManagement.Cmdlets.Tests
EnableIgnoreDependenciesParameter();
RunCmdlet();
bool result = fakePackageManagementService.UpdateDependenciesPassedToUpdatePackage;
bool result = fakeUpdatePackageAction.UpdateDependencies;
Assert.IsFalse(result);
}
@ -147,7 +149,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -147,7 +149,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
bool result = fakePackageManagementService.UpdateDependenciesPassedToUpdatePackage;
bool result = fakeUpdatePackageAction.UpdateDependencies;
Assert.IsTrue(result);
}
@ -162,7 +164,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -162,7 +164,7 @@ namespace PackageManagement.Cmdlets.Tests
RunCmdlet();
var expected = "http://sharpdevelop.net/packages";
var actual = fakePackageManagementService.PackageSourcePassedToUpdatePackage.Source;
var actual = fakeUpdatePackageAction.PackageSource.Source;
Assert.AreEqual(expected, actual);
}
@ -177,7 +179,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -177,7 +179,7 @@ namespace PackageManagement.Cmdlets.Tests
SetVersionParameter(version);
RunCmdlet();
var actualVersion = fakePackageManagementService.VersionPassedToUpdatePackage;
var actualVersion = fakeUpdatePackageAction.PackageVersion;
Assert.AreEqual(version, actualVersion);
}
@ -190,7 +192,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -190,7 +192,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualVersion = fakePackageManagementService.VersionPassedToUpdatePackage;
var actualVersion = fakeUpdatePackageAction.PackageVersion;
Assert.IsNull(actualVersion);
}
@ -205,7 +207,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -205,7 +207,7 @@ namespace PackageManagement.Cmdlets.Tests
SetProjectNameParameter("MyProject");
RunCmdlet();
var actualProject = fakePackageManagementService.ProjectPassedToUpdatePackage;
var actualProject = fakeUpdatePackageAction.Project;
var expectedProject = fakePackageManagementService.FakeProjectToReturnFromGetProject;
Assert.AreEqual(expectedProject, actualProject);
@ -225,5 +227,19 @@ namespace PackageManagement.Cmdlets.Tests @@ -225,5 +227,19 @@ namespace PackageManagement.Cmdlets.Tests
Assert.AreEqual(expected, actual);
}
[Test]
public void ProcessRecord_PackageIdSpecified_PackageIsUpdated()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
var packageSource = AddPackageSourceToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
bool executed = fakeUpdatePackageAction.IsExecuted;
Assert.IsTrue(executed);
}
}
}

2
src/AddIns/Misc/PackageManagement/PackageManagement.sln

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.1.0.7318-alpha
# SharpDevelop 4.1.0.7374-alpha
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackageManagement", "Project\PackageManagement.csproj", "{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackageManagement.Tests", "Test\PackageManagement.Tests.csproj", "{56E98A01-8398-4A08-9578-C7337711A52B}"

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

@ -79,6 +79,7 @@ @@ -79,6 +79,7 @@
<Compile Include="Src\Design\DesignTimePackageManagementService.cs" />
<Compile Include="Src\Design\DesignTimePackagesViewModel.cs" />
<Compile Include="Src\Design\FakeFileSystem.cs" />
<Compile Include="Src\Design\FakeInstallPackageTask.cs" />
<Compile Include="Src\Design\FakePackage.cs" />
<Compile Include="Src\Design\FakePackageAssemblyReference.cs" />
<Compile Include="Src\Design\FakePackageManagementOutputMessagesView.cs" />
@ -88,10 +89,13 @@ @@ -88,10 +89,13 @@
<Compile Include="Src\Design\FakePackageRepository.cs" />
<Compile Include="Src\Design\FakeProjectManager.cs" />
<Compile Include="Src\Design\FakeProjectSystem.cs" />
<Compile Include="Src\Design\FakeUninstallPackageAction.cs" />
<Compile Include="Src\Design\FakeUpdatePackageAction.cs" />
<Compile Include="Src\Design\WpfDesigner.cs" />
<Compile Include="Src\ICompilerMessageView.cs" />
<Compile Include="Src\IMessageReporter.cs" />
<Compile Include="Src\IMessageViewCategory.cs" />
<Compile Include="Src\InstallPackageAction.cs" />
<Compile Include="Src\IPackageManagementOutputMessagesView.cs" />
<Compile Include="Src\IPackageRepositoryCache.cs" />
<Compile Include="Src\IPackageOperationResolverFactory.cs" />
@ -142,7 +146,9 @@ @@ -142,7 +146,9 @@
<SubType>Code</SubType>
</Compile>
<Compile Include="Src\PackagesViewModel.cs" />
<Compile Include="Src\ProcessPackageAction.cs" />
<Compile Include="Src\Scripting\PowerShellHostRawUserInterface.cs" />
<Compile Include="Src\UninstallPackageAction.cs" />
<Compile Include="Src\UpdatedPackagesViewModel.cs" />
<Compile Include="Src\PackageViewModel.cs" />
<Compile Include="Src\PackageViewModelFactory.cs" />
@ -188,6 +194,7 @@ @@ -188,6 +194,7 @@
<Compile Include="Src\UpdatedPackages.cs" />
<Compile Include="Src\UpdatedPackageViewModel.cs" />
<Compile Include="Src\UpdatedPackageViewModelFactory.cs" />
<Compile Include="Src\UpdatePackageAction.cs" />
<Compile Include="Src\ViewModelBase.cs" />
<Compile Include="Src\ViewModelLocator.cs" />
</ItemGroup>

26
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeInstallPackageTask.cs

@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
// 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;
namespace ICSharpCode.PackageManagement.Design
{
public class FakeInstallPackageAction : InstallPackageAction
{
public FakeInstallPackageAction()
: base(null)
{
}
public bool IsExecuteCalled;
protected override void ExecuteCore()
{
IsExecuteCalled = true;
}
protected override void BeforeExecute()
{
}
}
}

138
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs

@ -12,41 +12,32 @@ namespace ICSharpCode.PackageManagement.Design @@ -12,41 +12,32 @@ namespace ICSharpCode.PackageManagement.Design
{
public class FakePackageManagementService : IPackageManagementService
{
public event EventHandler PackageInstalled;
public event EventHandler ParentPackageInstalled;
PackageManagementOptions options = new PackageManagementOptions(new Properties());
public List<PackageOperation> PackageOperationsPassedToInstallPackage = new List<PackageOperation>();
public FakePackageManagementProjectService FakeProjectService = new FakePackageManagementProjectService();
public IPackageManagementProjectService ProjectService {
get { return FakeProjectService; }
}
protected virtual void OnPackageInstalled()
protected virtual void OnParentPackageInstalled()
{
if (PackageInstalled != null) {
PackageInstalled(this, new EventArgs());
if (ParentPackageInstalled != null) {
ParentPackageInstalled(this, new EventArgs());
}
}
public event EventHandler PackageUninstalled;
public event EventHandler ParentPackageUninstalled;
protected virtual void OnPackageUninstalled()
protected virtual void OnParentPackageUninstalled()
{
if (PackageUninstalled != null) {
PackageUninstalled(this, new EventArgs());
if (ParentPackageUninstalled != null) {
ParentPackageUninstalled(this, new EventArgs());
}
}
public IPackageRepository RepositoryPassedToInstallPackage;
public IPackage PackagePassedToInstallPackage;
public bool IsInstallPackageCalled;
public IPackageRepository RepositoryPassedToUninstallPackage;
public IPackage PackagePassedToUninstallPackage;
public FakeProjectManager FakeActiveProjectManager { get; set; }
public FakePackageRepository FakeActivePackageRepository {
@ -67,28 +58,30 @@ namespace ICSharpCode.PackageManagement.Design @@ -67,28 +58,30 @@ namespace ICSharpCode.PackageManagement.Design
get { return FakeActiveProjectManager; }
}
public virtual void InstallPackage(IPackageRepository repository, IPackage package, IEnumerable<PackageOperation> operations)
public FakeInstallPackageAction ActionToReturnFromCreateInstallPackageAction =
new FakeInstallPackageAction();
public virtual InstallPackageAction CreateInstallPackageAction()
{
IsInstallPackageCalled = true;
RepositoryPassedToInstallPackage = repository;
PackagePassedToInstallPackage = package;
PackageOperationsPassedToInstallPackage.AddRange(operations);
return ActionToReturnFromCreateInstallPackageAction;
}
public virtual void UninstallPackage(IPackageRepository repository, IPackage package)
public FakeUninstallPackageAction ActionToReturnFromCreateUninstallPackageAction =
new FakeUninstallPackageAction();
public virtual UninstallPackageAction CreateUninstallPackageAction()
{
RepositoryPassedToUninstallPackage = repository;
PackagePassedToUninstallPackage = package;
return ActionToReturnFromCreateUninstallPackageAction;
}
public void FirePackageInstalled()
public void FireParentPackageInstalled()
{
OnPackageInstalled();
OnParentPackageInstalled();
}
public void FirePackageUninstalled()
public void FireParentPackageUninstalled()
{
OnPackageUninstalled();
OnParentPackageUninstalled();
}
public void AddPackageToProjectLocalRepository(FakePackage package)
@ -174,6 +167,19 @@ namespace ICSharpCode.PackageManagement.Design @@ -174,6 +167,19 @@ namespace ICSharpCode.PackageManagement.Design
return FakePackageManagerToReturnFromCreatePackageManagerForActiveProject;
}
public ISharpDevelopPackageManager CreatePackageManagerForActiveProject(IPackageRepository packageRepository)
{
return FakePackageManagerToReturnFromCreatePackageManagerForActiveProject;
}
public FakePackageManager FakePackageManagerToReturnFromCreatePackageManager =
new FakePackageManager();
public ISharpDevelopPackageManager CreatePackageManager(PackageSource packageSource, MSBuildBasedProject project)
{
return FakePackageManagerToReturnFromCreatePackageManager;
}
public FakePackage AddFakePackageWithVersionToAggregrateRepository(string version)
{
return AddFakePackageWithVersionToAggregrateRepository("Test", version);
@ -186,26 +192,6 @@ namespace ICSharpCode.PackageManagement.Design @@ -186,26 +192,6 @@ namespace ICSharpCode.PackageManagement.Design
return package;
}
public string PackageIdPassedToInstallPackage;
public PackageSource PackageSourcePassedToInstallPackage;
public MSBuildBasedProject ProjectPassedToInstallPackage;
public bool IgnoreDependenciesPassedToInstallPackage;
public Version VersionPassedToInstallPackage;
public void InstallPackage(
string packageId,
Version version,
MSBuildBasedProject project,
PackageSource packageSource,
bool ignoreDependencies)
{
PackageIdPassedToInstallPackage = packageId;
VersionPassedToInstallPackage = version;
ProjectPassedToInstallPackage = project;
PackageSourcePassedToInstallPackage = packageSource;
IgnoreDependenciesPassedToInstallPackage = ignoreDependencies;
}
public MSBuildBasedProject FakeProjectToReturnFromGetProject;
public string NamePassedToGetProject;
@ -215,58 +201,20 @@ namespace ICSharpCode.PackageManagement.Design @@ -215,58 +201,20 @@ namespace ICSharpCode.PackageManagement.Design
return FakeProjectToReturnFromGetProject;
}
public string PackageIdPassedToUninstallPackage;
public MSBuildBasedProject ProjectPassedToUninstallPackage;
public Version VersionPassedToUninstallPackage;
public PackageSource PackageSourcePassedToUninstallPackage;
public bool ForceRemovePassedToUninstallPackage;
public bool RemoveDependenciesPassedToUninstallPackage;
public void UninstallPackage(
string packageId,
Version version,
MSBuildBasedProject project,
PackageSource packageSource,
bool forceRemove,
bool removeDependencies)
public FakeUpdatePackageAction ActionToReturnFromCreateUpdatePackageAction =
new FakeUpdatePackageAction();
public UpdatePackageAction CreateUpdatePackageAction()
{
PackageIdPassedToUninstallPackage = packageId;
VersionPassedToUninstallPackage = version;
ProjectPassedToUninstallPackage = project;
PackageSourcePassedToUninstallPackage = packageSource;
ForceRemovePassedToUninstallPackage = forceRemove;
RemoveDependenciesPassedToUninstallPackage = removeDependencies;
return ActionToReturnFromCreateUpdatePackageAction;
}
public IPackageRepository RepositoryPassedToUpdatePackage;
public IPackage PackagePassedToUpdatePackage;
public IEnumerable<PackageOperation> PackageOperationsPassedToUpdatePackage;
public void UpdatePackage(IPackageRepository repository, IPackage package, IEnumerable<PackageOperation> operations)
public void OnParentPackageInstalled(IPackage package)
{
RepositoryPassedToUpdatePackage = repository;
PackagePassedToUpdatePackage = package;
PackageOperationsPassedToUpdatePackage = operations;
}
public string PackageIdPassedToUpdatePackage;
public Version VersionPassedToUpdatePackage;
public MSBuildBasedProject ProjectPassedToUpdatePackage;
public PackageSource PackageSourcePassedToUpdatePackage;
public bool UpdateDependenciesPassedToUpdatePackage;
public void UpdatePackage(
string packageId,
Version version,
MSBuildBasedProject project,
PackageSource packageSource,
bool updateDependencies)
public void OnParentPackageUninstalled(IPackage package)
{
PackageIdPassedToUpdatePackage = packageId;
VersionPassedToUpdatePackage = version;
ProjectPassedToUpdatePackage = project;
PackageSourcePassedToUpdatePackage = packageSource;
UpdateDependenciesPassedToUpdatePackage = updateDependencies;
}
}
}

11
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManager.cs

@ -56,9 +56,12 @@ namespace ICSharpCode.PackageManagement.Design @@ -56,9 +56,12 @@ namespace ICSharpCode.PackageManagement.Design
public ISharpDevelopProjectManager ProjectManager { get; set; }
public ILogger LoggerSetBeforeInstallPackageCalled;
public FakePackageRepository FakeSourceRepository = new FakePackageRepository();
public FakePackageManager()
{
ProjectManager = FakeProjectManager;
SourceRepository = FakeSourceRepository;
}
public void InstallPackage(IPackage package, bool ignoreDependencies)
@ -80,9 +83,15 @@ namespace ICSharpCode.PackageManagement.Design @@ -80,9 +83,15 @@ namespace ICSharpCode.PackageManagement.Design
throw new NotImplementedException();
}
public bool ForceRemovePassedToUninstallPackage;
public bool RemoveDependenciesPassedToUninstallPackage;
public void UninstallPackage(IPackage package, bool forceRemove, bool removeDependencies)
{
throw new NotImplementedException();
PackagePassedToUninstallPackage = package;
ForceRemovePassedToUninstallPackage = forceRemove;
RemoveDependenciesPassedToUninstallPackage = removeDependencies;
IsRefreshProjectBrowserCalledWhenUninstallPackageCalled = FakeProjectService.IsRefreshProjectBrowserCalled;
}
public void UninstallPackage(string packageId, Version version, bool forceRemove, bool removeDependencies)

26
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeUninstallPackageAction.cs

@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
// 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;
namespace ICSharpCode.PackageManagement.Design
{
public class FakeUninstallPackageAction : UninstallPackageAction
{
public bool IsExecuted;
public FakeUninstallPackageAction()
: base(null)
{
}
protected override void ExecuteCore()
{
IsExecuted = true;
}
protected override void BeforeExecute()
{
}
}
}

26
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeUpdatePackageAction.cs

@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
// 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;
namespace ICSharpCode.PackageManagement.Design
{
public class FakeUpdatePackageAction : UpdatePackageAction
{
public bool IsExecuted;
public FakeUpdatePackageAction()
: base(null)
{
}
protected override void ExecuteCore()
{
IsExecuted = true;
}
protected override void BeforeExecute()
{
}
}
}

34
src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs

@ -10,42 +10,26 @@ namespace ICSharpCode.PackageManagement @@ -10,42 +10,26 @@ namespace ICSharpCode.PackageManagement
{
public interface IPackageManagementService
{
event EventHandler PackageInstalled;
event EventHandler PackageUninstalled;
event EventHandler ParentPackageInstalled;
event EventHandler ParentPackageUninstalled;
IPackageRepository CreateAggregatePackageRepository();
IPackageRepository CreatePackageRepository(PackageSource source);
ISharpDevelopProjectManager CreateProjectManager(IPackageRepository repository, MSBuildBasedProject project);
ISharpDevelopPackageManager CreatePackageManagerForActiveProject();
ISharpDevelopPackageManager CreatePackageManagerForActiveProject(IPackageRepository packageRepository);
ISharpDevelopPackageManager CreatePackageManager(PackageSource packageSource, MSBuildBasedProject project);
IPackageRepository ActivePackageRepository { get; }
IProjectManager ActiveProjectManager { get; }
IPackageRepository RecentPackageRepository { get; }
void InstallPackage(IPackageRepository repository, IPackage package, IEnumerable<PackageOperation> operations);
void InstallPackage(
string packageId,
Version version,
MSBuildBasedProject project,
PackageSource packageSource,
bool ignoreDependencies);
InstallPackageAction CreateInstallPackageAction();
UninstallPackageAction CreateUninstallPackageAction();
UpdatePackageAction CreateUpdatePackageAction();
void UninstallPackage(IPackageRepository repository, IPackage package);
void UninstallPackage(
string packageId,
Version version,
MSBuildBasedProject project,
PackageSource packageSource,
bool forceRemove,
bool removeDependencies);
void UpdatePackage(IPackageRepository repository, IPackage package, IEnumerable<PackageOperation> operations);
void UpdatePackage(
string packageId,
Version version,
MSBuildBasedProject project,
PackageSource packageSource,
bool updateDependencies);
void OnParentPackageInstalled(IPackage package);
void OnParentPackageUninstalled(IPackage package);
MSBuildBasedProject GetProject(string name);

1
src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageManager.cs

@ -12,7 +12,6 @@ namespace ICSharpCode.PackageManagement @@ -12,7 +12,6 @@ namespace ICSharpCode.PackageManagement
ISharpDevelopProjectManager ProjectManager { get; }
void InstallPackage(IPackage package, IEnumerable<PackageOperation> operations, bool ignoreDependencies);
void UninstallPackage(IPackage package);
void UpdatePackage(IPackage package, IEnumerable<PackageOperation> operations, bool updateDependencies);
IEnumerable<PackageOperation> GetInstallPackageOperations(IPackage package, bool ignoreDependencies);

40
src/AddIns/Misc/PackageManagement/Project/Src/InstallPackageAction.cs

@ -0,0 +1,40 @@ @@ -0,0 +1,40 @@
// 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.SharpDevelop.Project;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class InstallPackageAction : ProcessPackageAction
{
public InstallPackageAction(IPackageManagementService packageManagementService)
: base(packageManagementService)
{
}
public IEnumerable<PackageOperation> Operations { get; set; }
public bool IgnoreDependencies { get; set; }
protected override void BeforeExecute()
{
base.BeforeExecute();
GetPackageOperationsIfMissing();
}
void GetPackageOperationsIfMissing()
{
if (Operations == null) {
Operations = PackageManager.GetInstallPackageOperations(Package, IgnoreDependencies);
}
}
protected override void ExecuteCore()
{
PackageManager.InstallPackage(Package, Operations, IgnoreDependencies);
OnParentPackageInstalled();
}
}
}

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

@ -20,8 +20,8 @@ namespace ICSharpCode.PackageManagement @@ -20,8 +20,8 @@ namespace ICSharpCode.PackageManagement
ITaskFactory taskFactory)
: base(packageManagementService, messageReporter, taskFactory)
{
packageManagementService.PackageInstalled += PackageInstalled;
packageManagementService.PackageUninstalled += PackageUninstalled;
packageManagementService.ParentPackageInstalled += PackageInstalled;
packageManagementService.ParentPackageUninstalled += PackageUninstalled;
GetActiveProjectManager();
}

135
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs

@ -57,21 +57,21 @@ namespace ICSharpCode.PackageManagement @@ -57,21 +57,21 @@ namespace ICSharpCode.PackageManagement
get { return options; }
}
public event EventHandler PackageInstalled;
public event EventHandler ParentPackageInstalled;
protected virtual void OnPackageInstalled()
protected virtual void OnParentPackageInstalled()
{
if (PackageInstalled != null) {
PackageInstalled(this, new EventArgs());
if (ParentPackageInstalled != null) {
ParentPackageInstalled(this, new EventArgs());
}
}
public event EventHandler PackageUninstalled;
public event EventHandler ParentPackageUninstalled;
protected virtual void OnPackageUninstalled()
protected virtual void OnParentPackageUninstalled()
{
if (PackageUninstalled != null) {
PackageUninstalled(this, new EventArgs());
if (ParentPackageUninstalled != null) {
ParentPackageUninstalled(this, new EventArgs());
}
}
@ -111,16 +111,16 @@ namespace ICSharpCode.PackageManagement @@ -111,16 +111,16 @@ namespace ICSharpCode.PackageManagement
IProjectManager GetActiveProjectManager()
{
IPackageRepository repository = ActivePackageRepository;
ISharpDevelopPackageManager packageManager = CreatePackageManager(repository);
ISharpDevelopPackageManager packageManager = CreatePackageManagerForActiveProject(repository);
return packageManager.ProjectManager;
}
public ISharpDevelopPackageManager CreatePackageManagerForActiveProject()
{
return CreatePackageManager(ActivePackageRepository);
return CreatePackageManagerForActiveProject(ActivePackageRepository);
}
ISharpDevelopPackageManager CreatePackageManager(IPackageRepository packageRepository)
public ISharpDevelopPackageManager CreatePackageManagerForActiveProject(IPackageRepository packageRepository)
{
MSBuildBasedProject project = projectService.CurrentProject as MSBuildBasedProject;
return CreatePackageManager(packageRepository, project);
@ -149,86 +149,20 @@ namespace ICSharpCode.PackageManagement @@ -149,86 +149,20 @@ namespace ICSharpCode.PackageManagement
projectManager.Project.Logger = outputMessagesView;
}
public void InstallPackage(
IPackageRepository packageRepository,
IPackage package,
IEnumerable<PackageOperation> operations)
public InstallPackageAction CreateInstallPackageAction()
{
ISharpDevelopPackageManager packageManager = CreatePackageManager(packageRepository);
bool ignoreDependencies = false;
InstallPackage(packageManager, package, operations, ignoreDependencies);
return new InstallPackageAction(this);
}
void InstallPackage(
IPackageRepository packageRepository,
IPackage package,
IEnumerable<PackageOperation> operations,
bool ignoreDependencies)
{
ISharpDevelopPackageManager packageManager = CreatePackageManager(packageRepository);
InstallPackage(packageManager, package, operations, ignoreDependencies);
}
void InstallPackage(
ISharpDevelopPackageManager packageManager,
IPackage package,
IEnumerable<PackageOperation> operations,
bool ignoreDependencies)
{
packageManager.InstallPackage(package, operations, ignoreDependencies);
projectService.RefreshProjectBrowser();
RecentPackageRepository.AddPackage(package);
OnPackageInstalled();
}
public void InstallPackage(
string packageId,
Version version,
MSBuildBasedProject project,
PackageSource packageSource,
bool ignoreDependencies)
{
ISharpDevelopPackageManager packageManager = CreatePackageManager(packageSource, project);
IPackage package = packageManager.SourceRepository.FindPackage(packageId, version);
InstallPackage(packageManager, package, ignoreDependencies);
}
void InstallPackage(ISharpDevelopPackageManager packageManager, IPackage package, bool ignoreDependencies)
{
IEnumerable<PackageOperation> operations = packageManager.GetInstallPackageOperations(package, ignoreDependencies);
InstallPackage(packageManager, package, operations, ignoreDependencies);
}
ISharpDevelopPackageManager CreatePackageManager(PackageSource packageSource, MSBuildBasedProject project)
public ISharpDevelopPackageManager CreatePackageManager(PackageSource packageSource, MSBuildBasedProject project)
{
IPackageRepository packageRepository = CreatePackageRepository(packageSource);
return CreatePackageManager(packageRepository, project);
}
public void UninstallPackage(IPackageRepository repository, IPackage package)
public UninstallPackageAction CreateUninstallPackageAction()
{
ISharpDevelopPackageManager packageManager = CreatePackageManager(repository);
UninstallPackage(packageManager, package);
}
void UninstallPackage(ISharpDevelopPackageManager packageManager, IPackage package)
{
packageManager.UninstallPackage(package);
projectService.RefreshProjectBrowser();
OnPackageUninstalled();
}
public void UninstallPackage(
string packageId,
Version version,
MSBuildBasedProject project,
PackageSource packageSource,
bool forceRemove,
bool removeDependencies)
{
ISharpDevelopPackageManager packageManager = CreatePackageManager(packageSource, project);
IPackage package = packageManager.SourceRepository.FindPackage(packageId);
UninstallPackage(packageManager, package);
return new UninstallPackageAction(this);
}
public bool HasMultiplePackageSources {
@ -285,43 +219,22 @@ namespace ICSharpCode.PackageManagement @@ -285,43 +219,22 @@ namespace ICSharpCode.PackageManagement
return String.Equals(a, b, StringComparison.InvariantCultureIgnoreCase);
}
public void UpdatePackage(
IPackageRepository repository,
IPackage package,
IEnumerable<PackageOperation> operations)
public UpdatePackageAction CreateUpdatePackageAction()
{
ISharpDevelopPackageManager packageManager = CreatePackageManager(repository);
UpdatePackage(packageManager, package, operations, true);
return new UpdatePackageAction(this);
}
public void UpdatePackage(
string packageId,
Version version,
MSBuildBasedProject project,
PackageSource packageSource,
bool updateDependencies)
public void OnParentPackageInstalled(IPackage package)
{
ISharpDevelopPackageManager packageManager = CreatePackageManager(packageSource, project);
IPackage package = packageManager.SourceRepository.FindPackage(packageId, version);
UpdatePackage(packageManager, package, updateDependencies);
projectService.RefreshProjectBrowser();
RecentPackageRepository.AddPackage(package);
OnParentPackageInstalled();
}
void UpdatePackage(ISharpDevelopPackageManager packageManager, IPackage package, bool updateDependencies)
{
IEnumerable<PackageOperation> operations = packageManager.GetInstallPackageOperations(package, !updateDependencies);
UpdatePackage(packageManager, package, operations, updateDependencies);
}
void UpdatePackage(
ISharpDevelopPackageManager packageManager,
IPackage package,
IEnumerable<PackageOperation> operations,
bool updateDependencies)
public void OnParentPackageUninstalled(IPackage package)
{
packageManager.UpdatePackage(package, operations, updateDependencies);
projectService.RefreshProjectBrowser();
RecentPackageRepository.AddPackage(package);
OnPackageInstalled();
OnParentPackageUninstalled();
}
}
}

11
src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs

@ -281,7 +281,11 @@ namespace ICSharpCode.PackageManagement @@ -281,7 +281,11 @@ namespace ICSharpCode.PackageManagement
IPackage package,
IEnumerable<PackageOperation> packageOperations)
{
packageManagementService.InstallPackage(sourcePackageRepository, package, packageOperations);
InstallPackageAction task = packageManagementService.CreateInstallPackageAction();
task.PackageRepository = sourcePackageRepository;
task.Package = package;
task.Operations = packageOperations;
task.Execute();
}
void ReportError(Exception ex)
@ -312,7 +316,10 @@ namespace ICSharpCode.PackageManagement @@ -312,7 +316,10 @@ namespace ICSharpCode.PackageManagement
void TryUninstallingPackage()
{
try {
packageManagementService.UninstallPackage(sourcePackageRepository, package);
var action = packageManagementService.CreateUninstallPackageAction();
action.PackageRepository = sourcePackageRepository;
action.Package = package;
action.Execute();
} catch (Exception ex) {
ReportError(ex);
Log(ex.ToString());

76
src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageAction.cs

@ -0,0 +1,76 @@ @@ -0,0 +1,76 @@
// 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.SharpDevelop.Project;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public abstract class ProcessPackageAction
{
IPackageManagementService packageManagementService;
public ProcessPackageAction(IPackageManagementService packageManagementService)
{
this.packageManagementService = packageManagementService;
}
public ISharpDevelopPackageManager PackageManager { get; set; }
public IPackage Package { get; set; }
public Version PackageVersion { get; set; }
public string PackageId { get; set; }
public IPackageRepository PackageRepository { get; set; }
public PackageSource PackageSource { get; set; }
public MSBuildBasedProject Project { get; set; }
protected void OnParentPackageInstalled()
{
packageManagementService.OnParentPackageInstalled(Package);
}
protected void OnParentPackageUninstalled()
{
packageManagementService.OnParentPackageUninstalled(Package);
}
public void Execute()
{
BeforeExecute();
ExecuteCore();
}
protected virtual void BeforeExecute()
{
CreatePackageManagerIfMissing();
GetPackageIfMissing();
}
protected virtual void ExecuteCore()
{
}
void CreatePackageManagerIfMissing()
{
if (PackageManager == null) {
CreatePackageManager();
}
}
void CreatePackageManager()
{
if (PackageRepository == null) {
PackageManager = packageManagementService.CreatePackageManager(PackageSource, Project);
} else {
PackageManager = packageManagementService.CreatePackageManagerForActiveProject(PackageRepository);
}
}
void GetPackageIfMissing()
{
if (Package == null) {
Package = PackageManager.SourceRepository.FindPackage(PackageId, PackageVersion);
}
}
}
}

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

@ -18,8 +18,8 @@ namespace ICSharpCode.PackageManagement @@ -18,8 +18,8 @@ namespace ICSharpCode.PackageManagement
: base(packageManagementService, messageReporter, taskFactory)
{
recentPackageRepository = packageManagementService.RecentPackageRepository;
packageManagementService.PackageInstalled += PackageInstalled;
packageManagementService.PackageUninstalled += PackageUninstalled;
packageManagementService.ParentPackageInstalled += PackageInstalled;
packageManagementService.ParentPackageUninstalled += PackageUninstalled;
}
void PackageInstalled(object sender, EventArgs e)

29
src/AddIns/Misc/PackageManagement/Project/Src/UninstallPackageAction.cs

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
// 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.SharpDevelop.Project;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class UninstallPackageAction : ProcessPackageAction
{
IPackageManagementService packageManagementService;
public UninstallPackageAction(IPackageManagementService packageManagementService)
: base(packageManagementService)
{
this.packageManagementService = packageManagementService;
}
public bool ForceRemove { get; set; }
public bool RemoveDependencies { get; set; }
protected override void ExecuteCore()
{
PackageManager.UninstallPackage(Package, ForceRemove, RemoveDependencies);
OnParentPackageUninstalled();
}
}
}

40
src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackageAction.cs

@ -0,0 +1,40 @@ @@ -0,0 +1,40 @@
// 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 UpdatePackageAction : ProcessPackageAction
{
public UpdatePackageAction(IPackageManagementService packageManagementService)
: base(packageManagementService)
{
UpdateDependencies = true;
}
public IEnumerable<PackageOperation> Operations { get; set; }
public bool UpdateDependencies { get; set; }
protected override void BeforeExecute()
{
base.BeforeExecute();
GetPackageOperationsIfMissing();
}
void GetPackageOperationsIfMissing()
{
if (Operations == null) {
Operations = PackageManager.GetInstallPackageOperations(Package, !UpdateDependencies);
}
}
protected override void ExecuteCore()
{
PackageManager.UpdatePackage(Package, Operations, UpdateDependencies);
OnParentPackageInstalled();
}
}
}

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

@ -26,7 +26,11 @@ namespace ICSharpCode.PackageManagement @@ -26,7 +26,11 @@ namespace ICSharpCode.PackageManagement
IPackage package,
IEnumerable<PackageOperation> packageOperations)
{
packageManagementService.UpdatePackage(sourcePackageRepository, package, packageOperations);
var action = packageManagementService.CreateUpdatePackageAction();
action.PackageRepository = sourcePackageRepository;
action.Package = package;
action.Operations = packageOperations;
action.Execute();
}
}
}

12
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ExceptionThrowingPackageManagementService.cs

@ -12,8 +12,8 @@ namespace PackageManagement.Tests.Helpers @@ -12,8 +12,8 @@ namespace PackageManagement.Tests.Helpers
public class ExceptionThrowingPackageManagementService : FakePackageManagementService
{
public Exception ExeptionToThrowWhenActiveProjectManagerAccessed { get; set; }
public Exception ExeptionToThrowWhenInstallPackageCalled { get; set; }
public Exception ExeptionToThrowWhenUninstallPackageCalled { get; set; }
public Exception ExeptionToThrowWhenCreateInstallPackageTaskCalled { get; set; }
public Exception ExeptionToThrowWhenCreateUninstallPackageActionCalled { get; set; }
public Exception ExeptionToThrowWhenActiveRepositoryAccessed { get; set; }
public Exception ExceptionToThrowWhenCreatePackageManagerForActiveProjectCalled { get; set; }
@ -36,14 +36,14 @@ namespace PackageManagement.Tests.Helpers @@ -36,14 +36,14 @@ namespace PackageManagement.Tests.Helpers
set { base.ActivePackageRepository = value; }
}
public override void InstallPackage(IPackageRepository repository, IPackage package, IEnumerable<PackageOperation> operations)
public override InstallPackageAction CreateInstallPackageAction()
{
throw ExeptionToThrowWhenInstallPackageCalled;
throw ExeptionToThrowWhenCreateInstallPackageTaskCalled;
}
public override void UninstallPackage(IPackageRepository repository, IPackage package)
public override UninstallPackageAction CreateUninstallPackageAction()
{
throw ExeptionToThrowWhenUninstallPackageCalled;
throw ExeptionToThrowWhenCreateUninstallPackageActionCalled;
}
public override ISharpDevelopPackageManager CreatePackageManagerForActiveProject()

20
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/InstallPackageHelper.cs

@ -27,7 +27,11 @@ namespace PackageManagement.Tests.Helpers @@ -27,7 +27,11 @@ namespace PackageManagement.Tests.Helpers
public void InstallTestPackage()
{
packageManagementService.InstallPackage(PackageRepository, TestPackage, PackageOperations);
var task = packageManagementService.CreateInstallPackageAction();
task.Package = TestPackage;
task.PackageRepository = PackageRepository;
task.Operations = PackageOperations;
task.Execute();
}
public FakePackage AddPackageInstallOperation()
@ -45,12 +49,14 @@ namespace PackageManagement.Tests.Helpers @@ -45,12 +49,14 @@ namespace PackageManagement.Tests.Helpers
public void InstallPackageById(string packageId)
{
packageManagementService.InstallPackage(
packageId,
Version,
TestableProject,
PackageSource,
IgnoreDependencies);
var task = packageManagementService.CreateInstallPackageAction();
task.PackageId = packageId;
task.PackageVersion = Version;
task.Project = TestableProject;
task.PackageSource = PackageSource;
task.IgnoreDependencies = IgnoreDependencies;
task.Execute();
}
}
}

20
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/UninstallPackageHelper.cs

@ -26,7 +26,10 @@ namespace PackageManagement.Tests.Helpers @@ -26,7 +26,10 @@ namespace PackageManagement.Tests.Helpers
public void UninstallTestPackage()
{
packageManagementService.UninstallPackage(FakePackageRepository, TestPackage);
var action = packageManagementService.CreateUninstallPackageAction();
action.PackageRepository = FakePackageRepository;
action.Package = TestPackage;
action.Execute();
}
public Version Version;
@ -37,13 +40,14 @@ namespace PackageManagement.Tests.Helpers @@ -37,13 +40,14 @@ namespace PackageManagement.Tests.Helpers
public void UninstallPackageById(string packageId)
{
packageManagementService.UninstallPackage(
packageId,
Version,
Project,
PackageSource,
ForceRemove,
RemoveDependencies);
var action = packageManagementService.CreateUninstallPackageAction();
action.PackageId = packageId;
action.PackageVersion = Version;
action.Project = Project;
action.ForceRemove = ForceRemove;
action.PackageSource = PackageSource;
action.RemoveDependencies = RemoveDependencies;
action.Execute();
}
}
}

19
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/UpdatePackageHelper.cs

@ -27,7 +27,11 @@ namespace PackageManagement.Tests.Helpers @@ -27,7 +27,11 @@ namespace PackageManagement.Tests.Helpers
public void UpdateTestPackage()
{
packageManagementService.UpdatePackage(PackageRepository, TestPackage, PackageOperations);
var action = packageManagementService.CreateUpdatePackageAction();
action.PackageRepository = PackageRepository;
action.Package = TestPackage;
action.Operations = PackageOperations;
action.Execute();
}
public FakePackage AddPackageInstallOperation()
@ -45,12 +49,13 @@ namespace PackageManagement.Tests.Helpers @@ -45,12 +49,13 @@ namespace PackageManagement.Tests.Helpers
public void UpdatePackageById(string packageId)
{
packageManagementService.UpdatePackage(
packageId,
Version,
TestableProject,
PackageSource,
UpdateDependencies);
var action = packageManagementService.CreateUpdatePackageAction();
action.PackageId = packageId;
action.PackageVersion = Version;
action.PackageSource = PackageSource;
action.Project = TestableProject;
action.UpdateDependencies = UpdateDependencies;
action.Execute();
}
}
}

4
src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackagesViewModelTests.cs

@ -63,7 +63,7 @@ namespace PackageManagement.Tests @@ -63,7 +63,7 @@ namespace PackageManagement.Tests
repository.FakePackages.Add(package);
ClearReadPackagesTasks();
packageManagementService.FirePackageInstalled();
packageManagementService.FireParentPackageInstalled();
CompleteReadPackagesTask();
IPackage firstPackage = viewModel.PackageViewModels[0].GetPackage();
@ -84,7 +84,7 @@ namespace PackageManagement.Tests @@ -84,7 +84,7 @@ namespace PackageManagement.Tests
repository.FakePackages.Clear();
ClearReadPackagesTasks();
packageManagementService.FirePackageUninstalled();
packageManagementService.FireParentPackageUninstalled();
CompleteReadPackagesTask();
Assert.AreEqual(0, viewModel.PackageViewModels.Count);

110
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs

@ -252,7 +252,7 @@ namespace PackageManagement.Tests @@ -252,7 +252,7 @@ namespace PackageManagement.Tests
CreatePackageManagementService();
IPackage package = null;
packageManagementService.PackageInstalled += (sender, e) => {
packageManagementService.ParentPackageInstalled += (sender, e) => {
package = fakePackageManagerFactory.FakePackageManager.PackagePassedToInstallPackage;
};
installPackageHelper.InstallTestPackage();
@ -266,7 +266,7 @@ namespace PackageManagement.Tests @@ -266,7 +266,7 @@ namespace PackageManagement.Tests
CreatePackageManagementService();
IPackage package = null;
packageManagementService.PackageUninstalled += (sender, e) => {
packageManagementService.ParentPackageUninstalled += (sender, e) => {
package = fakePackageManagerFactory.FakePackageManager.PackagePassedToUninstallPackage;
};
@ -277,6 +277,26 @@ namespace PackageManagement.Tests @@ -277,6 +277,26 @@ namespace PackageManagement.Tests
Assert.AreEqual(expectedPackage, package);
}
[Test]
public void UninstallPackage_PackageObjectPassed_PackageIsNotForcefullyRemoved()
{
CreatePackageManagementService();
uninstallPackageHelper.UninstallTestPackage();
Assert.IsFalse(fakePackageManagerFactory.FakePackageManager.ForceRemovePassedToUninstallPackage);
}
[Test]
public void UninstallPackage_PackageObjectPassed_PackageDependenciesAreNotRemoved()
{
CreatePackageManagementService();
uninstallPackageHelper.UninstallTestPackage();
Assert.IsFalse(fakePackageManagerFactory.FakePackageManager.RemoveDependenciesPassedToUninstallPackage);
}
[Test]
public void HasMultiplePackageSources_OnePackageSource_ReturnsFalse()
{
@ -779,7 +799,7 @@ namespace PackageManagement.Tests @@ -779,7 +799,7 @@ namespace PackageManagement.Tests
MakePackageManagementSourceRepositoryAndPackageRepositoryFactoryRepositoryTheSame();
IPackage package = null;
packageManagementService.PackageInstalled += (sender, e) => {
packageManagementService.ParentPackageInstalled += (sender, e) => {
package = fakePackageManagerFactory.FakePackageManager.PackagePassedToInstallPackage;
};
installPackageHelper.InstallPackageById("PackageId");
@ -871,7 +891,7 @@ namespace PackageManagement.Tests @@ -871,7 +891,7 @@ namespace PackageManagement.Tests
MakePackageManagementSourceRepositoryAndPackageRepositoryFactoryRepositoryTheSame();
IPackage package = null;
packageManagementService.PackageInstalled += (sender, e) => {
packageManagementService.ParentPackageInstalled += (sender, e) => {
package = fakePackageManagerFactory.FakePackageManager.PackagePassedToInstallPackage;
};
@ -942,7 +962,7 @@ namespace PackageManagement.Tests @@ -942,7 +962,7 @@ namespace PackageManagement.Tests
MakePackageManagementSourceRepositoryAndPackageRepositoryFactoryRepositoryTheSame();
IPackage package = null;
packageManagementService.PackageUninstalled += (sender, e) => {
packageManagementService.ParentPackageUninstalled += (sender, e) => {
package = fakePackageManagerFactory.FakePackageManager.PackagePassedToUninstallPackage;
};
@ -1067,7 +1087,7 @@ namespace PackageManagement.Tests @@ -1067,7 +1087,7 @@ namespace PackageManagement.Tests
CreatePackageManagementService();
IPackage package = null;
packageManagementService.PackageInstalled += (sender, e) => {
packageManagementService.ParentPackageInstalled += (sender, e) => {
package = fakePackageManagerFactory.FakePackageManager.PackagePassedToUpdatePackage;
};
updatePackageHelper.UpdateTestPackage();
@ -1265,12 +1285,88 @@ namespace PackageManagement.Tests @@ -1265,12 +1285,88 @@ namespace PackageManagement.Tests
MakePackageManagementSourceRepositoryAndPackageRepositoryFactoryRepositoryTheSame();
IPackage package = null;
packageManagementService.PackageInstalled += (sender, e) => {
packageManagementService.ParentPackageInstalled += (sender, e) => {
package = fakePackageManagerFactory.FakePackageManager.PackagePassedToUpdatePackage;
};
updatePackageHelper.UpdatePackageById("PackageId");
Assert.AreEqual(expectedPackage, package);
}
[Test]
public void UninstallPackage_PackageIdSpecified_PackageIsNotForcefullyRemoved()
{
CreatePackageManagementService();
AddOneFakePackageToPackageRepositoryFactoryRepository("PackageId");
MakePackageManagementSourceRepositoryAndPackageRepositoryFactoryRepositoryTheSame();
uninstallPackageHelper.ForceRemove = false;
uninstallPackageHelper.UninstallPackageById("PackageId");
Assert.IsFalse(fakePackageManagerFactory.FakePackageManager.ForceRemovePassedToUninstallPackage);
}
[Test]
public void UninstallPackage_PackageIdSpecifiedAndForceRemoveIsTrue_PackageIsForcefullyRemoved()
{
CreatePackageManagementService();
AddOneFakePackageToPackageRepositoryFactoryRepository("PackageId");
MakePackageManagementSourceRepositoryAndPackageRepositoryFactoryRepositoryTheSame();
uninstallPackageHelper.ForceRemove = true;
uninstallPackageHelper.UninstallPackageById("PackageId");
Assert.IsTrue(fakePackageManagerFactory.FakePackageManager.ForceRemovePassedToUninstallPackage);
}
[Test]
public void UninstallPackage_PackageIdSpecified_PackageDependenciesAreNotRemoved()
{
CreatePackageManagementService();
AddOneFakePackageToPackageRepositoryFactoryRepository("PackageId");
MakePackageManagementSourceRepositoryAndPackageRepositoryFactoryRepositoryTheSame();
uninstallPackageHelper.RemoveDependencies = false;
uninstallPackageHelper.UninstallPackageById("PackageId");
Assert.IsFalse(fakePackageManagerFactory.FakePackageManager.RemoveDependenciesPassedToUninstallPackage);
}
[Test]
public void UninstallPackage_PackageIdSpecifiedAndRemoveDependenciesIsTrue_PackageDependenciesAreRemoved()
{
CreatePackageManagementService();
AddOneFakePackageToPackageRepositoryFactoryRepository("PackageId");
MakePackageManagementSourceRepositoryAndPackageRepositoryFactoryRepositoryTheSame();
uninstallPackageHelper.RemoveDependencies = true;
uninstallPackageHelper.UninstallPackageById("PackageId");
Assert.IsTrue(fakePackageManagerFactory.FakePackageManager.RemoveDependenciesPassedToUninstallPackage);
}
[Test]
public void UninstallPackage_VersionSpecified_VersionUsedWhenSearchingForPackage()
{
CreatePackageManagementService();
MakePackageManagementSourceRepositoryAndPackageRepositoryFactoryRepositoryTheSame();
var recentPackage = AddOneFakePackageToPackageRepositoryFactoryRepository("PackageId");
recentPackage.Version = new Version("1.2.0");
var oldPackage = AddOneFakePackageToPackageRepositoryFactoryRepository("PackageId");
oldPackage.Version = new Version("1.0.0");
var package = AddOneFakePackageToPackageRepositoryFactoryRepository("PackageId");
var version = new Version("1.1.0");
package.Version = version;
uninstallPackageHelper.Version = version;
uninstallPackageHelper.UninstallPackageById("PackageId");
var actualPackage = fakePackageManagerFactory.FakePackageManager.PackagePassedToUninstallPackage;
Assert.AreEqual(package, actualPackage);
}
}
}

57
src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs

@ -20,6 +20,8 @@ namespace PackageManagement.Tests @@ -20,6 +20,8 @@ namespace PackageManagement.Tests
FakeLicenseAcceptanceService licenseAcceptanceService;
FakeMessageReporter messageReporter;
ExceptionThrowingPackageManagementService exceptionThrowingPackageManagementService;
FakeInstallPackageAction fakeInstallPackageTask;
FakeUninstallPackageAction fakeUninstallPackageAction;
void CreateViewModel()
{
@ -41,6 +43,8 @@ namespace PackageManagement.Tests @@ -41,6 +43,8 @@ namespace PackageManagement.Tests
sourcePackageRepository = packageManagementService.FakeActivePackageRepository;
licenseAcceptanceService = viewModel.FakeLicenseAcceptanceService;
messageReporter = viewModel.FakeMessageReporter;
fakeInstallPackageTask = packageManagementService.ActionToReturnFromCreateInstallPackageAction;
fakeUninstallPackageAction = packageManagementService.ActionToReturnFromCreateUninstallPackageAction;
}
[Test]
@ -51,7 +55,7 @@ namespace PackageManagement.Tests @@ -51,7 +55,7 @@ namespace PackageManagement.Tests
viewModel.AddPackageCommand.Execute(null);
Assert.AreEqual(package, packageManagementService.PackagePassedToInstallPackage);
Assert.AreEqual(package, fakeInstallPackageTask.Package);
}
[Test]
@ -62,7 +66,18 @@ namespace PackageManagement.Tests @@ -62,7 +66,18 @@ namespace PackageManagement.Tests
viewModel.AddPackage();
Assert.AreEqual(sourcePackageRepository, packageManagementService.RepositoryPassedToInstallPackage);
Assert.AreEqual(sourcePackageRepository, fakeInstallPackageTask.PackageRepository);
}
[Test]
public void AddPackage_PackageAddedSuccessfully_PackageIsInstalled()
{
CreateViewModel();
viewModel.AddOneFakeInstallPackageOperationForViewModelPackage();
viewModel.AddPackage();
Assert.IsTrue(fakeInstallPackageTask.IsExecuteCalled);
}
[Test]
@ -76,7 +91,7 @@ namespace PackageManagement.Tests @@ -76,7 +91,7 @@ namespace PackageManagement.Tests
new PackageOperation(package, PackageAction.Install)
};
CollectionAssert.AreEqual(expectedOperations, packageManagementService.PackageOperationsPassedToInstallPackage);
CollectionAssert.AreEqual(expectedOperations, fakeInstallPackageTask.Operations);
}
[Test]
@ -98,7 +113,7 @@ namespace PackageManagement.Tests @@ -98,7 +113,7 @@ namespace PackageManagement.Tests
CreateViewModel();
IPackage packagePassedToInstallPackageWhenPropertyNameChanged = null;
viewModel.PropertyChanged += (sender, e) => {
packagePassedToInstallPackageWhenPropertyNameChanged = packageManagementService.PackagePassedToInstallPackage;
packagePassedToInstallPackageWhenPropertyNameChanged = fakeInstallPackageTask.Package;
};
viewModel.AddPackage();
@ -183,8 +198,16 @@ namespace PackageManagement.Tests @@ -183,8 +198,16 @@ namespace PackageManagement.Tests
CreateViewModel();
viewModel.RemovePackageCommand.Execute(null);
Assert.AreEqual(package, packageManagementService.PackagePassedToUninstallPackage);
Assert.AreEqual(sourcePackageRepository, packageManagementService.RepositoryPassedToUninstallPackage);
Assert.AreEqual(package, fakeUninstallPackageAction.Package);
}
[Test]
public void RemovePackage_PackageRemovedSuccessfully_RepositoryUsedToUninstallPackage()
{
CreateViewModel();
viewModel.RemovePackage();
Assert.AreEqual(sourcePackageRepository, fakeUninstallPackageAction.PackageRepository);
}
[Test]
@ -204,7 +227,7 @@ namespace PackageManagement.Tests @@ -204,7 +227,7 @@ namespace PackageManagement.Tests
CreateViewModel();
IPackage packagePassedToUninstallPackageWhenPropertyNameChanged = null;
viewModel.PropertyChanged += (sender, e) => {
packagePassedToUninstallPackageWhenPropertyNameChanged = packageManagementService.PackagePassedToUninstallPackage;
packagePassedToUninstallPackageWhenPropertyNameChanged = fakeUninstallPackageAction.Package;
};
viewModel.RemovePackage();
@ -304,7 +327,7 @@ namespace PackageManagement.Tests @@ -304,7 +327,7 @@ namespace PackageManagement.Tests
viewModel.AddPackage();
Assert.IsFalse(packageManagementService.IsInstallPackageCalled);
Assert.IsFalse(fakeInstallPackageTask.IsExecuteCalled);
}
[Test]
@ -438,7 +461,7 @@ namespace PackageManagement.Tests @@ -438,7 +461,7 @@ namespace PackageManagement.Tests
CreateViewModelWithExceptionThrowingPackageManagementService();
viewModel.AddOneFakeInstallPackageOperationForViewModelPackage();
Exception ex = new Exception("Test");
exceptionThrowingPackageManagementService.ExeptionToThrowWhenInstallPackageCalled = ex;
exceptionThrowingPackageManagementService.ExeptionToThrowWhenCreateInstallPackageTaskCalled = ex;
viewModel.AddPackage();
Assert.AreEqual("Test", messageReporter.MessagePassedToShowErrorMessage);
@ -460,7 +483,7 @@ namespace PackageManagement.Tests @@ -460,7 +483,7 @@ namespace PackageManagement.Tests
CreateViewModelWithExceptionThrowingPackageManagementService();
viewModel.AddOneFakeInstallPackageOperationForViewModelPackage();
Exception ex = new Exception("Exception error message");
exceptionThrowingPackageManagementService.ExeptionToThrowWhenInstallPackageCalled = ex;
exceptionThrowingPackageManagementService.ExeptionToThrowWhenCreateInstallPackageTaskCalled = ex;
viewModel.AddPackage();
string actualMessage = packageManagementService.FakeOutputMessagesView.SecondFormattedMessageLogged;
@ -474,7 +497,7 @@ namespace PackageManagement.Tests @@ -474,7 +497,7 @@ namespace PackageManagement.Tests
{
CreateViewModelWithExceptionThrowingPackageManagementService();
Exception ex = new Exception("Test");
exceptionThrowingPackageManagementService.ExeptionToThrowWhenUninstallPackageCalled = ex;
exceptionThrowingPackageManagementService.ExeptionToThrowWhenCreateUninstallPackageActionCalled = ex;
viewModel.RemovePackage();
Assert.AreEqual("Test", messageReporter.MessagePassedToShowErrorMessage);
@ -494,7 +517,7 @@ namespace PackageManagement.Tests @@ -494,7 +517,7 @@ namespace PackageManagement.Tests
{
CreateViewModelWithExceptionThrowingPackageManagementService();
Exception ex = new Exception("Exception error message");
exceptionThrowingPackageManagementService.ExeptionToThrowWhenUninstallPackageCalled = ex;
exceptionThrowingPackageManagementService.ExeptionToThrowWhenCreateUninstallPackageActionCalled = ex;
viewModel.RemovePackage();
string actualMessage = packageManagementService.FakeOutputMessagesView.SecondFormattedMessageLogged;
@ -544,5 +567,15 @@ namespace PackageManagement.Tests @@ -544,5 +567,15 @@ namespace PackageManagement.Tests
Assert.IsFalse(result);
}
[Test]
public void RemovePackage_PackageRemovedSuccessfully_PackageIsRemoved()
{
CreateViewModel();
viewModel.AddOneFakeInstallPackageOperationForViewModelPackage();
viewModel.RemovePackage();
Assert.IsTrue(fakeUninstallPackageAction.IsExecuted);
}
}
}

4
src/AddIns/Misc/PackageManagement/Test/Src/RecentPackagesViewModelTests.cs

@ -55,7 +55,7 @@ namespace PackageManagement.Tests @@ -55,7 +55,7 @@ namespace PackageManagement.Tests
repository.FakePackages.Add(package);
ClearReadPackagesTasks();
packageManagementService.FirePackageInstalled();
packageManagementService.FireParentPackageInstalled();
CompleteReadPackagesTask();
var expectedPackages = new FakePackage[] {
@ -76,7 +76,7 @@ namespace PackageManagement.Tests @@ -76,7 +76,7 @@ namespace PackageManagement.Tests
repository.FakePackages.Add(package);
ClearReadPackagesTasks();
packageManagementService.FirePackageUninstalled();
packageManagementService.FireParentPackageUninstalled();
CompleteReadPackagesTask();
var expectedPackages = new FakePackage[] {

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

@ -14,12 +14,14 @@ namespace PackageManagement.Tests @@ -14,12 +14,14 @@ namespace PackageManagement.Tests
TestableUpdatedPackageViewModel viewModel;
FakePackageManagementService fakePackageManagementService;
FakePackageRepository sourcePackageRepository;
FakeUpdatePackageAction updatePackageAction;
void CreateViewModel()
{
viewModel = new TestableUpdatedPackageViewModel();
fakePackageManagementService = viewModel.FakePackageManagementService;
sourcePackageRepository = viewModel.FakeSourcePackageRepository;
updatePackageAction = fakePackageManagementService.ActionToReturnFromCreateUpdatePackageAction;
}
[Test]
@ -28,7 +30,7 @@ namespace PackageManagement.Tests @@ -28,7 +30,7 @@ namespace PackageManagement.Tests
CreateViewModel();
viewModel.AddPackage();
Assert.AreEqual(sourcePackageRepository, fakePackageManagementService.RepositoryPassedToUpdatePackage);
Assert.AreEqual(sourcePackageRepository, updatePackageAction.PackageRepository);
}
[Test]
@ -38,7 +40,7 @@ namespace PackageManagement.Tests @@ -38,7 +40,7 @@ namespace PackageManagement.Tests
viewModel.AddPackage();
var expectedPackage = viewModel.FakePackage;
var actualPackage = fakePackageManagementService.PackagePassedToUpdatePackage;
var actualPackage = updatePackageAction.Package;
Assert.AreEqual(expectedPackage, actualPackage);
}
@ -50,9 +52,18 @@ namespace PackageManagement.Tests @@ -50,9 +52,18 @@ namespace PackageManagement.Tests
viewModel.AddPackage();
var expectedOperations = viewModel.FakePackageOperationResolver.PackageOperations;
var actualOperations = fakePackageManagementService.PackageOperationsPassedToUpdatePackage;
var actualOperations = updatePackageAction.Operations;
Assert.AreEqual(expectedOperations, actualOperations);
}
[Test]
public void AddPackage_PackageAddedSuccessfully_PackageIsUpdated()
{
CreateViewModel();
viewModel.AddPackage();
Assert.IsTrue(updatePackageAction.IsExecuted);
}
}
}

Loading…
Cancel
Save