Browse Source

Use NuGet update methods when updating a package.

pull/21/head
mrward 14 years ago
parent
commit
713fcb745f
  1. 2
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 11
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs
  3. 1
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs
  4. 1
      src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageManager.cs
  5. 12
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs
  6. 18
      src/AddIns/Misc/PackageManagement/Project/Src/PackageUpdatesViewModel.cs
  7. 10
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
  8. 24
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelFactory.cs
  9. 19
      src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManager.cs
  10. 32
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs
  11. 28
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModelFactory.cs
  12. 3
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  13. 9
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManager.cs
  14. 13
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProjectManager.cs
  15. 68
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs
  16. 41
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/UpdatePackageHelper.cs
  17. 83
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementServiceTests.cs
  18. 54
      src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs
  19. 58
      src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackageViewModelTests.cs

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

@ -159,6 +159,8 @@
<Compile Include="Src\SharpDevelopProjectSystem.cs" /> <Compile Include="Src\SharpDevelopProjectSystem.cs" />
<Compile Include="Src\SharpDevelopProjectSystemFactory.cs" /> <Compile Include="Src\SharpDevelopProjectSystemFactory.cs" />
<Compile Include="Src\StringToStringCollectionConverter.cs" /> <Compile Include="Src\StringToStringCollectionConverter.cs" />
<Compile Include="Src\UpdatedPackageViewModel.cs" />
<Compile Include="Src\UpdatedPackageViewModelFactory.cs" />
<Compile Include="Src\ViewModelBase.cs" /> <Compile Include="Src\ViewModelBase.cs" />
<Compile Include="Src\ViewModelLocator.cs" /> <Compile Include="Src\ViewModelLocator.cs" />
</ItemGroup> </ItemGroup>

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

@ -130,5 +130,16 @@ namespace ICSharpCode.PackageManagement.Design
public IPackageRepository RecentPackageRepository { public IPackageRepository RecentPackageRepository {
get { return FakeRecentPackageRepository; } get { return FakeRecentPackageRepository; }
} }
public IPackageRepository RepositoryPassedToUpdatePackage;
public IPackage PackagePassedToUpdatePackage;
public IEnumerable<PackageOperation> PackageOperationsPassedToUpdatePackage;
public void UpdatePackage(IPackageRepository repository, IPackage package, IEnumerable<PackageOperation> operations)
{
RepositoryPassedToUpdatePackage = repository;
PackagePassedToUpdatePackage = package;
PackageOperationsPassedToUpdatePackage = operations;
}
} }
} }

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

@ -19,6 +19,7 @@ namespace ICSharpCode.PackageManagement
void InstallPackage(IPackageRepository repository, IPackage package, IEnumerable<PackageOperation> operations); void InstallPackage(IPackageRepository repository, IPackage package, IEnumerable<PackageOperation> operations);
void UninstallPackage(IPackageRepository repository, IPackage package); void UninstallPackage(IPackageRepository repository, IPackage package);
void UpdatePackage(IPackageRepository repository, IPackage package, IEnumerable<PackageOperation> operations);
PackageManagementOptions Options { get; } PackageManagementOptions Options { get; }

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

@ -13,5 +13,6 @@ namespace ICSharpCode.PackageManagement
void InstallPackage(IPackage package); void InstallPackage(IPackage package);
void InstallPackage(IPackage package, IEnumerable<PackageOperation> operations); void InstallPackage(IPackage package, IEnumerable<PackageOperation> operations);
void UninstallPackage(IPackage package); void UninstallPackage(IPackage package);
void UpdatePackage(IPackage package, IEnumerable<PackageOperation> operations);
} }
} }

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

