diff --git a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
index 17b1bced14..b3c5615335 100644
--- a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
+++ b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
@@ -272,6 +272,7 @@
+
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs
index b10ebbdd54..b3ffcba70f 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs
@@ -33,6 +33,13 @@ namespace ICSharpCode.PackageManagement.Design
this.Version = new Version(1, 0, 0, 0);
}
+ public FakePackage(string id, string version)
+ {
+ this.Id = id;
+ this.Description = String.Empty;
+ this.Version = new Version(version);
+ }
+
public static FakePackage CreatePackageWithVersion(string version)
{
return CreatePackageWithVersion("Test", version);
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSelectedProject.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSelectedProject.cs
index 45aa8a2d69..f6697bfba4 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSelectedProject.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSelectedProject.cs
@@ -22,17 +22,24 @@ namespace ICSharpCode.PackageManagement.Design
}
public FakeSelectedProject(string name, bool selected)
+ : this(name, selected, true)
+ {
+ }
+
+ public FakeSelectedProject(string name, bool selected, bool enabled)
{
this.Name = name;
this.IsSelected = selected;
+ this.IsEnabled = enabled;
}
public string Name { get; set; }
public bool IsSelected { get; set; }
+ public bool IsEnabled { get; set; }
public override string ToString()
{
- return String.Format("Name: {0}, IsSelected: {1}", Name, IsSelected);
+ return String.Format("Name: {0}, IsSelected: {1}, IsEnabled: {2}", Name, IsSelected, IsEnabled);
}
public FakeInstallPackageAction FakeInstallPackageAction {
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementSelectedProject.cs b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementSelectedProject.cs
index 2523c33158..f0a3c90961 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementSelectedProject.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementSelectedProject.cs
@@ -11,6 +11,7 @@ namespace ICSharpCode.PackageManagement
{
string Name { get; }
bool IsSelected { get; set; }
+ bool IsEnabled { get; set; }
IPackageManagementProject Project { get; }
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSelectedProject.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSelectedProject.cs
index 375e4a70c9..de520e718f 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSelectedProject.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSelectedProject.cs
@@ -8,22 +8,32 @@ namespace ICSharpCode.PackageManagement
public class PackageManagementSelectedProject : IPackageManagementSelectedProject
{
public PackageManagementSelectedProject(IPackageManagementProject project)
- : this(project, false)
+ : this(project, selected: false)
{
}
public PackageManagementSelectedProject(
IPackageManagementProject project,
bool selected)
+ : this(project, selected, enabled: true)
+ {
+ }
+
+ public PackageManagementSelectedProject(
+ IPackageManagementProject project,
+ bool selected,
+ bool enabled)
{
this.Project = project;
this.Name = Project.Name;
this.IsSelected = selected;
+ this.IsEnabled = enabled;
}
public IPackageManagementProject Project { get; private set; }
public string Name { get; private set; }
public bool IsSelected { get; set; }
+ public bool IsEnabled { get; set; }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSelectedProjects.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSelectedProjects.cs
index e58d69b98d..78dcfdb2c3 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSelectedProjects.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSelectedProjects.cs
@@ -68,8 +68,9 @@ namespace ICSharpCode.PackageManagement
IPackageManagementProject project,
IPackageFromRepository package)
{
+ bool enabled = IsProjectEnabled(project, package);
bool selected = IsProjectSelected(project, package);
- return new PackageManagementSelectedProject(project, selected);
+ return new PackageManagementSelectedProject(project, selected, enabled);
}
protected virtual bool IsProjectSelected(IPackageManagementProject project, IPackageFromRepository package)
@@ -77,6 +78,11 @@ namespace ICSharpCode.PackageManagement
return false;
}
+ protected virtual bool IsProjectEnabled(IPackageManagementProject project, IPackageFromRepository package)
+ {
+ return true;
+ }
+
public bool HasMultipleProjects()
{
if (HasSingleProjectSelected()) {
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/SelectProjectsView.xaml b/src/AddIns/Misc/PackageManagement/Project/Src/SelectProjectsView.xaml
index 8e0e123c91..3bed9bab26 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/SelectProjectsView.xaml
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/SelectProjectsView.xaml
@@ -27,12 +27,9 @@
-
-
+ IsEnabled="{Binding IsEnabled, Mode=OneWay}"
+ IsChecked="{Binding IsSelected}"
+ Content="{Binding Name}"/>
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/SelectedProjectsForUpdatedPackages.cs b/src/AddIns/Misc/PackageManagement/Project/Src/SelectedProjectsForUpdatedPackages.cs
new file mode 100644
index 0000000000..89c3fc207e
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/SelectedProjectsForUpdatedPackages.cs
@@ -0,0 +1,34 @@
+// 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.Linq;
+using NuGet;
+
+namespace ICSharpCode.PackageManagement
+{
+ public class SelectedProjectsForUpdatedPackages : PackageManagementSelectedProjects
+ {
+ public SelectedProjectsForUpdatedPackages(IPackageManagementSolution solution)
+ : base(solution)
+ {
+ }
+
+ protected override bool IsProjectSelected(IPackageManagementProject project, IPackageFromRepository package)
+ {
+ return IsProjectEnabled(project, package);
+ }
+
+ protected override bool IsProjectEnabled(IPackageManagementProject project, IPackageFromRepository package)
+ {
+ return project.GetPackages()
+ .Where(p => IsPackageIdMatch(p.Id, package.Id))
+ .Any(p => p.Version < package.Version);
+ }
+
+ bool IsPackageIdMatch(string id1, string id2)
+ {
+ return String.Equals(id1, id2, StringComparison.InvariantCultureIgnoreCase);
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs
index 68336af790..12be64178b 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModel.cs
@@ -10,7 +10,7 @@ namespace ICSharpCode.PackageManagement
{
public UpdatedPackageViewModel(
IPackageFromRepository package,
- PackageManagementSelectedProjects selectedProjects,
+ SelectedProjectsForUpdatedPackages selectedProjects,
IPackageManagementEvents packageManagementEvents,
IPackageActionRunner actionRunner,
ILogger logger)
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModelFactory.cs b/src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModelFactory.cs
index 1fd911ae71..4b64c715fc 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModelFactory.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackageViewModelFactory.cs
@@ -8,16 +8,19 @@ namespace ICSharpCode.PackageManagement
{
public class UpdatedPackageViewModelFactory : PackageViewModelFactory
{
+ SelectedProjectsForUpdatedPackages selectedProjectsForUpdatedPackages;
+
public UpdatedPackageViewModelFactory(IPackageViewModelFactory packageViewModelFactory)
: base(packageViewModelFactory)
{
+ selectedProjectsForUpdatedPackages = new SelectedProjectsForUpdatedPackages(Solution);
}
public override PackageViewModel CreatePackageViewModel(IPackageFromRepository package)
{
return new UpdatedPackageViewModel(
package,
- SelectedProjects,
+ selectedProjectsForUpdatedPackages,
PackageManagementEvents,
PackageActionRunner,
Logger);
diff --git a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
index 8df44a3854..933d14d157 100644
--- a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
+++ b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
@@ -74,6 +74,7 @@
+
@@ -224,6 +225,7 @@
+
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/SelectedProjectCollectionAssert.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/SelectedProjectCollectionAssert.cs
index 1a389e8a05..92e77adbab 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/SelectedProjectCollectionAssert.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/SelectedProjectCollectionAssert.cs
@@ -23,7 +23,10 @@ namespace PackageManagement.Tests.Helpers
{
var projectsAsString = new List();
foreach (IPackageManagementSelectedProject project in projects) {
- string text = String.Format("Name: {0}, IsSelected: {1}", project.Name, project.IsSelected);
+ string text = String.Format("Name: {0}, IsSelected: {1}, IsEnabled: {2}",
+ project.Name,
+ project.IsSelected,
+ project.IsEnabled);
projectsAsString.Add(text);
}
return projectsAsString;
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableSelectedProjectsForUpdatedPackages.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableSelectedProjectsForUpdatedPackages.cs
new file mode 100644
index 0000000000..c6a9cc5938
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableSelectedProjectsForUpdatedPackages.cs
@@ -0,0 +1,26 @@
+// 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;
+
+namespace PackageManagement.Tests.Helpers
+{
+ public class TestableSelectedProjectsForUpdatedPackages : SelectedProjectsForUpdatedPackages
+ {
+ public TestableSelectedProjectsForUpdatedPackages(IPackageManagementSolution solution)
+ : base(solution)
+ {
+ }
+
+ public bool CallIsProjectEnabled(IPackageManagementProject project, IPackageFromRepository package)
+ {
+ return base.IsProjectEnabled(project, package);
+ }
+
+ public bool CallIsProjectSelected(IPackageManagementProject project, IPackageFromRepository package)
+ {
+ return base.IsProjectSelected(project, package);
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs
index 5b9ecc8f4b..09ef841ca9 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs
@@ -21,7 +21,7 @@ namespace PackageManagement.Tests.Helpers
public TestableUpdatedPackageViewModel(FakePackageManagementSolution solution)
: this(
new FakePackage(),
- new PackageManagementSelectedProjects(solution),
+ new SelectedProjectsForUpdatedPackages(solution),
new FakePackageManagementEvents(),
new FakePackageActionRunner(),
new FakeLogger())
@@ -31,7 +31,7 @@ namespace PackageManagement.Tests.Helpers
public TestableUpdatedPackageViewModel(
FakePackage package,
- PackageManagementSelectedProjects selectedProjects,
+ SelectedProjectsForUpdatedPackages selectedProjects,
FakePackageManagementEvents packageManagementEvents,
FakePackageActionRunner actionRunner,
FakeLogger logger)
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackageViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackageViewModelTests.cs
index 556a5f9181..225d533ffc 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackageViewModelTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/InstalledPackageViewModelTests.cs
@@ -262,8 +262,8 @@ namespace PackageManagement.Tests
fakePackageManagementEvents.SelectedProjectsPassedToOnSelectProjects;
var expectedSelectedProjects = new List();
- expectedSelectedProjects.Add(new FakeSelectedProject("Project A", selected: true));
- expectedSelectedProjects.Add(new FakeSelectedProject("Project B", selected: false));
+ expectedSelectedProjects.Add(new FakeSelectedProject("Project A", selected: true, enabled: true));
+ expectedSelectedProjects.Add(new FakeSelectedProject("Project B", selected: false, enabled: true));
SelectedProjectCollectionAssert.AreEqual(expectedSelectedProjects, selectedProjects);
}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSelectedProjectTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSelectedProjectTests.cs
index 9e31752a62..022838b3e7 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSelectedProjectTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSelectedProjectTests.cs
@@ -34,6 +34,28 @@ namespace PackageManagement.Tests
string name = selectedProject.Name;
Assert.AreEqual("Test", name);
- }
+ }
+
+ [Test]
+ public void IsSelected_SelectedNotSpecifiedInConstructor_ReturnsFalse()
+ {
+ CreateFakePackageManagementProject();
+ CreateSelectedProject(fakeProject);
+
+ bool selected = selectedProject.IsSelected;
+
+ Assert.IsFalse(selected);
+ }
+
+ [Test]
+ public void IsEnabled_EnabledNotSpecifiedInConstructor_ReturnsTrue()
+ {
+ CreateFakePackageManagementProject();
+ CreateSelectedProject(fakeProject);
+
+ bool enabled = selectedProject.IsEnabled;
+
+ Assert.IsTrue(enabled);
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSelectedProjectsTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSelectedProjectsTests.cs
index c24a03d3cd..1620bc123b 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSelectedProjectsTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSelectedProjectsTests.cs
@@ -73,7 +73,7 @@ namespace PackageManagement.Tests
var projects = new List();
projects.AddRange(selectedProjects.GetProjects(fakePackage));
- var expectedProject = new FakeSelectedProject("MyProject");
+ var expectedProject = new FakeSelectedProject("MyProject", selected: false, enabled: true);
var expectedProjects = new List();
expectedProjects.Add(expectedProject);
@@ -101,7 +101,7 @@ namespace PackageManagement.Tests
NoProjectsSelected();
projects.AddRange(selectedProjects.GetProjects(fakePackage));
- var expectedProject = new FakeSelectedProject("MyProject");
+ var expectedProject = new FakeSelectedProject("MyProject", selected: false, enabled: true);
var expectedProjects = new List();
expectedProjects.Add(expectedProject);
@@ -140,8 +140,8 @@ namespace PackageManagement.Tests
projects.AddRange(selectedProjects.GetProjects(fakePackage));
var expectedProjects = new List();
- expectedProjects.Add(new FakeSelectedProject("Project A"));
- expectedProjects.Add(new FakeSelectedProject("Project B"));
+ expectedProjects.Add(new FakeSelectedProject("Project A", selected: false, enabled: true));
+ expectedProjects.Add(new FakeSelectedProject("Project B", selected: false, enabled: true));
SelectedProjectCollectionAssert.AreEqual(expectedProjects, projects);
}
@@ -506,7 +506,7 @@ namespace PackageManagement.Tests
var projects = new List();
projects.AddRange(selectedProjects.GetProjects(fakePackage));
- var expectedProject = new FakeSelectedProject("MyProject");
+ var expectedProject = new FakeSelectedProject("MyProject", selected: false, enabled: true);
var expectedProjects = new List();
expectedProjects.Add(expectedProject);
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/SelectedProjectsForUpdatedPackagesTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/SelectedProjectsForUpdatedPackagesTests.cs
new file mode 100644
index 0000000000..46e345b3fd
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/SelectedProjectsForUpdatedPackagesTests.cs
@@ -0,0 +1,196 @@
+// 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 ICSharpCode.SharpDevelop.Project;
+using NUnit.Framework;
+using PackageManagement.Tests.Helpers;
+
+namespace PackageManagement.Tests
+{
+ [TestFixture]
+ public class SelectedProjectsForUpdatedPackagesTests
+ {
+ TestableSelectedProjectsForUpdatedPackages selectedProjects;
+ FakePackageManagementSolution fakeSolution;
+
+ void CreateFakeSolution()
+ {
+ fakeSolution = new FakePackageManagementSolution();
+ }
+
+ void CreateSelectedProjects()
+ {
+ selectedProjects = new TestableSelectedProjectsForUpdatedPackages(fakeSolution);
+ }
+
+ List AddSolutionWithTwoProjectsToProjectService(string projectName1, string projectName2)
+ {
+ TestableProject project1 = ProjectHelper.CreateTestProject(projectName1);
+ TestableProject project2 = ProjectHelper.CreateTestProject(projectName2);
+
+ Solution solution = project1.ParentSolution;
+ project2.Parent = solution;
+
+ fakeSolution.FakeMSBuildProjects.Add(project1);
+ fakeSolution.FakeMSBuildProjects.Add(project2);
+
+ fakeSolution.AddFakeProjectToReturnFromGetProject(projectName1);
+ fakeSolution.AddFakeProjectToReturnFromGetProject(projectName2);
+
+ return fakeSolution.FakeMSBuildProjects;
+ }
+
+ FakePackageManagementProject GetProject(string name)
+ {
+ return fakeSolution.FakeProjectsToReturnFromGetProject[name];
+ }
+
+ [Test]
+ public void GetProjects_TwoProjectsAndPackageNotInstalledInAnyProject_IsEnabledIsFalseForAllSelectedProjects()
+ {
+ CreateFakeSolution();
+ AddSolutionWithTwoProjectsToProjectService("Project A", "Project B");
+ fakeSolution.NoProjectsSelected();
+ CreateSelectedProjects();
+
+ var fakePackage = new FakePackage("Test");
+ var projects = new List();
+ projects.AddRange(selectedProjects.GetProjects(fakePackage));
+
+ var expectedProjects = new List();
+ expectedProjects.Add(new FakeSelectedProject("Project A", selected: false, enabled: false));
+ expectedProjects.Add(new FakeSelectedProject("Project B", selected: false, enabled: false));
+
+ SelectedProjectCollectionAssert.AreEqual(expectedProjects, projects);
+ }
+
+ [Test]
+ public void GetProjects_TwoProjectsAndOlderPackageInstalledInFirstProject_IsEnabledIsTrueForFirstSelectedProjectButFalseForSecond()
+ {
+ CreateFakeSolution();
+ AddSolutionWithTwoProjectsToProjectService("Project A", "Project B");
+ fakeSolution.NoProjectsSelected();
+ CreateSelectedProjects();
+
+ var olderFakePackage = new FakePackage("Test", "1.0");
+ FakePackageManagementProject projectA = GetProject("Project A");
+ projectA.FakePackages.Add(olderFakePackage);
+
+ var fakePackage = new FakePackage("Test", "1.2");
+ var projects = new List();
+ projects.AddRange(selectedProjects.GetProjects(fakePackage));
+
+ var expectedProjects = new List();
+ expectedProjects.Add(new FakeSelectedProject("Project A", selected: true, enabled: true));
+ expectedProjects.Add(new FakeSelectedProject("Project B", selected: false, enabled: false));
+
+ SelectedProjectCollectionAssert.AreEqual(expectedProjects, projects);
+ }
+
+ [Test]
+ public void IsProjectEnabled_PackageOlderThanPackageIntalledInProject_ReturnsFalse()
+ {
+ CreateFakeSolution();
+ CreateSelectedProjects();
+
+ var oldPackage = new FakePackage("Test", "1.0");
+ var newPackage = new FakePackage("Test", "1.3");
+
+ var project = new FakePackageManagementProject();
+ project.FakePackages.Add(newPackage);
+
+ bool enabled = selectedProjects.CallIsProjectEnabled(project, oldPackage);
+
+ Assert.IsFalse(enabled);
+ }
+
+ [Test]
+ public void IsProjectEnabled_PackageSameVersionAsPackageIntalledInProject_ReturnsFalse()
+ {
+ CreateFakeSolution();
+ CreateSelectedProjects();
+
+ var oldPackage = new FakePackage("Test", "1.0");
+ var newPackage = new FakePackage("Test", "1.0");
+
+ var project = new FakePackageManagementProject();
+ project.FakePackages.Add(newPackage);
+
+ bool enabled = selectedProjects.CallIsProjectEnabled(project, oldPackage);
+
+ Assert.IsFalse(enabled);
+ }
+
+ [Test]
+ public void IsProjectSelected_PackageSameVersionAsPackageIntalledInProject_ReturnsFalse()
+ {
+ CreateFakeSolution();
+ CreateSelectedProjects();
+
+ var oldPackage = new FakePackage("Test", "1.0");
+ var newPackage = new FakePackage("Test", "1.0");
+
+ var project = new FakePackageManagementProject();
+ project.FakePackages.Add(newPackage);
+
+ bool selected = selectedProjects.CallIsProjectSelected(project, oldPackage);
+
+ Assert.IsFalse(selected);
+ }
+
+ [Test]
+ public void IsProjectEnabled_PackageNewerThanPackageIntalledInProject_ReturnsTrue()
+ {
+ CreateFakeSolution();
+ CreateSelectedProjects();
+
+ var oldPackage = new FakePackage("Test", "1.0");
+ var newPackage = new FakePackage("Test", "1.3");
+
+ var project = new FakePackageManagementProject();
+ project.FakePackages.Add(oldPackage);
+
+ bool enabled = selectedProjects.CallIsProjectEnabled(project, newPackage);
+
+ Assert.IsTrue(enabled);
+ }
+
+ [Test]
+ public void IsProjectEnabled_PackageIdNotInstalledInProject_ReturnsFalse()
+ {
+ CreateFakeSolution();
+ CreateSelectedProjects();
+
+ var oldPackage = new FakePackage("Foo", "1.0");
+ var newPackage = new FakePackage("Bar", "1.3");
+
+ var project = new FakePackageManagementProject();
+ project.FakePackages.Add(oldPackage);
+
+ bool enabled = selectedProjects.CallIsProjectEnabled(project, newPackage);
+
+ Assert.IsFalse(enabled);
+ }
+
+ [Test]
+ public void IsProjectEnabled_PackageNewerThanPackageIntalledInProjectButPackageIdsDifferInCase_ReturnsTrue()
+ {
+ CreateFakeSolution();
+ CreateSelectedProjects();
+
+ var oldPackage = new FakePackage("test", "1.0");
+ var newPackage = new FakePackage("TEST", "1.3");
+
+ var project = new FakePackageManagementProject();
+ project.FakePackages.Add(oldPackage);
+
+ bool enabled = selectedProjects.CallIsProjectEnabled(project, newPackage);
+
+ Assert.IsTrue(enabled);
+ }
+ }
+}