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); + } + } +}