@ -187,5 +187,17 @@ namespace ICSharpCode.PackageManagement
{ {
return packageRepositoryCache.CreateRepository(source); return packageRepositoryCache.CreateRepository(source);
} }
public void UpdatePackage(
IPackageRepository repository,
IPackage package,
IEnumerable<PackageOperation> operations)
{
ISharpDevelopPackageManager packageManager = CreatePackageManager(repository);
packageManager.UpdatePackage(package, operations);
projectService.RefreshProjectBrowser();
RecentPackageRepository.AddPackage(package);
OnPackageInstalled();
}
} }
} }

18
src/AddIns/Misc/PackageManagement/Project/Src/PackageUpdatesViewModel.cs

@ -21,7 +21,23 @@ namespace ICSharpCode.PackageManagement
IPackageManagementService packageManagementService, IPackageManagementService packageManagementService,
IMessageReporter messageReporter, IMessageReporter messageReporter,
ITaskFactory taskFactory) ITaskFactory taskFactory)
: base(packageManagementService, messageReporter, taskFactory) : this(
packageManagementService,
messageReporter,
new LicenseAcceptanceService(),
taskFactory)
{
}
public PackageUpdatesViewModel(
IPackageManagementService packageManagementService,
IMessageReporter messageReporter,
ILicenseAcceptanceService licenseAcceptanceService,
ITaskFactory taskFactory)
: base(
packageManagementService,
new UpdatedPackageViewModelFactory(packageManagementService, licenseAcceptanceService, messageReporter),
taskFactory)
{ {
this.packageManagementService = packageManagementService; this.packageManagementService = packageManagementService;
} }

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

@ -297,10 +297,18 @@ namespace ICSharpCode.PackageManagement
void InstallPackage() void InstallPackage()
{ {
packageManagementService.InstallPackage(sourcePackageRepository, package, packageOperations); InstallPackage(sourcePackageRepository, package, packageOperations);
OnPropertyChanged(model => model.IsAdded); OnPropertyChanged(model => model.IsAdded);
} }
protected virtual void InstallPackage(
IPackageRepository sourcePackageRepository,
IPackage package,
IEnumerable<PackageOperation> packageOperations)
{
packageManagementService.InstallPackage(sourcePackageRepository, package, packageOperations);
}
void ReportError(Exception ex) void ReportError(Exception ex)
{ {
messageReporter.ShowErrorMessage(ex.Message); messageReporter.ShowErrorMessage(ex.Message);

24
src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelFactory.cs

@ -8,27 +8,27 @@ namespace ICSharpCode.PackageManagement
{ {
public class PackageViewModelFactory : IPackageViewModelFactory public class PackageViewModelFactory : IPackageViewModelFactory
{ {
IPackageManagementService packageManagementService;
ILicenseAcceptanceService licenseAcceptanceService;
IMessageReporter messageReporter;
public PackageViewModelFactory( public PackageViewModelFactory(
IPackageManagementService packageManagementService, IPackageManagementService packageManagementService,
ILicenseAcceptanceService licenseAcceptanceService, ILicenseAcceptanceService licenseAcceptanceService,
IMessageReporter messageReport) IMessageReporter messageReporter)
{ {
this.packageManagementService = packageManagementService; this.PackageManagementService = packageManagementService;
this.licenseAcceptanceService = licenseAcceptanceService; this.LicenseAcceptanceService = licenseAcceptanceService;
this.messageReporter = messageReport; this.MessageReporter = messageReporter;
} }
public PackageViewModel CreatePackageViewModel(IPackage package) public virtual PackageViewModel CreatePackageViewModel(IPackage package)
{ {
return new PackageViewModel( return new PackageViewModel(
package, package,
packageManagementService, PackageManagementService,
licenseAcceptanceService, LicenseAcceptanceService,
messageReporter); MessageReporter);
} }
protected IPackageManagementService PackageManagementService { get; private set; }
protected ILicenseAcceptanceService LicenseAcceptanceService { get; private set; }
protected IMessageReporter MessageReporter { get; private set; }
} }
} }

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

@ -91,5 +91,24 @@ namespace ICSharpCode.PackageManagement
ProjectManager.RemovePackageReference(package.Id, forceRemove, removeDependencies); ProjectManager.RemovePackageReference(package.Id, forceRemove, removeDependencies);
base.UninstallPackage(package, forceRemove, removeDependencies); base.UninstallPackage(package, forceRemove, removeDependencies);
} }
public void UpdatePackage(IPackage package, IEnumerable<PackageOperation> operations)
{
foreach (PackageOperation operation in operations) {
Execute(operation);
}
UpdatePackageReference(package);
}
void UpdatePackageReference(IPackage package)
{
bool updateDependencies = true;
UpdatePackageReference(package, updateDependencies);
}
void UpdatePackageReference(IPackage package, bool updateDependencies)
{
ProjectManager.UpdatePackageReference(package.Id, package.Version, updateDependencies);
}
} }
} }

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

