Browse Source

Use NuGet-Operation install HTTP header when adding packages from dialog.

pull/53/merge
Matt Ward 12 years ago
parent
commit
e4e9410a44
  1. 2
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs
  3. 15
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageFromRepositoryExtensions.cs
  4. 16
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageRepositoryExtensions.cs
  5. 4
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
  6. 1
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  7. 30
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeOperationAwarePackageRepository.cs
  8. 43
      src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs

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

@ -235,8 +235,10 @@ @@ -235,8 +235,10 @@
<Compile Include="Src\ManagePackagesUserPrompts.cs" />
<Compile Include="Src\ManagePackagesViewTitle.cs" />
<Compile Include="Src\MSBuildBasedProjectExtensions.cs" />
<Compile Include="Src\IPackageFromRepositoryExtensions.cs" />
<Compile Include="Src\PackageLicenseViewModel.cs" />
<Compile Include="Src\PackageManagementServiceProvider.cs" />
<Compile Include="Src\IPackageRepositoryExtensions.cs" />
<Compile Include="Src\PackageRepositoryFactoryEventArgs.cs" />
<Compile Include="Src\ParentPackagesOperationEventArgs.cs" />
<Compile Include="Src\ProjectBuilder.cs" />

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

@ -53,7 +53,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -53,7 +53,7 @@ namespace ICSharpCode.PackageManagement.Design
public string Id { get; set; }
public SemanticVersion Version { get; set; }
public string Title { get; set; }
public string Title { get; set; }
public Uri IconUrl { get; set; }
public Uri LicenseUrl { get; set; }
public Uri ProjectUrl { get; set; }

15
src/AddIns/Misc/PackageManagement/Project/Src/IPackageFromRepositoryExtensions.cs

@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
// 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
{
public static class IPackageFromRepositoryExtensions
{
public static IDisposable StartInstallOperation(this IPackageFromRepository package)
{
return package.Repository.StartInstallOperation(package.Id);
}
}
}

16
src/AddIns/Misc/PackageManagement/Project/Src/IPackageRepositoryExtensions.cs

@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
// 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 static class IPackageRepositoryExtensions
{
public static IDisposable StartInstallOperation(this IPackageRepository repository, string mainPackageId = null)
{
return repository.StartOperation(RepositoryOperationNames.Install, mainPackageId);
}
}
}

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

@ -181,7 +181,9 @@ namespace ICSharpCode.PackageManagement @@ -181,7 +181,9 @@ namespace ICSharpCode.PackageManagement
{
ClearReportedMessages();
logger.LogAddingPackage();
TryInstallingPackage();
using (IDisposable operation = package.StartInstallOperation()) {
TryInstallingPackage();
}
logger.LogAfterPackageOperationCompletes();
}

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

@ -115,6 +115,7 @@ @@ -115,6 +115,7 @@
<Compile Include="Src\Helpers\ExceptionThrowingPackageActionRunner.cs" />
<Compile Include="Src\Helpers\ExceptionThrowingProcessPackageAction.cs" />
<Compile Include="Src\Helpers\FakeCodeGenerator.cs" />
<Compile Include="Src\Helpers\FakeOperationAwarePackageRepository.cs" />
<Compile Include="Src\Helpers\FieldHelper.cs" />
<Compile Include="Src\Helpers\FakeSelectProjectsService.cs" />
<Compile Include="Src\Helpers\FakeSolutionPackageRepositoryFactory.cs" />

30
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeOperationAwarePackageRepository.cs

@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
// 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 NuGet;
using Rhino.Mocks;
namespace PackageManagement.Tests.Helpers
{
public class FakeOperationAwarePackageRepository : FakePackageRepository, IOperationAwareRepository
{
public string OperationStarted;
public string MainPackageIdForOperationStarted;
IDisposable Operation = MockRepository.GenerateStub<IDisposable>();
public void AssertOperationIsDisposed()
{
Operation.AssertWasCalled(o => o.Dispose());
}
public IDisposable StartOperation(string operationName, string mainPackageId)
{
OperationStarted = operationName;
MainPackageIdForOperationStarted = mainPackageId;
return Operation;
}
}
}

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

@ -1449,5 +1449,48 @@ namespace PackageManagement.Tests @@ -1449,5 +1449,48 @@ namespace PackageManagement.Tests
Assert.IsTrue(result);
}
[Test]
public void AddPackage_PackageRepositoryIsOperationAwareAndPackageAddedSuccessfully_InstallOperationStartedForPackage()
{
CreateViewModel();
var operationAwareRepository = new FakeOperationAwarePackageRepository();
fakePackage.FakePackageRepository = operationAwareRepository;
fakePackage.Id = "MyPackage";
viewModel.AddPackage();
Assert.AreEqual(RepositoryOperationNames.Install, operationAwareRepository.OperationStarted);
Assert.AreEqual("MyPackage", operationAwareRepository.MainPackageIdForOperationStarted);
}
[Test]
public void AddPackage_PackageRepositoryIsOperationAwareAndPackageAddedSuccessfully_InstallOperationStartedIsDisposed()
{
CreateViewModel();
var operationAwareRepository = new FakeOperationAwarePackageRepository();
fakePackage.FakePackageRepository = operationAwareRepository;
fakePackage.Id = "MyPackage";
viewModel.AddPackage();
operationAwareRepository.AssertOperationIsDisposed();
}
[Test]
public void AddPackage_PackageRepositoryIsOperationAwareAndExceptionThrownWhenCreatingInstallPackageAction_InstallOperationStartedForPackageBeforeInstallPackageActionCreatedAndPackageOperationsRequested()
{
CreateViewModelWithExceptionThrowingProject();
var operationAwareRepository = new FakeOperationAwarePackageRepository();
fakePackage.FakePackageRepository = operationAwareRepository;
fakePackage.Id = "MyPackage";
Exception ex = new Exception("Test");
exceptionThrowingProject.ExceptionToThrowWhenCreateInstallPackageActionCalled = ex;
viewModel.AddPackage();
Assert.AreEqual(RepositoryOperationNames.Install, operationAwareRepository.OperationStarted);
Assert.AreEqual("MyPackage", operationAwareRepository.MainPackageIdForOperationStarted);
}
}
}

Loading…
Cancel
Save