diff --git a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj index 7dc8c26465..f00dfc4d90 100644 --- a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj +++ b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj @@ -149,6 +149,7 @@ + @@ -220,6 +221,7 @@ + diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/IPackageExtensions.cs b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageExtensions.cs new file mode 100644 index 0000000000..5ddc014a53 --- /dev/null +++ b/src/AddIns/Misc/PackageManagement/Project/Src/IPackageExtensions.cs @@ -0,0 +1,21 @@ +// 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 NuGet; + +namespace ICSharpCode.PackageManagement +{ + public static class IPackageExtensions + { + /// + /// Returns description if summary is missing. + /// + public static string SummaryOrDescription(this IPackage package) + { + if (String.IsNullOrEmpty(package.Summary)) + return package.Description; + return package.Summary; + } + } +} diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/LicenseAcceptanceViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/LicenseAcceptanceViewModel.cs index 04d91af7bc..cc368db0f3 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/LicenseAcceptanceViewModel.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/LicenseAcceptanceViewModel.cs @@ -10,14 +10,16 @@ namespace ICSharpCode.PackageManagement { public class LicenseAcceptanceViewModel : ViewModelBase { - IList packages; + IList packages; public LicenseAcceptanceViewModel(IEnumerable packages) { - this.packages = packages.ToList(); + this.packages = packages + .Select(p => new PackageLicenseViewModel(p)) + .ToList(); } - public IEnumerable Packages { + public IEnumerable Packages { get { return packages; } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageLicenseViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageLicenseViewModel.cs new file mode 100644 index 0000000000..e077304a18 --- /dev/null +++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageLicenseViewModel.cs @@ -0,0 +1,30 @@ +// 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 NuGet; + +namespace ICSharpCode.PackageManagement +{ + public class PackageLicenseViewModel : ViewModelBase + { + IPackage package; + + public PackageLicenseViewModel(IPackage package) + { + this.package = package; + } + + public string Id { + get { return package.Id; } + } + + public string Summary { + get { return package.SummaryOrDescription(); } + } + + public Uri LicenseUrl { + get { return package.LicenseUrl; } + } + } +} diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs index d1dae577ea..5a3fdb1b90 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs @@ -130,12 +130,7 @@ namespace ICSharpCode.PackageManagement } public string Summary { - get { - if (!String.IsNullOrEmpty(package.Summary)) { - return package.Summary; - } - return package.Description; - } + get { return package.SummaryOrDescription(); } } public SemanticVersion Version { diff --git a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj index c9770d7d18..ead1877239 100644 --- a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj +++ b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj @@ -134,6 +134,7 @@ + diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/IPackageExtensionsTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/IPackageExtensionsTests.cs new file mode 100644 index 0000000000..65c535cf10 --- /dev/null +++ b/src/AddIns/Misc/PackageManagement/Test/Src/IPackageExtensionsTests.cs @@ -0,0 +1,55 @@ +// 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; +using ICSharpCode.SharpDevelop; +using ICSharpCode.PackageManagement.Design; +using NuGet; +using NUnit.Framework; + +namespace PackageManagement.Tests +{ + [TestFixture] + public class IPackageExtensionsTests + { + FakePackage package; + + void CreatePackageWithSummary(string summary) + { + package = new FakePackage() { Summary = summary }; + } + + [Test] + public void SummaryOrDescription_PackageHasSummary_ReturnsSummary() + { + CreatePackageWithSummary("summary"); + + string result = package.SummaryOrDescription(); + + Assert.AreEqual("summary", result); + } + + [Test] + public void SummaryOrDescription_PackageHasDescriptionButNullSummary_ReturnsDescription() + { + CreatePackageWithSummary(null); + package.Description = "description"; + + string result = package.SummaryOrDescription(); + + Assert.AreEqual("description", result); + } + + [Test] + public void SummaryOrDescription_PackageHasDescriptionButEmptySummary_ReturnsDescription() + { + CreatePackageWithSummary(String.Empty); + package.Description = "description"; + + string result = package.SummaryOrDescription(); + + Assert.AreEqual("description", result); + } + } +} diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/LicenseAcceptanceViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/LicenseAcceptanceViewModelTests.cs index 2e5685cdbf..9a4d20962f 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/LicenseAcceptanceViewModelTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/LicenseAcceptanceViewModelTests.cs @@ -3,6 +3,8 @@ using System; using System.Collections.Generic; +using System.Linq; + using ICSharpCode.PackageManagement; using ICSharpCode.PackageManagement.Design; using NuGet; @@ -65,7 +67,14 @@ namespace PackageManagement.Tests { CreateViewModelWithOnePackage(); - CollectionAssert.AreEqual(packages, viewModel.Packages); + List packageViewModels = viewModel.Packages.ToList(); + PackageLicenseViewModel firstPackageViewModel = packageViewModels.FirstOrDefault(); + + FakePackage expectedPackage = packages[0]; + Assert.AreEqual(1, packageViewModels.Count); + Assert.AreEqual(expectedPackage.Id, firstPackageViewModel.Id); + Assert.AreEqual(expectedPackage.LicenseUrl, firstPackageViewModel.LicenseUrl); + Assert.AreEqual(expectedPackage.SummaryOrDescription(), firstPackageViewModel.Summary); } [Test]