@ -0,0 +1,32 @@
// 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 UpdatedPackageViewModel : PackageViewModel
{
IPackageManagementService packageManagementService;
public UpdatedPackageViewModel(
IPackage package,
IPackageManagementService packageManagementService,
ILicenseAcceptanceService licenseAcceptanceService,
IMessageReporter messageReporter)
: base(package, packageManagementService, licenseAcceptanceService, messageReporter)
{
this.packageManagementService = packageManagementService;
}
protected override void InstallPackage(
IPackageRepository sourcePackageRepository,
IPackage package,
IEnumerable<PackageOperation> packageOperations)
{
packageManagementService.UpdatePackage(sourcePackageRepository, package, packageOperations);
}
}
}

28
src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModelFactory.cs

@ -0,0 +1,28 @@
// 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 NuGet;
namespace ICSharpCode.PackageManagement
{
public class UpdatedPackageViewModelFactory : PackageViewModelFactory
{
public UpdatedPackageViewModelFactory(
IPackageManagementService packageManagementService,
ILicenseAcceptanceService licenseAcceptanceService,
IMessageReporter messageReporter)
: base(packageManagementService, licenseAcceptanceService, messageReporter)
{
}
public override PackageViewModel CreatePackageViewModel(IPackage package)
{
return new UpdatedPackageViewModel(
package,
PackageManagementService,
LicenseAcceptanceService,
MessageReporter);
}
}
}

3
src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj

@ -106,6 +106,7 @@
<Compile Include="Src\Helpers\TestableOpenHyperlinkCommand.cs" /> <Compile Include="Src\Helpers\TestableOpenHyperlinkCommand.cs" />
<Compile Include="Src\Helpers\TestableSelectedListBoxItemScrollingBehaviour.cs" /> <Compile Include="Src\Helpers\TestableSelectedListBoxItemScrollingBehaviour.cs" />
<Compile Include="Src\Helpers\TestableSharpDevelopProjectSystem.cs" /> <Compile Include="Src\Helpers\TestableSharpDevelopProjectSystem.cs" />
<Compile Include="Src\Helpers\TestableUpdatedPackageViewModel.cs" />
<Compile Include="Src\Helpers\TestableViewModelBase.cs" /> <Compile Include="Src\Helpers\TestableViewModelBase.cs" />
<Compile Include="Src\Helpers\Tests\PackageReferenceRepositoryTests.cs" /> <Compile Include="Src\Helpers\Tests\PackageReferenceRepositoryTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
@ -113,6 +114,7 @@
<Compile Include="Src\AvailablePackagesViewModelTests.cs" /> <Compile Include="Src\AvailablePackagesViewModelTests.cs" />
<Compile Include="Src\BooleanToFontWeightConverterTests.cs" /> <Compile Include="Src\BooleanToFontWeightConverterTests.cs" />
<Compile Include="Src\DelegateCommandTests.cs" /> <Compile Include="Src\DelegateCommandTests.cs" />
<Compile Include="Src\Helpers\UpdatePackageHelper.cs" />
<Compile Include="Src\InstalledPackagesViewModelTests.cs" /> <Compile Include="Src\InstalledPackagesViewModelTests.cs" />
<Compile Include="Src\LicenseAcceptanceViewModelTests.cs" /> <Compile Include="Src\LicenseAcceptanceViewModelTests.cs" />
<Compile Include="Src\OpenHyperlinkCommandTests.cs" /> <Compile Include="Src\OpenHyperlinkCommandTests.cs" />
@ -136,6 +138,7 @@
<Compile Include="Src\SharpDevelopPackageManagerTests.cs" /> <Compile Include="Src\SharpDevelopPackageManagerTests.cs" />
<Compile Include="Src\SharpDevelopProjectSystemTests.cs" /> <Compile Include="Src\SharpDevelopProjectSystemTests.cs" />
<Compile Include="Src\StringToStringCollectionConverterTests.cs" /> <Compile Include="Src\StringToStringCollectionConverterTests.cs" />
<Compile Include="Src\UpdatedPackageViewModelTests.cs" />
<Compile Include="Src\ViewModelBaseTests.cs" /> <Compile Include="Src\ViewModelBaseTests.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

