Browse Source

Reformat code.

pull/442/head
Matt Ward 12 years ago
parent
commit
dcbfca295d
  1. 21
      src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs
  2. 18
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementSolution.cs
  3. 167
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
  4. 22
      src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs
  5. 3
      src/AddIns/Misc/PackageManagement/Project/Src/SelectedProjectsForUpdatedPackages.cs
  6. 16
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs
  7. 9
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModelFactory.cs
  8. 2
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementEvents.cs
  9. 61
      src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs
  10. 2
      src/AddIns/Misc/PackageManagement/Test/Src/RecentPackagesViewModelTests.cs

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

@ -77,14 +77,11 @@ namespace ICSharpCode.PackageManagement
if (availablePackagesRepository == null) { if (availablePackagesRepository == null) {
throw new ApplicationException(errorMessage); throw new ApplicationException(errorMessage);
} }
IQueryable<IPackage> allPackages;
if (IncludePrerelease) { if (IncludePrerelease) {
allPackages = availablePackagesRepository.GetPackages(); return availablePackagesRepository.GetPackages();
} }
else { return availablePackagesRepository.GetPackages().Where(package => package.IsLatestVersion);
allPackages = availablePackagesRepository.GetPackages().Where(package => package.IsLatestVersion);
}
return allPackages;
} }
/// <summary> /// <summary>
@ -97,17 +94,13 @@ namespace ICSharpCode.PackageManagement
protected override IEnumerable<IPackage> GetFilteredPackagesBeforePagingResults(IQueryable<IPackage> allPackages) protected override IEnumerable<IPackage> GetFilteredPackagesBeforePagingResults(IQueryable<IPackage> allPackages)
{ {
IEnumerable<IPackage> filteredPackages;
if (IncludePrerelease) { if (IncludePrerelease) {
filteredPackages = base.GetFilteredPackagesBeforePagingResults(allPackages) return base.GetFilteredPackagesBeforePagingResults(allPackages)
.DistinctLast<IPackage>(PackageEqualityComparer.Id);
}
else {
filteredPackages = base.GetFilteredPackagesBeforePagingResults(allPackages)
.Where(package => package.IsReleaseVersion())
.DistinctLast<IPackage>(PackageEqualityComparer.Id); .DistinctLast<IPackage>(PackageEqualityComparer.Id);
} }
return filteredPackages; return base.GetFilteredPackagesBeforePagingResults(allPackages)
.Where(package => package.IsReleaseVersion())
.DistinctLast<IPackage>(PackageEqualityComparer.Id);
} }
} }

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

@ -39,21 +39,29 @@ namespace ICSharpCode.PackageManagement
bool HasMultipleProjects(); bool HasMultipleProjects();
IEnumerable<IPackage> GetPackagesInReverseDependencyOrder(); IEnumerable<IPackage> GetPackagesInReverseDependencyOrder();
string GetInstallPath(IPackage package); string GetInstallPath(IPackage package);
ISolutionPackageRepository CreateSolutionPackageRepository();
/// <summary>Return true if package is installed (solution/project)</summary> /// <summary>
/// Returns true if package is installed in the solution or a project.
/// </summary>
bool IsPackageInstalled(IPackage package); bool IsPackageInstalled(IPackage package);
/// <summary>Return installed (solution/project) packages</summary> /// <summary>
/// Returns installed all packages in the packages folder.
/// </summary>
IQueryable<IPackage> GetPackages(); IQueryable<IPackage> GetPackages();
/// <summary>Returns installed project-packages (in any project)</summary> /// <summary>
/// Returns packages installed in any project.
/// </summary>
IQueryable<IPackage> GetProjectPackages(); IQueryable<IPackage> GetProjectPackages();
/// <summary>Returns installed solution-packages</summary> /// <summary>
/// Returns installed solution level packages.
/// </summary>
IQueryable<IPackage> GetSolutionPackages(); IQueryable<IPackage> GetSolutionPackages();
bool IsOpen { get; } bool IsOpen { get; }
string FileName { get; } string FileName { get; }
ISolutionPackageRepository CreateSolutionPackageRepository();
} }
} }

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

