Browse Source

Handle errors on opening Add Package Reference dialog.

pull/21/head
mrward 14 years ago
parent
commit
6bfdcc0912
  1. 10
      src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs
  2. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs
  3. 3
      src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackagesViewModel.cs
  4. 18
      src/AddIns/Misc/PackageManagement/Project/Src/PackageUpdatesViewModel.cs
  5. 19
      src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs
  6. 11
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ExceptionThrowingPackageManagementService.cs
  7. 20
      src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackagesViewModelTests.cs
  8. 42
      src/AddIns/Misc/PackageManagement/Test/Src/PackageUpdatesViewModelTests.cs

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

@ -12,6 +12,7 @@ namespace ICSharpCode.PackageManagement @@ -12,6 +12,7 @@ namespace ICSharpCode.PackageManagement
public class AvailablePackagesViewModel : PackagesViewModel
{
IPackageRepository repository;
string errorMessage;
public AvailablePackagesViewModel(
IPackageManagementService packageManagementService,
@ -25,11 +26,18 @@ namespace ICSharpCode.PackageManagement @@ -25,11 +26,18 @@ namespace ICSharpCode.PackageManagement
protected override void UpdateRepositoryBeforeReadPackagesTaskStarts()
{
repository = PackageManagementService.ActivePackageRepository;
try {
repository = PackageManagementService.ActivePackageRepository;
} catch (Exception ex) {
errorMessage = ex.Message;
}
}
protected override IQueryable<IPackage> GetAllPackages()
{
if (repository == null) {
throw new ApplicationException(errorMessage);
}
return repository.GetPackages();
}

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

@ -53,7 +53,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -53,7 +53,7 @@ namespace ICSharpCode.PackageManagement.Design
FakeActiveProjectManager.FakeSourceRepository = FakeActivePackageRepository;
}
public IPackageRepository ActivePackageRepository { get; set; }
public virtual IPackageRepository ActivePackageRepository { get; set; }
public virtual IProjectManager ActiveProjectManager {
get { return FakeActiveProjectManager; }

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

@ -31,8 +31,7 @@ namespace ICSharpCode.PackageManagement @@ -31,8 +31,7 @@ namespace ICSharpCode.PackageManagement
try {
this.projectManager = PackageManagementService.ActiveProjectManager;
} catch (Exception ex) {
SaveError(ex);
errorMessage = ErrorMessage;
errorMessage = ex.Message;
}
}

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

@ -15,6 +15,7 @@ namespace ICSharpCode.PackageManagement @@ -15,6 +15,7 @@ namespace ICSharpCode.PackageManagement
IPackageManagementService packageManagementService;
IPackageRepository localRepository;
IPackageRepository sourceRepository;
string errorMessage = String.Empty;
public PackageUpdatesViewModel(
IPackageManagementService packageManagementService,
@ -27,14 +28,20 @@ namespace ICSharpCode.PackageManagement @@ -27,14 +28,20 @@ namespace ICSharpCode.PackageManagement
protected override void UpdateRepositoryBeforeReadPackagesTaskStarts()
{
IProjectManager projectManager = packageManagementService.ActiveProjectManager;
localRepository = projectManager.LocalRepository;
try {
IProjectManager projectManager = packageManagementService.ActiveProjectManager;
localRepository = projectManager.LocalRepository;
} catch (Exception ex) {
errorMessage = ex.Message;
}
sourceRepository = packageManagementService.CreateAggregatePackageRepository();
}
protected override IQueryable<IPackage> GetAllPackages()
{
if (localRepository == null) {
ThrowSavedException();
}
IQueryable<IPackage> localPackages = localRepository.GetPackages();
return GetUpdatedPackages(localPackages);
}
@ -43,5 +50,10 @@ namespace ICSharpCode.PackageManagement @@ -43,5 +50,10 @@ namespace ICSharpCode.PackageManagement
{
return sourceRepository.GetUpdates(localPackages).AsQueryable();
}
void ThrowSavedException()
{
throw new ApplicationException(errorMessage);
}
}
}

19
src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs

@ -17,6 +17,7 @@ namespace PackageManagement.Tests @@ -17,6 +17,7 @@ namespace PackageManagement.Tests
AvailablePackagesViewModel viewModel;
FakePackageManagementService packageManagementService;
FakeTaskFactory taskFactory = new FakeTaskFactory();
ExceptionThrowingPackageManagementService exceptionThrowingPackageManagementService;
void CreateViewModel()
{
@ -36,6 +37,11 @@ namespace PackageManagement.Tests @@ -36,6 +37,11 @@ namespace PackageManagement.Tests
viewModel = new AvailablePackagesViewModel(packageManagementService, messageReporter, taskFactory);
}
void CreateExceptionThrowingPackageManagementService()
{
exceptionThrowingPackageManagementService = new ExceptionThrowingPackageManagementService();
}
void CompleteReadPackagesTask()
{
taskFactory.ExecuteAllFakeTasks();
@ -360,5 +366,18 @@ namespace PackageManagement.Tests @@ -360,5 +366,18 @@ namespace PackageManagement.Tests
Assert.AreEqual(1, viewModel.PackageViewModels.Count);
}
[Test]
public void ReadPackages_ExceptionThrownWhenAccessingActiveRepository_ErrorMessageFromExceptionNotOverriddenByReadPackagesCall()
{
CreateExceptionThrowingPackageManagementService();
exceptionThrowingPackageManagementService.ExeptionToThrowWhenActiveRepositoryAccessed =
new Exception("Test");
CreateViewModel(exceptionThrowingPackageManagementService);
viewModel.ReadPackages();
ApplicationException ex = Assert.Throws<ApplicationException>(() => CompleteReadPackagesTask());
Assert.AreEqual("Test", ex.Message);
}
}
}

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

