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]