@ -38,6 +38,7 @@ namespace ICSharpCode.PackageManagement
PackageViewModelOperationLogger logger; PackageViewModelOperationLogger logger;
readonly IPackageActionRunner actionRunner; readonly IPackageActionRunner actionRunner;
IPackageViewModelParent parent; IPackageViewModelParent parent;
bool packageIsChanging;
public PackageViewModel( public PackageViewModel(
IPackageViewModelParent parent, IPackageViewModelParent parent,
@ -118,8 +119,8 @@ namespace ICSharpCode.PackageManagement
public bool IsAdded { public bool IsAdded {
get { get {
if (selectedProjects.HasSingleProjectSelected()) { if (selectedProjects.HasSingleProjectSelected()) {
return selectedProjects.GetSingleProjectSelected(package.Repository).IsPackageInstalled(package) return selectedProjects.GetSingleProjectSelected(package.Repository).IsPackageInstalled(package) ||
|| (IsPackageInstalled() && !IsProjectPackage(package)); (IsPackageInstalled() && !IsProjectPackage(package));
} }
return IsPackageInstalled(); return IsPackageInstalled();
} }
@ -197,35 +198,34 @@ namespace ICSharpCode.PackageManagement
public bool HasLastPublished { public bool HasLastPublished {
get { return package.Published.HasValue; } get { return package.Published.HasValue; }
} }
/// <summary> protected virtual bool IsProjectPackage(IPackage package)
/// Make this & IPackageExtensions.IsProjectPackage overridable/testable {
/// </summary>
/// <param name="package"></param>
/// <returns></returns>
protected virtual bool IsProjectPackage(IPackage package) {
return package.IsProjectPackage(); return package.IsProjectPackage();
} }
bool packageIsChanging = false; public void PackageChanged()
public void PackageChanged() { {
if (packageIsChanging) return; if (packageIsChanging)
else packageIsChanging = true; return;
packageIsChanging = true;
OnPropertyChanged(model => model.IsManaged); OnPropertyChanged(model => model.IsManaged);
OnPropertyChanged(model => model.IsAdded); OnPropertyChanged(model => model.IsAdded);
packageIsChanging = false; packageIsChanging = false;
} }
public void AddOrManagePackage() { public void AddOrManagePackage()
{
if (selectedProjects.HasMultipleProjects()) { if (selectedProjects.HasMultipleProjects()) {
if (IsProjectPackage(package)) { if (IsProjectPackage(package)) {
ManagePackage(); ManagePackage();
} } else {
else {
AddPackage(); AddPackage();
} }
} } else {
else {
AddPackage(); AddPackage();
} }
} }
@ -235,19 +235,18 @@ namespace ICSharpCode.PackageManagement
ClearReportedMessages(); ClearReportedMessages();
logger.LogAddingPackage(); logger.LogAddingPackage();
using (IDisposable operation = StartOperation(package)) { using (IDisposable operation = StartInstallOperation(package)) {
if (IsProjectPackage(package)) { if (IsProjectPackage(package)) {
TryProjectPackageInstall(); TryInstallingPackageIntoProject();
} } else {
else { TryInstallingPackageIntoSolution();
TrySolutionPackageInstall();
} }
} }
logger.LogAfterPackageOperationCompletes(); logger.LogAfterPackageOperationCompletes();
} }
protected virtual IDisposable StartOperation(IPackageFromRepository package) protected virtual IDisposable StartInstallOperation(IPackageFromRepository package)
{ {
return package.StartInstallOperation(); return package.StartInstallOperation();
} }
@ -257,7 +256,7 @@ namespace ICSharpCode.PackageManagement
packageManagementEvents.OnPackageOperationsStarting(); packageManagementEvents.OnPackageOperationsStarting();
} }
void ProjectPackageGetInstallOperations() void GetInstallOperationsForProject()
{ {
IPackageManagementProject project = GetSingleProjectSelected(); IPackageManagementProject project = GetSingleProjectSelected();
project.Logger = logger; project.Logger = logger;
@ -266,12 +265,11 @@ namespace ICSharpCode.PackageManagement
packageOperations = project.GetInstallPackageOperations(package, installAction); packageOperations = project.GetInstallPackageOperations(package, installAction);
} }
void ProjectPackageGetInstallOperations(IEnumerable<IPackageManagementSelectedProject> projects) { void GetInstallOperationsForSelectedProjects(IEnumerable<IPackageManagementSelectedProject> projects)
{
packageOperations = new PackageOperation[0]; packageOperations = new PackageOperation[0];
IPackageManagementSelectedProject firstSelectedProject = (
from project in projects IPackageManagementSelectedProject firstSelectedProject = projects.FirstOrDefault(project => project.IsSelected);
where project.IsSelected
select project).FirstOrDefault();
if (firstSelectedProject != null) { if (firstSelectedProject != null) {
InstallPackageAction installAction = firstSelectedProject.Project.CreateInstallPackageAction(); InstallPackageAction installAction = firstSelectedProject.Project.CreateInstallPackageAction();
@ -307,17 +305,17 @@ namespace ICSharpCode.PackageManagement
return packages; return packages;
} }
bool PackageRequiresLicenseAcceptance(IPackage iPackage) bool PackageRequiresLicenseAcceptance(IPackage packageToCheck)
{ {
return iPackage.RequireLicenseAcceptance && !IsPackageInstalled(iPackage); return packageToCheck.RequireLicenseAcceptance && !IsPackageInstalled(packageToCheck);
} }
bool IsPackageInstalled(IPackage iPackage) bool IsPackageInstalled(IPackage packageToCheck)
{ {
return selectedProjects.Solution.IsPackageInstalled(iPackage); return selectedProjects.Solution.IsPackageInstalled(packageToCheck);
} }
protected virtual void TrySolutionPackageInstall() protected virtual void TryInstallingPackageIntoSolution()
{ {
try { try {
var solutionRepository = selectedProjects.Solution.CreateSolutionPackageRepository(); var solutionRepository = selectedProjects.Solution.CreateSolutionPackageRepository();
@ -325,22 +323,25 @@ namespace ICSharpCode.PackageManagement
installAction.Package = package; installAction.Package = package;
installAction.IgnoreDependencies = false; installAction.IgnoreDependencies = false;
installAction.AllowPrereleaseVersions = parent.IncludePrerelease; installAction.AllowPrereleaseVersions = parent.IncludePrerelease;
SolutionPackageGetInstallOperations(solutionRepository, installAction, package);
GetInstallOperationsForSolutionPackage(solutionRepository, installAction, package);
if (LicensesAccepted()) { if (LicensesAccepted()) {
SolutionPackageInstall(solutionRepository, installAction, package); InstallPackageIntoSolution(solutionRepository, installAction, package);
packageManagementEvents.OnParentPackageInstalled(package); packageManagementEvents.OnParentPackageInstalled(package);
} }
} catch (Exception ex) { } catch (Exception ex) {
ReportError(ex); ReportError(ex);
logger.LogError(ex); logger.LogError(ex);
} }
} }
void SolutionPackageGetInstallOperations( void GetInstallOperationsForSolutionPackage(
ISolutionPackageRepository solutionRepository, ISolutionPackageRepository solutionRepository,
InstallPackageAction installAction, InstallPackageAction installAction,
IPackageFromRepository installPackage) { IPackageFromRepository installPackage)
{
var resolverFactory = new PackageOperationsResolverFactory(); var resolverFactory = new PackageOperationsResolverFactory();
var resolver = resolverFactory.CreateInstallPackageOperationResolver( var resolver = resolverFactory.CreateInstallPackageOperationResolver(
solutionRepository.Repository, solutionRepository.Repository,
@ -350,15 +351,17 @@ namespace ICSharpCode.PackageManagement
packageOperations = resolver.ResolveOperations(installPackage); packageOperations = resolver.ResolveOperations(installPackage);
} }
void SolutionPackageInstall( void InstallPackageIntoSolution(
ISolutionPackageRepository solutionRepository, ISolutionPackageRepository solutionRepository,
InstallPackageAction installAction, InstallPackageAction installAction,
IPackageFromRepository installPackage) { IPackageFromRepository installPackage)
{
var packageManager = new PackageManager( var packageManager = new PackageManager(
installPackage.Repository, installPackage.Repository,
solutionRepository.PackagePathResolver, solutionRepository.PackagePathResolver,
solutionRepository.FileSystem, solutionRepository.FileSystem,
solutionRepository.Repository); solutionRepository.Repository);
packageManager.InstallPackage( packageManager.InstallPackage(
installPackage.Id, installPackage.Id,
installPackage.Version, installPackage.Version,
@ -366,33 +369,37 @@ namespace ICSharpCode.PackageManagement
installAction.AllowPrereleaseVersions); installAction.AllowPrereleaseVersions);
} }
protected virtual void TrySolutionPackageUpdate() protected virtual void TryUpdatingPackageInSolution()
{ {
try { try {
var solutionRepository = selectedProjects.Solution.CreateSolutionPackageRepository(); var solutionRepository = selectedProjects.Solution.CreateSolutionPackageRepository();
var updateAction = new UpdatePackageAction(null, packageManagementEvents); var updateAction = new UpdatePackageAction(null, packageManagementEvents);
updateAction.Package = package; updateAction.Package = package;
updateAction.AllowPrereleaseVersions = parent.IncludePrerelease; updateAction.AllowPrereleaseVersions = parent.IncludePrerelease;
SolutionPackageGetUpdateOperations(solutionRepository, updateAction, package);
GetUpdateOperationsForSolutionPackage(solutionRepository, updateAction, package);
if (LicensesAccepted()) { if (LicensesAccepted()) {
SolutionPackageUpdate(solutionRepository, updateAction, package); UpdateSolutionLevelPackage(solutionRepository, updateAction, package);
IEnumerable<IPackage> updatedPackages = (
from packageOperation in packageOperations IEnumerable<IPackage> updatedPackages = packageOperations
where packageOperation.Package != null .Where(packageOperation => packageOperation.Package != null)
select packageOperation.Package).Distinct(); .Select(packageOperation => packageOperation.Package)
.Distinct();
packageManagementEvents.OnParentPackagesUpdated(updatedPackages); packageManagementEvents.OnParentPackagesUpdated(updatedPackages);
} }
} catch (Exception ex) { } catch (Exception ex) {
ReportError(ex); ReportError(ex);
logger.LogError(ex); logger.LogError(ex);
} }
} }
void SolutionPackageGetUpdateOperations( void GetUpdateOperationsForSolutionPackage(
ISolutionPackageRepository solutionRepository, ISolutionPackageRepository solutionRepository,
UpdatePackageAction updateAction, UpdatePackageAction updateAction,
IPackageFromRepository updatePackage) { IPackageFromRepository updatePackage)
{
var resolverFactory = new PackageOperationsResolverFactory(); var resolverFactory = new PackageOperationsResolverFactory();
var resolver = resolverFactory.CreateUpdatePackageOperationResolver( var resolver = resolverFactory.CreateUpdatePackageOperationResolver(
solutionRepository.Repository, solutionRepository.Repository,
@ -402,27 +409,29 @@ namespace ICSharpCode.PackageManagement
packageOperations = resolver.ResolveOperations(updatePackage); packageOperations = resolver.ResolveOperations(updatePackage);
} }
void SolutionPackageUpdate( void UpdateSolutionLevelPackage(
ISolutionPackageRepository solutionRepository, ISolutionPackageRepository solutionRepository,
UpdatePackageAction updateAction, UpdatePackageAction updateAction,
IPackageFromRepository updatePackage) { IPackageFromRepository updatePackage)
{
var packageManager = new PackageManager( var packageManager = new PackageManager(
updatePackage.Repository, updatePackage.Repository,
solutionRepository.PackagePathResolver, solutionRepository.PackagePathResolver,
solutionRepository.FileSystem, solutionRepository.FileSystem,
solutionRepository.Repository); solutionRepository.Repository);
packageManager.UpdatePackage( packageManager.UpdatePackage(
updatePackage.Id, updatePackage.Id,
updateAction.UpdateDependencies, updateAction.UpdateDependencies,
updateAction.AllowPrereleaseVersions); updateAction.AllowPrereleaseVersions);
} }
void TryProjectPackageInstall() void TryInstallingPackageIntoProject()
{ {
try { try {
ProjectPackageGetInstallOperations(); GetInstallOperationsForProject();
if (LicensesAccepted()) { if (LicensesAccepted()) {
ProjectPackageInstall(); InstallPackageIntoProject();
} }
} catch (Exception ex) { } catch (Exception ex) {
ReportError(ex); ReportError(ex);
@ -430,12 +439,12 @@ namespace ICSharpCode.PackageManagement
} }
} }
void ProjectPackageInstall() void InstallPackageIntoProject()
{ {
ProjectPackageInstall(packageOperations); InstallPackageIntoProject(packageOperations);
} }
void ProjectPackageInstall(IEnumerable<PackageOperation> installOperations) void InstallPackageIntoProject(IEnumerable<PackageOperation> installOperations)
{ {
IPackageManagementProject project = GetSingleProjectSelected(); IPackageManagementProject project = GetSingleProjectSelected();
ProcessPackageOperationsAction action = CreateInstallPackageAction(project); ProcessPackageOperationsAction action = CreateInstallPackageAction(project);
@ -456,16 +465,15 @@ namespace ICSharpCode.PackageManagement
packageManagementEvents.OnPackageOperationError(ex); packageManagementEvents.OnPackageOperationError(ex);
} }
public void RemoveOrManagePackage() { public void RemoveOrManagePackage()
{
if (selectedProjects.HasMultipleProjects()) { if (selectedProjects.HasMultipleProjects()) {
if (IsProjectPackage(package)) { if (IsProjectPackage(package)) {
ManagePackage(); ManagePackage();
} } else {
else {
RemovePackage(); RemovePackage();
} }
} } else {
else {
RemovePackage(); RemovePackage();
} }
} }
@ -476,7 +484,7 @@ namespace ICSharpCode.PackageManagement
logger.LogRemovingPackage(); logger.LogRemovingPackage();
if (IsProjectPackage(package)) { if (IsProjectPackage(package)) {
TryProjectPackageUninstall(); TryUninstallingPackageFromProject();
} else { } else {
TrySolutionPackageUninstall(); TrySolutionPackageUninstall();
} }
@ -489,11 +497,12 @@ namespace ICSharpCode.PackageManagement
logger.LogRemovingPackage(); logger.LogRemovingPackage();
} }
void TrySolutionPackageUninstall() { void TrySolutionPackageUninstall()
TrySolutionPackageUninstall(package); {
TryUninstallingPackageFromSolution(package);
} }
protected void TrySolutionPackageUninstall(IPackage removePackage) protected void TryUninstallingPackageFromSolution(IPackage removePackage)
{ {
try { try {
var solutionPackageRepository = PackageManagementServices.Solution.CreateSolutionPackageRepository(); var solutionPackageRepository = PackageManagementServices.Solution.CreateSolutionPackageRepository();
@ -501,16 +510,20 @@ namespace ICSharpCode.PackageManagement
solutionPackageRepository.Repository, solutionPackageRepository.Repository,
solutionPackageRepository.PackagePathResolver, solutionPackageRepository.PackagePathResolver,
solutionPackageRepository.FileSystem); solutionPackageRepository.FileSystem);
packageManager.UninstallPackage(removePackage); packageManager.UninstallPackage(removePackage);
solutionPackageRepository.Repository.RemovePackage(removePackage); solutionPackageRepository.Repository.RemovePackage(removePackage);
packageManagementEvents.OnParentPackageUninstalled(removePackage); packageManagementEvents.OnParentPackageUninstalled(removePackage);
} catch (Exception ex) { } catch (Exception ex) {
ReportError(ex); ReportError(ex);
logger.LogError(ex); logger.LogError(ex);
} }
} }
void TryProjectPackageUninstall() void TryUninstallingPackageFromProject()
{ {
try { try {
IPackageManagementProject project = GetSingleProjectSelected(); IPackageManagementProject project = GetSingleProjectSelected();
@ -562,7 +575,7 @@ namespace ICSharpCode.PackageManagement
ClearReportedMessages(); ClearReportedMessages();
logger.LogManagingPackage(); logger.LogManagingPackage();
using (IDisposable operation = StartOperation(package)) { using (IDisposable operation = StartInstallOperation(package)) {
TryManagePackagesForSelectedProjects(projects); TryManagePackagesForSelectedProjects(projects);
} }
@ -632,8 +645,9 @@ namespace ICSharpCode.PackageManagement
return null; return null;
} }
bool LicensesAccepted(IEnumerable<IPackageManagementSelectedProject> projects) { bool LicensesAccepted(IEnumerable<IPackageManagementSelectedProject> projects)
ProjectPackageGetInstallOperations(projects); {
GetInstallOperationsForSelectedProjects(projects);
return LicensesAccepted(); return LicensesAccepted();
} }
@ -684,6 +698,5 @@ namespace ICSharpCode.PackageManagement
actionRunner.Run(actions); actionRunner.Run(actions);
} }
} }
} }
} }