9
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManager.cs

@ -115,6 +115,15 @@ namespace PackageManagement.Tests.Helpers
throw new NotImplementedException(); throw new NotImplementedException();
} }
public IPackage PackagePassedToUpdatePackage;
public IEnumerable<PackageOperation> PackageOperationsPassedToUpdatePackage;
public void UpdatePackage(IPackage package, IEnumerable<PackageOperation> operations)
{
PackagePassedToUpdatePackage = package;
PackageOperationsPassedToUpdatePackage = operations;
}
public void InstallPackage(IPackage package, IEnumerable<PackageOperation> operations) public void InstallPackage(IPackage package, IEnumerable<PackageOperation> operations)
{ {
LoggerSetBeforeInstallPackageCalled = Logger; LoggerSetBeforeInstallPackageCalled = Logger;

13
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProjectManager.cs

@ -17,6 +17,9 @@ namespace PackageManagement.Tests.Helpers
public bool ForcePassedToRemovePackageReference; public bool ForcePassedToRemovePackageReference;
public bool RemoveDependenciesPassedToRemovePackageReference; public bool RemoveDependenciesPassedToRemovePackageReference;
public IPackage PackagePassedToUpdatePackageReference;
public bool UpdateDependenciesPassedToUpdatePackageReference;
public FakePackageRepository FakeLocalRepository { public FakePackageRepository FakeLocalRepository {
get { return LocalRepository as FakePackageRepository; } get { return LocalRepository as FakePackageRepository; }
} }
@ -50,5 +53,15 @@ namespace PackageManagement.Tests.Helpers
ForcePassedToRemovePackageReference = force; ForcePassedToRemovePackageReference = force;
RemoveDependenciesPassedToRemovePackageReference = removeDependencies; RemoveDependenciesPassedToRemovePackageReference = removeDependencies;
} }
public override void UpdatePackageReference(string packageId, Version version, bool updateDependencies)
{
var package = new FakePackage();
package.Id = packageId;
package.Version = version;
PackagePassedToUpdatePackageReference = package;
UpdateDependenciesPassedToUpdatePackageReference = updateDependencies;
}
} }
} }

68
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs

@ -0,0 +1,68 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
namespace PackageManagement.Tests.Helpers
{
public class TestableUpdatedPackageViewModel : UpdatedPackageViewModel
{
public FakePackageOperationResolver FakePackageOperationResolver = new FakePackageOperationResolver();
public FakePackageRepository FakeSourcePackageRepository;
public FakePackageManagementService FakePackageManagementService;
public FakeLicenseAcceptanceService FakeLicenseAcceptanceService;
public FakeMessageReporter FakeMessageReporter;
public FakePackage FakePackage;
public ILogger LoggerUsedWhenCreatingPackageResolver;
public string PackageViewModelAddingPackageMessageFormat = String.Empty;
public string PackageViewModelRemovingPackageMessageFormat = String.Empty;
public TestableUpdatedPackageViewModel()
: this(new FakePackageManagementService())
{
}
public TestableUpdatedPackageViewModel(FakePackageManagementService packageManagementService)
: this(
new FakePackage(),
packageManagementService,
new FakeLicenseAcceptanceService(),
new FakeMessageReporter())
{
}
public TestableUpdatedPackageViewModel(
FakePackage package,
FakePackageManagementService packageManagementService,
FakeLicenseAcceptanceService licenseAcceptanceService,
FakeMessageReporter messageReporter)
: base(
package,
packageManagementService,
licenseAcceptanceService,
messageReporter)
{
this.FakePackage = package;
this.FakePackageManagementService = packageManagementService;
this.FakeLicenseAcceptanceService = licenseAcceptanceService;
this.FakeMessageReporter = messageReporter;
this.FakeSourcePackageRepository = FakePackageManagementService.FakeActivePackageRepository;
}
protected override IPackageOperationResolver CreatePackageOperationResolver(ILogger logger)
{
return FakePackageOperationResolver;
}
protected override string AddingPackageMessageFormat {
get { return PackageViewModelAddingPackageMessageFormat; }
}
protected override string RemovingPackageMessageFormat {
get { return PackageViewModelRemovingPackageMessageFormat; }
}
}
}

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

@ -0,0 +1,41 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
namespace PackageManagement.Tests.Helpers
{
public class UpdatePackageHelper
{
PackageManagementService packageManagementService;
public FakePackage TestPackage = new FakePackage() {
Id = "Test"
};
public FakePackageRepository PackageRepository = new FakePackageRepository();
public List<PackageOperation> PackageOperations = new List<PackageOperation>();
public UpdatePackageHelper(PackageManagementService packageManagementService)
{
this.packageManagementService = packageManagementService;
}
public void UpdateTestPackage()
{
packageManagementService.UpdatePackage(PackageRepository, TestPackage, PackageOperations);
}
public FakePackage AddPackageInstallOperation()
{
var package = new FakePackage("Package to install");
var operation = new PackageOperation(package, PackageAction.Install);
PackageOperations.Add(operation);
return package;
}
}
}

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

