Browse Source

Use NuGet-Operation update HTTP header when updating packages from dialog.

pull/53/merge
Matt Ward 13 years ago
parent
commit
586adc1d54
  1. 5
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageFromRepositoryExtensions.cs
  2. 5
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageRepositoryExtensions.cs
  3. 7
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
  4. 5
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs
  5. 29
      src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackageViewModelTests.cs

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

@ -11,5 +11,10 @@ namespace ICSharpCode.PackageManagement
{ {
return package.Repository.StartInstallOperation(package.Id); return package.Repository.StartInstallOperation(package.Id);
} }
public static IDisposable StartUpdateOperation(this IPackageFromRepository package)
{
return package.Repository.StartUpdateOperation(package.Id);
}
} }
} }

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

@ -12,5 +12,10 @@ namespace ICSharpCode.PackageManagement
{ {
return repository.StartOperation(RepositoryOperationNames.Install, mainPackageId); return repository.StartOperation(RepositoryOperationNames.Install, mainPackageId);
} }
public static IDisposable StartUpdateOperation(this IPackageRepository repository, string mainPackageId = null)
{
return repository.StartOperation(RepositoryOperationNames.Update, mainPackageId);
}
} }
} }

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

@ -181,12 +181,17 @@ namespace ICSharpCode.PackageManagement
{ {
ClearReportedMessages(); ClearReportedMessages();
logger.LogAddingPackage(); logger.LogAddingPackage();
using (IDisposable operation = package.StartInstallOperation()) { using (IDisposable operation = StartInstallOperation(package)) {
TryInstallingPackage(); TryInstallingPackage();
} }
logger.LogAfterPackageOperationCompletes(); logger.LogAfterPackageOperationCompletes();
} }
protected virtual IDisposable StartInstallOperation(IPackageFromRepository package)
{
return package.StartInstallOperation();
}
void ClearReportedMessages() void ClearReportedMessages()
{ {
packageManagementEvents.OnPackageOperationsStarting(); packageManagementEvents.OnPackageOperationsStarting();

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

@ -24,5 +24,10 @@ namespace ICSharpCode.PackageManagement
{ {
return project.CreateUpdatePackageAction(); return project.CreateUpdatePackageAction();
} }
protected override IDisposable StartInstallOperation(IPackageFromRepository package)
{
return package.StartUpdateOperation();
}
} }
} }

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

@ -128,5 +128,34 @@ namespace PackageManagement.Tests
Assert.AreEqual(expectedPackage, actualPackage); Assert.AreEqual(expectedPackage, actualPackage);
} }
[Test]
public void AddPackage_PackageRepositoryIsOperationAwareAndPackageAddedSuccessfully_UpdateOperationStartedForPackage()
{
CreateViewModel();
var operationAwareRepository = new FakeOperationAwarePackageRepository();
FakePackage fakePackage = viewModel.FakePackage;
fakePackage.FakePackageRepository = operationAwareRepository;
fakePackage.Id = "MyPackage";
viewModel.AddPackage();
Assert.AreEqual(RepositoryOperationNames.Update, operationAwareRepository.OperationStarted);
Assert.AreEqual("MyPackage", operationAwareRepository.MainPackageIdForOperationStarted);
}
[Test]
public void AddPackage_PackageRepositoryIsOperationAwareAndPackageAddedSuccessfully_UpdateperationStartedIsDisposed()
{
CreateViewModel();
var operationAwareRepository = new FakeOperationAwarePackageRepository();
FakePackage fakePackage = viewModel.FakePackage;
fakePackage.FakePackageRepository = operationAwareRepository;
fakePackage.Id = "MyPackage";
viewModel.AddPackage();
operationAwareRepository.AssertOperationIsDisposed();
}
} }
} }

Loading…
Cancel
Save