22
src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs

@ -110,13 +110,15 @@ namespace ICSharpCode.PackageManagement
protected void OnPackageChanged(object sender, EventArgs e) protected void OnPackageChanged(object sender, EventArgs e)
{ {
if (IsReadingPackages) return; if (IsReadingPackages || (PackageViewModels == null)) {
if (PackageViewModels == null) return; return;
}
// refresh all because we don't know if any dependant package is (un)installed
foreach (var packageViewModel in this.PackageViewModels) { // refresh all because we don't know if any dependent package is (un)installed
if (!IsReadingPackages) foreach (PackageViewModel packageViewModel in PackageViewModels) {
if (!IsReadingPackages) {
packageViewModel.PackageChanged(); packageViewModel.PackageChanged();
}
} }
} }
@ -268,12 +270,8 @@ namespace ICSharpCode.PackageManagement
return null; return null;
} }
/// <summary> protected virtual bool IsProjectPackage (IPackage package)
/// Make this & IPackageExtensions.IsProjectPackage overridable/testable {
/// </summary>
/// <param name="package"></param>
/// <returns></returns>
protected virtual bool IsProjectPackage (IPackage package) {
return package.IsProjectPackage(); return package.IsProjectPackage();
} }

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

@ -22,12 +22,13 @@ using NuGet;
namespace ICSharpCode.PackageManagement namespace ICSharpCode.PackageManagement
{ {
public class SelectedProjectsForUpdatedPackages : SelectedProjectsForInstalledPackages public class SelectedProjectsForUpdatedPackages : PackageManagementSelectedProjects
{ {
public SelectedProjectsForUpdatedPackages(IPackageManagementSolution solution) public SelectedProjectsForUpdatedPackages(IPackageManagementSolution solution)
: base(solution) : base(solution)
{ {
} }
protected override bool IsProjectSelected(IPackageManagementProject project, IPackageFromRepository package) protected override bool IsProjectSelected(IPackageManagementProject project, IPackageFromRepository package)
{ {
return IsProjectEnabled(project, package); return IsProjectEnabled(project, package);

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

@ -43,26 +43,26 @@ namespace ICSharpCode.PackageManagement
SelectedProjectsForUpdatedPackages selectedProjects; SelectedProjectsForUpdatedPackages selectedProjects;
protected override void TrySolutionPackageInstall() protected override void TryInstallingPackageIntoSolution()
{ // Modify PackageViewModel logic {
base.TrySolutionPackageUpdate(); TryUpdatingPackageInSolution();
} }
protected override ProcessPackageAction CreatePackageManageAction(IPackageManagementSelectedProject selectedProject) protected override ProcessPackageAction CreatePackageManageAction(IPackageManagementSelectedProject selectedProject)
{ // Modify PackageViewModel logic {
if (selectedProject.IsSelected) { if (selectedProject.IsSelected) {
return base.CreateUpdatePackageManageActionForSelectedProject(selectedProject); return CreateUpdatePackageManageActionForSelectedProject(selectedProject);
} }
return null; return null;
} }
protected override IDisposable StartOperation(IPackageFromRepository package) protected override IDisposable StartInstallOperation(IPackageFromRepository package)
{ // Modify PackageViewModel logic {
return package.StartUpdateOperation(); return package.StartUpdateOperation();
} }
protected override ProcessPackageOperationsAction CreateInstallPackageAction(IPackageManagementProject project) protected override ProcessPackageOperationsAction CreateInstallPackageAction(IPackageManagementProject project)
{ // Modify UpdatePackageAction logic {
return project.CreateUpdatePackageAction(); return project.CreateUpdatePackageAction();
} }
} }

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

