Skip to content
This repository was archived by the owner on Oct 16, 2020. It is now read-only.

Commit 2ce903b

Browse files
author
Dragan
committed
PackageManagement: Make Tests Testable
1) Enable testable derivations for previous commit changes 2) Tests: Make new and extend existing testable classes/derivations
1 parent 149a0c3 commit 2ce903b

20 files changed

Lines changed: 237 additions & 23 deletions

src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,10 @@ protected override IEnumerable<IPackage> GetFilteredPackagesBeforePagingResults(
108108
.DistinctLast<IPackage>(PackageEqualityComparer.Id);
109109
}
110110
if (project != null) {
111-
filteredPackages = filteredPackages.Where(package => package.HasProjectContent());
111+
filteredPackages = filteredPackages.Where(IsProjectPackage);
112112
}
113113
return filteredPackages;
114114
}
115+
115116
}
116117
}

src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,6 @@ public static FakePackage CreatePackageWithVersion(string id, string version)
6666
return new FakePackage(id, version);
6767
}
6868

69-
public bool IsProjectPackage { get { return true; } }
70-
7169
public string Id { get; set; }
7270
public SemanticVersion Version { get; set; }
7371
public string Title { get; set; }

src/AddIns/Misc/PackageManagement/Project/Src/IPackageExtensions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,10 @@ public static string GetName(this IPackage package)
4242
return package.Id;
4343
return package.Title;
4444
}
45+
46+
public static bool IsProjectPackage(this IPackage package)
47+
{
48+
return package.HasProjectContent();
49+
}
4550
}
4651
}

src/AddIns/Misc/PackageManagement/Project/Src/IPackageFromRepository.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,5 @@ public interface IPackageFromRepository : IPackage
2727
bool HasDependencies { get; }
2828
DateTime? LastUpdated { get; }
2929
Uri GalleryUrl { get; }
30-
bool IsProjectPackage { get; }
3130
}
3231
}

src/AddIns/Misc/PackageManagement/Project/Src/PackageFromRepository.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@ public PackageFromRepository(IPackage package, IPackageRepository repository)
3636
this.Repository = repository;
3737
}
3838

39-
public bool IsProjectPackage { get { return this.HasProjectContent(); } }
40-
4139
public IPackageRepository Repository { get; private set; }
4240