@ -13,6 +13,7 @@ namespace PackageManagement.Tests.Helpers @@ -13,6 +13,7 @@ namespace PackageManagement.Tests.Helpers
public Exception ExeptionToThrowWhenActiveProjectManagerAccessed { get; set; }
public Exception ExeptionToThrowWhenInstallPackageCalled { get; set; }
public Exception ExeptionToThrowWhenUninstallPackageCalled { get; set; }
public Exception ExeptionToThrowWhenActiveRepositoryAccessed { get; set; }
public override IProjectManager ActiveProjectManager {
get {
@ -23,6 +24,16 @@ namespace PackageManagement.Tests.Helpers @@ -23,6 +24,16 @@ namespace PackageManagement.Tests.Helpers
}
}
public override IPackageRepository ActivePackageRepository {
get {
if (ExeptionToThrowWhenActiveRepositoryAccessed != null) {
throw ExeptionToThrowWhenActiveRepositoryAccessed;
}
return base.ActivePackageRepository;
}
set { base.ActivePackageRepository = value; }
}
public override void InstallPackage(IPackageRepository repository, IPackage package, IEnumerable<PackageOperation> operations)
{
throw ExeptionToThrowWhenInstallPackageCalled;

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

@ -90,26 +90,6 @@ namespace PackageManagement.Tests @@ -90,26 +90,6 @@ namespace PackageManagement.Tests
Assert.AreEqual(0, viewModel.PackageViewModels.Count);
}
[Test]
public void HasError_ActiveProjectManagerThrowsException_ReturnsTrue()
{
CreateExceptionThrowingPackageManagementService();
exceptionThrowingPackageManagementService.ExeptionToThrowWhenActiveProjectManagerAccessed = new Exception();
CreateViewModel(exceptionThrowingPackageManagementService);
Assert.IsTrue(viewModel.HasError);
}
[Test]
public void ErrorMessage_ActiveProjectManagerThrowsException_ReturnsErrorMessageFromException()
{
CreateExceptionThrowingPackageManagementService();
exceptionThrowingPackageManagementService.ExeptionToThrowWhenActiveProjectManagerAccessed = new Exception("Test");
CreateViewModel(exceptionThrowingPackageManagementService);
Assert.AreEqual("Test", viewModel.ErrorMessage);
}
[Test]
public void ReadPackages_ActiveProjectManagerThrowsException_ErrorMessageFromExceptionNotOverriddenByReadPackagesCall()
{

42
src/AddIns/Misc/PackageManagement/Test/Src/PackageUpdatesViewModelTests.cs

@ -15,15 +15,31 @@ namespace PackageManagement.Tests @@ -15,15 +15,31 @@ namespace PackageManagement.Tests
PackageUpdatesViewModel viewModel;
FakePackageManagementService packageManagementService;
FakeTaskFactory taskFactory;
ExceptionThrowingPackageManagementService exceptionThrowingPackageManagementService;
void CreateViewModel()
{
CreatePackageManagementService();
CreateViewModel(packageManagementService);
}
void CreatePackageManagementService()
{
packageManagementService = new FakePackageManagementService();
}
void CreateViewModel(FakePackageManagementService packageManagementService)
{
taskFactory = new FakeTaskFactory();
var messageReporter = new FakeMessageReporter();
viewModel = new PackageUpdatesViewModel(packageManagementService, messageReporter, taskFactory);
}
void CreateExceptionThrowingPackageManagementService()
{
exceptionThrowingPackageManagementService = new ExceptionThrowingPackageManagementService();
}
void CompleteReadPackagesTask()
{
taskFactory.ExecuteAllFakeTasks();
@ -103,5 +119,31 @@ namespace PackageManagement.Tests @@ -103,5 +119,31 @@ namespace PackageManagement.Tests
Assert.AreEqual(1, viewModel.PackageViewModels.Count);
}
[Test]
public void ReadPackages_ActiveProjectManagerThrowsException_ErrorMessageFromExceptionNotOverriddenByReadPackagesCall()
{
CreateExceptionThrowingPackageManagementService();
exceptionThrowingPackageManagementService.ExeptionToThrowWhenActiveProjectManagerAccessed =
new Exception("Test");
CreateViewModel(exceptionThrowingPackageManagementService);
viewModel.ReadPackages();
ApplicationException ex = Assert.Throws<ApplicationException>(() => CompleteReadPackagesTask());
Assert.AreEqual("Test", ex.Message);
}
// [Test]
// public void ReadPackages_ActiveProjectManagerThrowsException_ErrorMessageFromExceptionReturned()
// {
// CreateExceptionThrowingPackageManagementService();
// exceptionThrowingPackageManagementService.ExeptionToThrowWhenActiveProjectManagerAccessed =
// new Exception("Test");
// CreateViewModel(exceptionThrowingPackageManagementService);
// viewModel.ReadPackages();
//
// ApplicationException ex = Assert.Throws<ApplicationException>(() => CompleteReadPackagesTask());
// Assert.AreEqual("Test", ex.Message);
// }
}
}

Loading…
Cancel
Save