@ -23,11 +23,12 @@ namespace ICSharpCode.PackageManagement
{ {
public class UpdatedPackageViewModelFactory : PackageViewModelFactory public class UpdatedPackageViewModelFactory : PackageViewModelFactory
{ {
SelectedProjectsForUpdatedPackages selectedProjects; SelectedProjectsForUpdatedPackages selectedProjectsForUpdatedPackages;
public UpdatedPackageViewModelFactory(IPackageViewModelFactory packageViewModelFactory) public UpdatedPackageViewModelFactory(IPackageViewModelFactory packageViewModelFactory)
: base(packageViewModelFactory) { : base(packageViewModelFactory)
selectedProjects = new SelectedProjectsForUpdatedPackages(Solution); {
selectedProjectsForUpdatedPackages = new SelectedProjectsForUpdatedPackages(Solution);
} }
public override PackageViewModel CreatePackageViewModel(IPackageViewModelParent parent, IPackageFromRepository package) public override PackageViewModel CreatePackageViewModel(IPackageViewModelParent parent, IPackageFromRepository package)
@ -35,7 +36,7 @@ namespace ICSharpCode.PackageManagement
return new UpdatedPackageViewModel( return new UpdatedPackageViewModel(
parent, parent,
package, package,
selectedProjects, selectedProjectsForUpdatedPackages,
PackageManagementEvents, PackageManagementEvents,
PackageActionRunner, PackageActionRunner,
Logger); Logger);

2
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementEvents.cs

@ -75,7 +75,6 @@ namespace PackageManagement.Tests.Helpers
{ {
PackagePassedToOnParentPackageInstalled = package; PackagePassedToOnParentPackageInstalled = package;
IsOnParentPackageInstalledCalled = true; IsOnParentPackageInstalledCalled = true;
if (PackageViewModel != null) PackageViewModel.PackageChanged();
} }
public IPackage PackagePassedToOnParentPackageUninstalled; public IPackage PackagePassedToOnParentPackageUninstalled;
@ -83,7 +82,6 @@ namespace PackageManagement.Tests.Helpers
public void OnParentPackageUninstalled(IPackage package) public void OnParentPackageUninstalled(IPackage package)
{ {
PackagePassedToOnParentPackageUninstalled = package; PackagePassedToOnParentPackageUninstalled = package;
if (PackageViewModel != null) PackageViewModel.PackageChanged();
} }
public MessageLevel MessageLevelPassedToOnPackageOperationMessageLogged; public MessageLevel MessageLevelPassedToOnPackageOperationMessageLogged;

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

@ -220,30 +220,21 @@ namespace PackageManagement.Tests
} }
[Test] [Test]
[Category("ToDo")] public void PackageChanged_PackageAddedSuccessfully_PropertyNotifyChangedFiredForIsAddedProperty()
[Description("OnParentPackageInstalled event, parent ([derived]PackagesViewModel) will call ReadPackages() or OnPackageChanged")]
public void AddPackage_PackageAddedSuccessfully_PropertyNotifyChangedFiredForIsAddedProperty()
{ {
CreateViewModel(); CreateViewModel();
viewModel.AddOneFakeInstallPackageOperationForViewModelPackage(); viewModel.AddOneFakeInstallPackageOperationForViewModelPackage();
string propertyChangedName = null; string propertyChangedName = null;
viewModel.PropertyChanged += (sender, e) => propertyChangedName = e.PropertyName; viewModel.PropertyChanged += (sender, e) => propertyChangedName = e.PropertyName;
viewModel.AddPackage(); viewModel.AddPackage();
// fake fire parent action because there is no viewModel.parent in this test fixture viewModel.PackageChanged();
// Assert.Inconclusive("OnParentPackageInstalled event, parent ([derived]PackagesViewModel) will call ReadPackages() or OnPackageChanged");
viewModel.FakePackageManagementEvents.PackageViewModel = viewModel;
viewModel.FakePackageManagementEvents.OnParentPackageInstalled(viewModel.FakePackage);
Assert.AreEqual("IsAdded", propertyChangedName); Assert.AreEqual("IsAdded", propertyChangedName);
} }
[Test] [Test]
[Category("ToDo")] public void PackageChanged_PackageAddedSuccessfully_PropertyNotifyChangedFiredAfterPackageInstalled()
[Description("OnParentPackageInstalled event, parent ([derived]PackagesViewModel) will call ReadPackages() or OnPackageChanged")]
public void AddPackage_PackageAddedSuccessfully_PropertyNotifyChangedFiredAfterPackageInstalled()
{ {
CreateViewModel(); CreateViewModel();
IPackage packagePassedToInstallPackageWhenPropertyNameChanged = null; IPackage packagePassedToInstallPackageWhenPropertyNameChanged = null;
@ -253,10 +244,7 @@ namespace PackageManagement.Tests
}; };
viewModel.AddPackage(); viewModel.AddPackage();
// fake fire parent action because there is no viewModel.parent in this test fixture viewModel.PackageChanged();
// Assert.Inconclusive("OnParentPackageInstalled event, parent ([derived]PackagesViewModel) will call ReadPackages() or OnPackageChanged");
viewModel.FakePackageManagementEvents.PackageViewModel = viewModel;
viewModel.FakePackageManagementEvents.OnParentPackageInstalled(viewModel.FakePackage);
Assert.AreEqual(fakePackage, packagePassedToInstallPackageWhenPropertyNameChanged); Assert.AreEqual(fakePackage, packagePassedToInstallPackageWhenPropertyNameChanged);
} }
@ -352,27 +340,20 @@ namespace PackageManagement.Tests
} }
[Test] [Test]
[Category("ToDo")] public void PackageChanged_PackageRemovedSuccessfully_PropertyNotifyChangedFiredForIsAddedProperty()
[Description("OnParentPackageUninstalled event, parent ([derived]PackagesViewModel) will call ReadPackages() or OnPackageChanged")]
public void RemovePackage_PackageRemovedSuccessfully_PropertyNotifyChangedFiredForIsAddedProperty()
{ {
CreateViewModel(); CreateViewModel();
string propertyChangedName = null; string propertyChangedName = null;
viewModel.PropertyChanged += (sender, e) => propertyChangedName = e.PropertyName; viewModel.PropertyChanged += (sender, e) => propertyChangedName = e.PropertyName;
viewModel.RemovePackage(); viewModel.RemovePackage();
// fake fire parent action because there is no viewModel.parent in this test fixture viewModel.PackageChanged();
viewModel.FakePackageManagementEvents.PackageViewModel = viewModel;
viewModel.FakePackageManagementEvents.OnParentPackageUninstalled(viewModel.FakePackage);
Assert.AreEqual("IsAdded", propertyChangedName); Assert.AreEqual("IsAdded", propertyChangedName);
} }
[Test] [Test]
[Category("ToDo")] public void PackageChanged_PackageRemovedSuccessfully_PropertyNotifyChangedFiredAfterPackageUninstalled()
[Description("OnParentPackageUninstalled event, parent ([derived]PackagesViewModel) will call ReadPackages() or OnPackageChanged")]
public void RemovePackage_PackageRemovedSuccessfully_PropertyNotifyChangedFiredAfterPackageUninstalled()
{ {
CreateViewModel(); CreateViewModel();
IPackage packagePassedToUninstallPackageWhenPropertyNameChanged = null; IPackage packagePassedToUninstallPackageWhenPropertyNameChanged = null;
@ -381,9 +362,7 @@ namespace PackageManagement.Tests
}; };
viewModel.RemovePackage(); viewModel.RemovePackage();
// fake fire parent action because there is no viewModel.parent in this test fixture viewModel.PackageChanged();
viewModel.FakePackageManagementEvents.PackageViewModel = viewModel;
viewModel.FakePackageManagementEvents.OnParentPackageUninstalled(viewModel.FakePackage);
Assert.AreEqual(fakePackage, packagePassedToUninstallPackageWhenPropertyNameChanged); Assert.AreEqual(fakePackage, packagePassedToUninstallPackageWhenPropertyNameChanged);
} }
@ -839,7 +818,7 @@ namespace PackageManagement.Tests
} }
[Test] [Test]
public void IsManaged_SolutionSelectedContainingTwoProjects_ReturnsTrue() public void IsManaged_SolutionSelectedContainingTwoProjects_ReturnsFalsew()
{ {
CreateFakeSolution(); CreateFakeSolution();
AddProjectToSolution(); AddProjectToSolution();
@ -849,15 +828,12 @@ namespace PackageManagement.Tests
bool managed = viewModel.IsManaged; bool managed = viewModel.IsManaged;
// Assert.IsTrue(managed);
// Only installed project-level package "IsManaged" // Only installed project-level package "IsManaged"
Assert.IsFalse(managed); Assert.IsFalse(managed);
bool added = viewModel.IsAdded;
Assert.IsFalse(added);
} }
[Test] [Test]
public void IsManaged_SolutionSelectedContainingOneProject_ReturnsTrue() public void IsManaged_SolutionSelectedContainingOneProject_ReturnsFalse()
{ {
CreateFakeSolution(); CreateFakeSolution();
AddProjectToSolution(); AddProjectToSolution();
@ -866,11 +842,7 @@ namespace PackageManagement.Tests
bool managed = viewModel.IsManaged; bool managed = viewModel.IsManaged;
// Assert.IsTrue(managed);
// Only installed project-level package "IsManaged"
Assert.IsFalse(managed); Assert.IsFalse(managed);
bool added = viewModel.IsAdded;
Assert.IsFalse(added);
} }
[Test] [Test]
@ -926,24 +898,17 @@ namespace PackageManagement.Tests
} }
[Test] [Test]
[Category("ToDo")] public void PackageChanged_TwoProjectsSelectedAndUserAcceptsSelectedProjects_IsAddedPropertyChanged()
[Description("OnParentPackageInstalled event, parent ([derived]PackagesViewModel) will call ReadPackages() or OnPackageChanged")]
public void ManagePackage_TwoProjectsSelectedAndUserAcceptsSelectedProjects_IsAddedPropertyChanged()
{ {
CreateViewModelWithTwoProjectsSelected("Project A", "Project B"); CreateViewModelWithTwoProjectsSelected("Project A", "Project B");
viewModel.FakePackageManagementEvents.ProjectsToSelect.Add("Project A"); viewModel.FakePackageManagementEvents.ProjectsToSelect.Add("Project A");
viewModel.FakePackageManagementEvents.ProjectsToSelect.Add("Project B"); viewModel.FakePackageManagementEvents.ProjectsToSelect.Add("Project B");
UserAcceptsProjectSelection(); UserAcceptsProjectSelection();
string propertyChangedName = null; string propertyChangedName = null;
viewModel.PropertyChanged += (sender, e) => propertyChangedName = e.PropertyName; viewModel.PropertyChanged += (sender, e) => propertyChangedName = e.PropertyName;
viewModel.ManagePackage(); viewModel.ManagePackage();
// fake fire parent action because there is no viewModel.parent in this test fixture viewModel.PackageChanged();
// Assert.Inconclusive("OnParentPackageInstalled event, parent ([derived]PackagesViewModel) will call ReadPackages() or OnPackageChanged");
viewModel.FakePackageManagementEvents.PackageViewModel = viewModel;
viewModel.FakePackageManagementEvents.OnParentPackageInstalled(viewModel.FakePackage);
Assert.AreEqual("IsAdded", propertyChangedName); Assert.AreEqual("IsAdded", propertyChangedName);
} }

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

@ -95,7 +95,7 @@ namespace PackageManagement.Tests
packageManagementEvents.OnParentPackageUninstalled(new FakePackage()); packageManagementEvents.OnParentPackageUninstalled(new FakePackage());
CompleteReadPackagesTask(); CompleteReadPackagesTask();
var expectedPackages = new FakePackage[] {}; var expectedPackages = new FakePackage[0];
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels); PackageCollectionAssert.AreEqual(expectedPackages, viewModel.PackageViewModels);
} }

Loading…
Cancel
Save