@ -24,6 +24,7 @@ namespace PackageManagement.Tests
FakePackageManagementProjectService fakeProjectService; FakePackageManagementProjectService fakeProjectService;
TestableProject testProject; TestableProject testProject;
InstallPackageHelper installPackageHelper; InstallPackageHelper installPackageHelper;
UpdatePackageHelper updatePackageHelper;
FakePackageManagementOutputMessagesView fakeOutputMessagesView; FakePackageManagementOutputMessagesView fakeOutputMessagesView;
void CreatePackageSources() void CreatePackageSources()
@ -53,6 +54,7 @@ namespace PackageManagement.Tests
fakeOutputMessagesView); fakeOutputMessagesView);
installPackageHelper = new InstallPackageHelper(packageManagementService); installPackageHelper = new InstallPackageHelper(packageManagementService);
updatePackageHelper = new UpdatePackageHelper(packageManagementService);
} }
[Test] [Test]
@ -203,7 +205,7 @@ namespace PackageManagement.Tests
} }
[Test] [Test]
public void PackageInstalled_PackageIsInstalled_EventFiresAfterPackageInstalled() public void InstallPackage_PackageIsInstalled_EventFiresAfterPackageInstalled()
{ {
CreatePackageManagementService(); CreatePackageManagementService();
@ -217,7 +219,7 @@ namespace PackageManagement.Tests
} }
[Test] [Test]
public void PackageUninstalled_PackageIsUninstalled_EventFiresAfterPackageUninstalled() public void UninstallPackage_PackageIsUninstalled_EventFiresAfterPackageUninstalled()
{ {
CreatePackageManagementService(); CreatePackageManagementService();
@ -484,5 +486,82 @@ namespace PackageManagement.Tests
PackageCollectionAssert.AreEqual(expectedPackages, recentPackages); PackageCollectionAssert.AreEqual(expectedPackages, recentPackages);
} }
[Test]
public void UpdatePackage_PackageAndRepositoryPassed_PackageInstalled()
{
CreatePackageManagementService();
updatePackageHelper.UpdateTestPackage();
var expectedPackage = updatePackageHelper.TestPackage;
var actualPackage = fakePackageManagerFactory.FakePackageManager.PackagePassedToUpdatePackage;
Assert.AreEqual(expectedPackage, actualPackage);
}
[Test]
public void UpdatePackage_PackageAndRepositoryPassed_RepositoryUsedToCreatePackageManager()
{
CreatePackageManagementService();
updatePackageHelper.UpdateTestPackage();
var expectedRepository = updatePackageHelper.PackageRepository;
var actualRepository = fakePackageManagerFactory.PackageRepositoryPassedToCreatePackageManager;
Assert.AreEqual(expectedRepository, actualRepository);
}
[Test]
public void UpdatePackage_PackageAndRepositoryPassed_PackageOperationsUsedToUpdatePackage()
{
CreatePackageManagementService();
updatePackageHelper.UpdateTestPackage();
var expectedOperations = updatePackageHelper.PackageOperations;
var actualOperations = fakePackageManagerFactory.FakePackageManager.PackageOperationsPassedToUpdatePackage;
Assert.AreEqual(expectedOperations, actualOperations);
}
[Test]
public void UpdatePackage_PackageAndRepositoryPassed_ProjectBrowserIsRefreshed()
{
CreatePackageManagementService();
updatePackageHelper.UpdateTestPackage();
bool refreshed = fakeProjectService.IsRefreshProjectBrowserCalled;
Assert.IsTrue(refreshed);
}
[Test]
public void UpdatePackage_PackageAndRepositoryPassed_PackageUpdateIsAddedToRecentPackagesRepository()
{
CreatePackageManagementService();
updatePackageHelper.UpdateTestPackage();
var recentPackages = packageManagementService.RecentPackageRepository.GetPackages();
var expectedPackages = new FakePackage[] {
updatePackageHelper.TestPackage
};
PackageCollectionAssert.AreEqual(expectedPackages, recentPackages);
}
[Test]
public void UpdatePackage_PackageAndRepositoryPassed_PackageInstalledEventIsFired()
{
CreatePackageManagementService();
IPackage package = null;
packageManagementService.PackageInstalled += (sender, e) => {
package = fakePackageManagerFactory.FakePackageManager.PackagePassedToUpdatePackage;
};
updatePackageHelper.UpdateTestPackage();
Assert.AreEqual(installPackageHelper.TestPackage, package);
}
} }
} }

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

