diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/IPackageExtensions.cs b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageExtensions.cs index 0f13d6475c..283ae1281e 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/IPackageExtensions.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageExtensions.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using System.Linq; using NuGet; namespace ICSharpCode.PackageManagement @@ -45,7 +46,8 @@ namespace ICSharpCode.PackageManagement public static bool IsProjectPackage(this IPackage package) { - return package.HasProjectContent(); + return package.HasProjectContent() || + package.DependencySets.SelectMany(p => p.Dependencies).Any(); } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs index f860cc6856..f7da131127 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs @@ -275,11 +275,6 @@ namespace ICSharpCode.PackageManagement return null; } - protected virtual bool IsProjectPackage (IPackage package) - { - return package.IsProjectPackage(); - } - /// /// Allows filtering of the packages before paging the results. Call base class method /// to run default filtering. diff --git a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj index e8ece2415d..6dab719b65 100644 --- a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj +++ b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj @@ -119,12 +119,10 @@ - - diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs index a5634539d8..55c8fe2200 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs @@ -30,7 +30,7 @@ namespace PackageManagement.Tests [TestFixture] public class AvailablePackagesViewModelTests { - TestableAvailablePackagesViewModel viewModel; + AvailablePackagesViewModel viewModel; PackageManagementEvents packageManagementEvents; FakeRegisteredPackageRepositories registeredPackageRepositories; ExceptionThrowingRegisteredPackageRepositories exceptionThrowingRegisteredPackageRepositories; @@ -53,7 +53,7 @@ namespace PackageManagement.Tests var packageViewModelFactory = new FakePackageViewModelFactory(); packageManagementEvents = new PackageManagementEvents(); - viewModel = new TestableAvailablePackagesViewModel( + viewModel = new AvailablePackagesViewModel( new FakePackageManagementSolution(), packageManagementEvents, registeredPackageRepositories, diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableAvailablepackagesViewModel.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableAvailablepackagesViewModel.cs deleted file mode 100644 index e536ed07db..0000000000 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableAvailablepackagesViewModel.cs +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this -// software and associated documentation files (the "Software"), to deal in the Software -// without restriction, including without limitation the rights to use, copy, modify, merge, -// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons -// to whom the Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all copies or -// substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -// DEALINGS IN THE SOFTWARE. - -using System; -using ICSharpCode.PackageManagement; - -namespace PackageManagement.Tests.Helpers -{ - /// - /// Description of TestableAvailablepackagesViewModel. - /// - public class TestableAvailablePackagesViewModel : AvailablePackagesViewModel - { - public TestableAvailablePackagesViewModel( - IPackageManagementSolution solution, - IPackageManagementEvents packageManagementEvents, - IRegisteredPackageRepositories registeredPackageRepositories, - IPackageViewModelFactory packageViewModelFactory, - ITaskFactory taskFactory) - : base( - solution, - packageManagementEvents, - registeredPackageRepositories, - packageViewModelFactory, - taskFactory) - { - IsProjectPackageReturnsValue = true; - IsProjectPackageIsCalled = false; - } - - protected override bool IsProjectPackage(NuGet.IPackage package) - { - IsProjectPackageIsCalled = true; - return IsProjectPackageReturnsValue; - } - - public bool IsProjectPackageReturnsValue { get; set; } - public bool IsProjectPackageIsCalled { get; set; } - } -} diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackagesViewModels.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackagesViewModels.cs index 66830b1391..a0cf091d02 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackagesViewModels.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackagesViewModels.cs @@ -21,9 +21,6 @@ using ICSharpCode.PackageManagement; namespace PackageManagement.Tests.Helpers { - /// - /// Description of TestablePackagesViewModels. - /// public class TestablePackagesViewModels : PackagesViewModels { public TestablePackagesViewModels( @@ -31,15 +28,15 @@ namespace PackageManagement.Tests.Helpers IRegisteredPackageRepositories registeredPackageRepositories, IThreadSafePackageManagementEvents packageManagementEvents, IPackageActionRunner actionRunner, - ITaskFactory taskFactory) : base() + ITaskFactory taskFactory) { var packageViewModelFactory = new PackageViewModelFactory(solution, packageManagementEvents, actionRunner); var updatedPackageViewModelFactory = new UpdatedPackageViewModelFactory(packageViewModelFactory); - AvailablePackagesViewModel = new TestableAvailablePackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory); + AvailablePackagesViewModel = new AvailablePackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory); InstalledPackagesViewModel = new InstalledPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory); UpdatedPackagesViewModel = new UpdatedPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, updatedPackageViewModelFactory, taskFactory); - RecentPackagesViewModel = new TestableRecentPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory); + RecentPackagesViewModel = new RecentPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory); } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableRecentPackagesViewModel.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableRecentPackagesViewModel.cs deleted file mode 100644 index fb6706d65c..0000000000 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableRecentPackagesViewModel.cs +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this -// software and associated documentation files (the "Software"), to deal in the Software -// without restriction, including without limitation the rights to use, copy, modify, merge, -// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons -// to whom the Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all copies or -// substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -// DEALINGS IN THE SOFTWARE. - -using System; -using ICSharpCode.PackageManagement; - -namespace PackageManagement.Tests.Helpers -{ - /// - /// Description of TestableRecentPackagesViewModel. - /// - public class TestableRecentPackagesViewModel : RecentPackagesViewModel - { - public TestableRecentPackagesViewModel( - IPackageManagementSolution solution, - IPackageManagementEvents packageManagementEvents, - IRegisteredPackageRepositories registeredPackageRepositories, - IPackageViewModelFactory packageViewModelFactory, - ITaskFactory taskFactory) - : base( - solution, - packageManagementEvents, - registeredPackageRepositories, - packageViewModelFactory, - taskFactory) - { - IsProjectPackageReturnsValue = true; - IsProjectPackageIsCalled = false; - } - - protected override bool IsProjectPackage(NuGet.IPackage package) - { - IsProjectPackageIsCalled = true; - return IsProjectPackageReturnsValue; - } - - public bool IsProjectPackageReturnsValue { get; set; } - public bool IsProjectPackageIsCalled { get; set; } - } -} diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/IPackageExtensionsTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/IPackageExtensionsTests.cs index 7ff2ae3db4..3e25157bb7 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/IPackageExtensionsTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/IPackageExtensionsTests.cs @@ -32,7 +32,28 @@ namespace PackageManagement.Tests void CreatePackageWithSummary(string summary) { - package = new FakePackage() { Summary = summary }; + package = new FakePackage { Summary = summary }; + } + + void CreatePackageWithTitle(string title) + { + package = new FakePackage { Title = title }; + } + + void CreatePackageWithNoProjectContent() + { + package = new FakePackage(); + } + + void CreatePackageWithProjectContent() + { + CreatePackageWithNoProjectContent(); + package.FrameworkAssembliesList.Add(new FrameworkAssemblyReference("System.Xml")); + } + + void AddDependencyToPackage() + { + package.AddDependency("Id"); } [Test] @@ -66,5 +87,68 @@ namespace PackageManagement.Tests Assert.AreEqual("description", result); } + + [Test] + public void GetName_PackageHasTitle_ReturnsTitle() + { + CreatePackageWithTitle("title"); + + string result = package.GetName(); + + Assert.AreEqual("title", result); + } + + [Test] + public void GetName_PackageHasNullTitle_ReturnsPackageId() + { + CreatePackageWithTitle(null); + package.Id = "Id"; + + string result = package.GetName(); + + Assert.AreEqual("Id", result); + } + + [Test] + public void GetName_PackageHasEmptyStringTitle_ReturnsPackageId() + { + CreatePackageWithTitle(String.Empty); + package.Id = "Id"; + + string result = package.GetName(); + + Assert.AreEqual("Id", result); + } + + [Test] + public void IsProjectPackage_PackageHasNoProjectContent_ReturnsFalse() + { + CreatePackageWithNoProjectContent(); + + bool result = package.IsProjectPackage(); + + Assert.IsFalse(result); + } + + [Test] + public void IsProjectPackage_PackageHasProjectContent_ReturnsTrie() + { + CreatePackageWithProjectContent(); + + bool result = package.IsProjectPackage(); + + Assert.IsTrue(result); + } + + [Test] + public void IsProjectPackage_PackageHasNoProjectContentButHasDependency_ReturnsTrue() + { + CreatePackageWithNoProjectContent(); + AddDependencyToPackage(); + + bool result = package.IsProjectPackage(); + + Assert.IsTrue(result); + } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/RecentPackagesViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/RecentPackagesViewModelTests.cs index c77f799490..63f15cbe21 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/RecentPackagesViewModelTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/RecentPackagesViewModelTests.cs @@ -27,7 +27,7 @@ namespace PackageManagement.Tests [TestFixture] public class RecentPackagesViewModelTests { - TestableRecentPackagesViewModel viewModel; + RecentPackagesViewModel viewModel; PackageManagementEvents packageManagementEvents; FakeRegisteredPackageRepositories registeredPackageRepositories; FakeTaskFactory taskFactory; @@ -43,7 +43,7 @@ namespace PackageManagement.Tests taskFactory = new FakeTaskFactory(); var packageViewModelFactory = new FakePackageViewModelFactory(); packageManagementEvents = new PackageManagementEvents(); - viewModel = new TestableRecentPackagesViewModel( + viewModel = new RecentPackagesViewModel( new FakePackageManagementSolution(), packageManagementEvents, registeredPackageRepositories,