4341
public IEnumerable<IPackageAssemblyReference> AssemblyReferences {

src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ public bool IsAdded {
119119
get {
120120
if (selectedProjects.HasSingleProjectSelected()) {
121121
return selectedProjects.GetSingleProjectSelected(package.Repository).IsPackageInstalled(package)
122-
|| (IsPackageInstalled() && !package.IsProjectPackage);
122+
|| (IsPackageInstalled() && !IsProjectPackage(package));
123123
}
124124
return IsPackageInstalled();
125125
}
@@ -198,14 +198,23 @@ public bool HasLastPublished {
198198
get { return package.Published.HasValue; }
199199
}
200200

201+
/// <summary>
202+
/// Make this & IPackageExtensions.IsProjectPackage overridable/testable
203+
/// </summary>
204+
/// <param name="package"></param>
205+
/// <returns></returns>
206+
protected virtual bool IsProjectPackage(IPackage package) {
207+
return package.IsProjectPackage();
208+
}
209+
201210
public void PackageChanged() {
202211
OnPropertyChanged(model => model.IsManaged);
203212
OnPropertyChanged(model => model.IsAdded);
204213
}
205214

206215
public void AddOrManagePackage() {
207216
if (selectedProjects.HasMultipleProjects()) {
208-
if (package.IsProjectPackage) {
217+
if (IsProjectPackage(package)) {
209218
ManagePackage();
210219
}
211220
else {
@@ -223,7 +232,7 @@ public void AddPackage()
223232
logger.LogAddingPackage();
224233

225234
using (IDisposable operation = StartOperation(package)) {
226-
if (package.IsProjectPackage) {
235+
if (IsProjectPackage(package)) {
227236
TryInstallingPackage();
228237
}
229238
else {
@@ -367,7 +376,7 @@ void ReportError(Exception ex)
367376

368377
public void RemoveOrManagePackage() {
369378
if (selectedProjects.HasMultipleProjects()) {
370-
if (package.IsProjectPackage) {
379+
if (IsProjectPackage(package)) {
371380
ManagePackage();
372381
}
373382
else {
@@ -384,7 +393,7 @@ public void RemovePackage()
384393
ClearReportedMessages();
385394
logger.LogRemovingPackage();
386395

387-
if (package.IsProjectPackage) {
396+
if (IsProjectPackage(package)) {
388397
TryUninstallingPackage();
389398
} else {
390399
TryUninstallingSolutionPackage();
@@ -434,7 +443,7 @@ public bool IsManaged {
434443
// Solution selected
435444
// Project-level/Solution-level Package Management
436445
if (IsAdded) {
437-
if (package.IsProjectPackage) {
446+
if (IsProjectPackage(package)) {
438447
return true; // [Manage] Button
439448
}
440449
return false; // [Remove] Button

src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,15 @@ protected virtual IQueryable<IPackage> GetAllPackages()
266266
return null;
267267
}
268268

269+
/// <summary>
270+
/// Make this & IPackageExtensions.IsProjectPackage overridable/testable
271+
/// </summary>
272+
/// <param name="package"></param>
273+
/// <returns></returns>
274+
protected virtual bool IsProjectPackage (IPackage package) {
275+
return package.IsProjectPackage();
276+
}
277+
269278
/// <summary>
270279
/// Allows filtering of the packages before paging the results. Call base class method
271280
/// to run default filtering.

src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModels.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ namespace ICSharpCode.PackageManagement
2222
{
2323
public class PackagesViewModels : IDisposable
2424
{
25+
protected PackagesViewModels() {}
26+
2527
public PackagesViewModels(
2628
IPackageManagementSolution solution,
2729
IRegisteredPackageRepositories registeredPackageRepositories,
@@ -38,10 +40,10 @@ public PackagesViewModels(
3840
RecentPackagesViewModel = new RecentPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
3941
}
4042

41-
public AvailablePackagesViewModel AvailablePackagesViewModel { get; private set; }
42-
public InstalledPackagesViewModel InstalledPackagesViewModel { get; private set; }
43-
public RecentPackagesViewModel RecentPackagesViewModel { get; private set; }
44-
public UpdatedPackagesViewModel UpdatedPackagesViewModel { get; private set; }
43+
public AvailablePackagesViewModel AvailablePackagesViewModel { get; protected set; }
44+
public InstalledPackagesViewModel InstalledPackagesViewModel { get; protected set; }
45+
public RecentPackagesViewModel RecentPackagesViewModel { get; protected set; }
46+
public UpdatedPackagesViewModel UpdatedPackagesViewModel { get; protected set; }
4547

4648
public void ReadPackages()
4749
{

src/AddIns/Misc/PackageManagement/Project/Src/RecentPackagesViewModel.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,12 @@ void OnAddRecentPackage(object sender, EventArgs e)
6666

6767
protected override IQueryable<IPackage> GetAllPackages()
6868
{
69-
return recentPackagesRepository.GetPackages().Where(package => project == null || package.HasProjectContent());
69+
IQueryable<IPackage> allPackages;
70+
allPackages = recentPackagesRepository.GetPackages();
71+
if (project != null) {
72+
allPackages = allPackages.Where(IsProjectPackage).AsQueryable();
73+
}
74+
return allPackages;
7075
}
7176
}
7277
}

src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,12 @@
119119
<Compile Include="Src\Helpers\PropertiesHelper.cs" />
120120
<Compile Include="Src\Helpers\SelectedProjectCollectionAssert.cs" />
121121
<Compile Include="Src\Helpers\SolutionHelper.cs" />
122+
<Compile Include="Src\Helpers\TestableAvailablepackagesViewModel.cs" />
122123
<Compile Include="Src\Helpers\TestableInstalledPackageViewModel.cs" />
123124
<Compile Include="Src\Helpers\TestablePackageFromRepository.cs" />
125+
<Compile Include="Src\Helpers\TestablePackagesViewModels.cs" />
124126
<Compile Include="Src\Helpers\TestableProjectBehaviour.cs" />
127+
<Compile Include="Src\Helpers\TestableRecentPackagesViewModel.cs" />
125128
<Compile Include="Src\Helpers\TestableSelectedProjectsForUpdatedPackages.cs" />
126129
<Compile Include="Src\Helpers\TestableSolutionSnapshot.cs" />
127130
<Compile Include="Src\Helpers\TestableUpdatePackagesAction.cs" />

0 commit comments

Comments
 (0)