@ -92,7 +92,7 @@ namespace PackageManagement.Tests
return package; return package;
} }
FakePackage InstallPackageWithOnePackageOperation(PackageOperation operation) FakePackage InstallPackageWithPackageOperations(PackageOperation operation)
{ {
var operations = new PackageOperation[] { var operations = new PackageOperation[] {
operation operation
@ -157,6 +157,24 @@ namespace PackageManagement.Tests
return new PackageOperation(package, PackageAction.Install); return new PackageOperation(package, PackageAction.Install);
} }
FakePackage UpdatePackageWithNoPackageOperations()
{
FakePackage package = CreateFakePackage();
var operations = new List<PackageOperation>();
packageManager.UpdatePackage(package, operations);
return package;
}
FakePackage UpdatePackageWithPackageOperations(PackageOperation operation)
{
var operations = new PackageOperation[] {
operation
};
FakePackage package = CreateFakePackage();
packageManager.UpdatePackage(package, operations);
return package;
}
[Test] [Test]
public void ProjectManager_InstanceCreated_SourceRepositoryIsSharedRepositoryPassedToPackageManager() public void ProjectManager_InstanceCreated_SourceRepositoryIsSharedRepositoryPassedToPackageManager()
{ {
@ -242,7 +260,7 @@ namespace PackageManagement.Tests
CreateTestableProjectManager(); CreateTestableProjectManager();
PackageOperation operation = CreateOneInstallPackageOperation(); PackageOperation operation = CreateOneInstallPackageOperation();
InstallPackageWithOnePackageOperation(operation); InstallPackageWithPackageOperations(operation);
Assert.AreEqual(operation.Package, fakeSolutionSharedRepository.FirstPackageAdded); Assert.AreEqual(operation.Package, fakeSolutionSharedRepository.FirstPackageAdded);
} }
@ -358,5 +376,37 @@ namespace PackageManagement.Tests
Assert.AreEqual("Test", packageRemovedFromProject.Id); Assert.AreEqual("Test", packageRemovedFromProject.Id);
} }
[Test]
public void UpdatePackage_PackageInstanceAndNoPackageOperationsPassed_UpdatesReferenceInProject()
{
CreatePackageManager();
CreateTestableProjectManager();
var package = UpdatePackageWithNoPackageOperations();
Assert.AreEqual(package, testableProjectManager.PackagePassedToUpdatePackageReference);
}
[Test]
public void UpdatePackage_PackageInstanceAndNoPackageOperationsPassed_UpdatesDependenciesInProject()
{
CreatePackageManager();
CreateTestableProjectManager();
var package = UpdatePackageWithNoPackageOperations();
Assert.IsTrue(testableProjectManager.UpdateDependenciesPassedToUpdatePackageReference);
}
[Test]
public void UpdatePackage_PackageInstanceAndOneInstallPackageOperationPassed_PackageDefinedInOperationIsInstalledInLocalRepository()
{
CreatePackageManager();
CreateTestableProjectManager();
PackageOperation operation = CreateOneInstallPackageOperation();
UpdatePackageWithPackageOperations(operation);
Assert.AreEqual(operation.Package, fakeSolutionSharedRepository.FirstPackageAdded);
}
} }
} }

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

@ -0,0 +1,58 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement.Design;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Tests
{
[TestFixture]
public class UpdatedPackageViewModelTests
{
TestableUpdatedPackageViewModel viewModel;
FakePackageManagementService fakePackageManagementService;
FakePackageRepository sourcePackageRepository;
void CreateViewModel()
{
viewModel = new TestableUpdatedPackageViewModel();
fakePackageManagementService = viewModel.FakePackageManagementService;
sourcePackageRepository = viewModel.FakeSourcePackageRepository;
}
[Test]
public void AddPackage_PackageAddedSuccessfully_PackageUpdatedUsingSourcePackageRepository()
{
CreateViewModel();
viewModel.AddPackage();
Assert.AreEqual(sourcePackageRepository, fakePackageManagementService.RepositoryPassedToUpdatePackage);
}
[Test]
public void AddPackage_PackageAddedSuccessfully_PackageUpdated()
{
CreateViewModel();
viewModel.AddPackage();
var expectedPackage = viewModel.FakePackage;
var actualPackage = fakePackageManagementService.PackagePassedToUpdatePackage;
Assert.AreEqual(expectedPackage, actualPackage);
}
[Test]
public void AddPackage_PackageAddedSuccessfully_PackageUpdatedUsingPackageOperations()
{
CreateViewModel();
viewModel.AddPackage();
var expectedOperations = viewModel.FakePackageOperationResolver.PackageOperations;
var actualOperations = fakePackageManagementService.PackageOperationsPassedToUpdatePackage;
Assert.AreEqual(expectedOperations, actualOperations);
}
}
}
Loading…
Cancel
Save