Browse Source

Add tools options to clear recent NuGet packages and clear the local machine NuGet package cache.

pull/15/head
mrward 14 years ago
parent
commit
81f323322b
  1. 3
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.addin
  2. 11
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  3. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs
  4. 6
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageRepository.cs
  5. 16
      src/AddIns/Misc/PackageManagement/Project/Src/IMachinePackageCache.cs
  6. 2
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs
  7. 12
      src/AddIns/Misc/PackageManagement/Project/Src/IProcess.cs
  8. 13
      src/AddIns/Misc/PackageManagement/Project/Src/IRecentPackageRepository.cs
  9. 26
      src/AddIns/Misc/PackageManagement/Project/Src/MachinePackageCache.cs
  10. 2
      src/AddIns/Misc/PackageManagement/Project/Src/OpenHyperlinkCommand.cs
  11. 59
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptionsView.xaml
  12. 16
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptionsView.xaml.cs
  13. 82
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptionsViewModel.cs
  14. 2
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs
  15. 15
      src/AddIns/Misc/PackageManagement/Project/Src/Process.cs
  16. 8
      src/AddIns/Misc/PackageManagement/Project/Src/RecentPackageRepository.cs
  17. 1
      src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourcesView.xaml.cs
  18. 12
      src/AddIns/Misc/PackageManagement/Project/Src/ViewModelLocator.cs
  19. 4
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  20. 32
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeMachinePackageCache.cs
  21. 18
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeProcess.cs
  22. 38
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeRecentPackageRepository.cs
  23. 277
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsViewModelTests.cs
  24. 25
      src/AddIns/Misc/PackageManagement/Test/Src/RecentPackageRepositoryTests.cs

3
src/AddIns/Misc/PackageManagement/Project/PackageManagement.addin

@ -60,7 +60,8 @@ @@ -60,7 +60,8 @@
insertbefore="TextEditorOptions">
<OptionPanel
id="PackageManagementOptions"
label="General"/>
label="General"
class="ICSharpCode.PackageManagement.PackageManagementOptionsView"/>
<OptionPanel
id="PackageSources"
label="Package Sources"

11
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -88,12 +88,21 @@ @@ -88,12 +88,21 @@
<Compile Include="Src\FolderBrowser.cs" />
<Compile Include="Src\ICompilerMessageView.cs" />
<Compile Include="Src\IFolderBrowser.cs" />
<Compile Include="Src\IMachinePackageCache.cs" />
<Compile Include="Src\IMessageReporter.cs" />
<Compile Include="Src\IMessageViewCategory.cs" />
<Compile Include="Src\IPackageManagementOutputMessagesView.cs" />
<Compile Include="Src\IPackageRepositoryCache.cs" />
<Compile Include="Src\IProcess.cs" />
<Compile Include="Src\IRecentPackageRepository.cs" />
<Compile Include="Src\MachinePackageCache.cs" />
<Compile Include="Src\PackageManagementCompilerMessageView.cs" />
<Compile Include="Src\PackageManagementMessageViewCategory.cs" />
<Compile Include="Src\PackageManagementOptionsView.xaml.cs">
<DependentUpon>PackageManagementOptionsView.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Src\PackageManagementOptionsViewModel.cs" />
<Compile Include="Src\PackageManagementOutputMessagesView.cs" />
<Compile Include="Src\PackageRepositoryCache.cs" />
<Compile Include="Src\PackagesForSelectedPageResult.cs" />
@ -120,6 +129,7 @@ @@ -120,6 +129,7 @@
<Compile Include="Src\OpenHyperlinkCommand.cs" />
<Compile Include="Src\PackageManagementFileService.cs" />
<Compile Include="Src\PackageManagementOptions.cs" />
<Compile Include="Src\Process.cs" />
<Compile Include="Src\RegisteredPackageSourcesView.xaml.cs">
<DependentUpon>RegisteredPackageSourcesView.xaml</DependentUpon>
<SubType>Code</SubType>
@ -170,6 +180,7 @@ @@ -170,6 +180,7 @@
<ItemGroup>
<Page Include="Src\AddPackageReferenceView.xaml" />
<Page Include="Src\LicenseAcceptanceView.xaml" />
<Page Include="Src\PackageManagementOptionsView.xaml" />
<Page Include="Src\RegisteredPackageSourcesView.xaml" />
<Page Include="Src\PackagesView.xaml" />
<Page Include="Src\PagedResultsView.xaml" />

2
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementService.cs

@ -127,7 +127,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -127,7 +127,7 @@ namespace ICSharpCode.PackageManagement.Design
public FakePackageRepository FakeRecentPackageRepository = new FakePackageRepository();
public IPackageRepository RecentPackageRepository {
public IRecentPackageRepository RecentPackageRepository {
get { return FakeRecentPackageRepository; }
}

6
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageRepository.cs

@ -8,7 +8,7 @@ using NuGet; @@ -8,7 +8,7 @@ using NuGet;
namespace ICSharpCode.PackageManagement.Design
{
public class FakePackageRepository : IPackageRepository
public class FakePackageRepository : IRecentPackageRepository
{
public List<FakePackage> FakePackages = new List<FakePackage>();
public bool IsRemovePackageCalled;
@ -34,5 +34,9 @@ namespace ICSharpCode.PackageManagement.Design @@ -34,5 +34,9 @@ namespace ICSharpCode.PackageManagement.Design
}
public string Source { get; set; }
public void Clear()
{
}
}
}

16
src/AddIns/Misc/PackageManagement/Project/Src/IMachinePackageCache.cs

@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
// 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 interface IMachinePackageCache
{
IQueryable<IPackage> GetPackages();
void Clear();
string Source { get; }
}
}

2
src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementService.cs

@ -15,7 +15,7 @@ namespace ICSharpCode.PackageManagement @@ -15,7 +15,7 @@ namespace ICSharpCode.PackageManagement
IPackageRepository CreateAggregatePackageRepository();
IPackageRepository ActivePackageRepository { get; }
IProjectManager ActiveProjectManager { get; }
IPackageRepository RecentPackageRepository { get; }
IRecentPackageRepository RecentPackageRepository { get; }
void InstallPackage(IPackageRepository repository, IPackage package, IEnumerable<PackageOperation> operations);
void UninstallPackage(IPackageRepository repository, IPackage package);

12
src/AddIns/Misc/PackageManagement/Project/Src/IProcess.cs

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
// 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;
namespace ICSharpCode.PackageManagement
{
public interface IProcess
{
void Start(string fileName);
}
}

13
src/AddIns/Misc/PackageManagement/Project/Src/IRecentPackageRepository.cs

@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
// 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 interface IRecentPackageRepository : IPackageRepository
{
void Clear();
}
}

26
src/AddIns/Misc/PackageManagement/Project/Src/MachinePackageCache.cs

@ -0,0 +1,26 @@ @@ -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 System.Linq;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class MachinePackageCache : IMachinePackageCache
{
public IQueryable<IPackage> GetPackages()
{
return MachineCache.Default.GetPackages();
}
public void Clear()
{
MachineCache.Default.Clear();
}
public string Source {
get { return MachineCache.Default.Source; }
}
}
}

2
src/AddIns/Misc/PackageManagement/Project/Src/OpenHyperlinkCommand.cs

@ -35,7 +35,7 @@ namespace ICSharpCode.PackageManagement @@ -35,7 +35,7 @@ namespace ICSharpCode.PackageManagement
protected virtual void StartProcess(string fileName)
{
Process.Start(fileName);
System.Diagnostics.Process.Start(fileName);
}
}
}

59
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptionsView.xaml

@ -0,0 +1,59 @@ @@ -0,0 +1,59 @@
<gui:OptionPanel
x:Class="ICSharpCode.PackageManagement.PackageManagementOptionsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:gui="clr-namespace:ICSharpCode.SharpDevelop.Gui;assembly=ICSharpCode.SharpDevelop"
xmlns:pm="clr-namespace:ICSharpCode.PackageManagement"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.Resources>
<pm:ViewModelLocator x:Key="ViewModelLocator"/>
<BooleanToVisibilityConverter x:Key="BoolToVisibility"/>
</Grid.Resources>
<Grid.DataContext>
<Binding Source="{StaticResource ViewModelLocator}" Path="PackageManagementOptionsViewModel"/>
</Grid.DataContext>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<GroupBox
Grid.Row="0"
Header="_Recent Packages">
<StackPanel
Orientation="Horizontal">
<Button
Padding="7, 2"
Command="{Binding Path=ClearRecentPackagesCommand}"
Content="Clear Recent Packages"/>
<TextBlock
Margin="4, 4"
Visibility="{Binding Path=HasNoRecentPackages, Converter={StaticResource BoolToVisibility}}"
Text="No recent packages"/>
</StackPanel>
</GroupBox>
<GroupBox
Grid.Row="1"
Header="Packages _Cache">
<StackPanel
Orientation="Horizontal">
<Button
Padding="7, 2"
Command="{Binding Path=ClearCachedPackagesCommand}"
Content="Clear Package Cache"/>
<Button
Margin="8, 0, 0, 0"
Padding="7, 2"
Command="{Binding Path=BrowseCachedPackagesCommand}"
Content="..."/>
<TextBlock
Margin="4, 4"
Visibility="{Binding Path=HasNoCachedPackages, Converter={StaticResource BoolToVisibility}}"
Text="No cached packages"/>
</StackPanel>
</GroupBox>
</Grid>
</gui:OptionPanel>

16
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptionsView.xaml.cs

@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
// 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.SharpDevelop.Gui;
namespace ICSharpCode.PackageManagement
{
public partial class PackageManagementOptionsView : OptionPanel
{
public PackageManagementOptionsView()
{
InitializeComponent();
}
}
}

82
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptionsViewModel.cs

@ -0,0 +1,82 @@ @@ -0,0 +1,82 @@
// 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 System.Windows.Input;
namespace ICSharpCode.PackageManagement
{
public class PackageManagementOptionsViewModel : ViewModelBase<PackageManagementOptionsViewModel>
{
IRecentPackageRepository recentPackageRepository;
IMachinePackageCache machinePackageCache;
IProcess process;
public PackageManagementOptionsViewModel(IRecentPackageRepository recentPackageRepository)
: this(recentPackageRepository, new MachinePackageCache(), new Process())
{
}
public PackageManagementOptionsViewModel(
IRecentPackageRepository recentPackageRepository,
IMachinePackageCache machinePackageCache,
IProcess process)
{
this.recentPackageRepository = recentPackageRepository;
this.machinePackageCache = machinePackageCache;
this.process = process;
this.HasNoRecentPackages = !RecentPackageRepositoryHasPackages();
this.HasNoCachedPackages = !MachinePackageCacheHasPackages();
CreateCommands();
}
public bool HasNoRecentPackages { get; private set; }
public bool HasNoCachedPackages { get; private set; }
bool MachinePackageCacheHasPackages()
{
return machinePackageCache.GetPackages().Any();
}
bool RecentPackageRepositoryHasPackages()
{
return recentPackageRepository.GetPackages().Any();
}
void CreateCommands()
{
ClearRecentPackagesCommand =
new DelegateCommand(param => ClearRecentPackages(), param => !HasNoRecentPackages);
ClearCachedPackagesCommand =
new DelegateCommand(param => ClearCachedPackages(), param => !HasNoCachedPackages);
BrowseCachedPackagesCommand =
new DelegateCommand(param => BrowseCachedPackages(), param => !HasNoCachedPackages);
}
public ICommand ClearRecentPackagesCommand { get; private set; }
public ICommand ClearCachedPackagesCommand { get; private set; }
public ICommand BrowseCachedPackagesCommand { get; private set; }
public void ClearRecentPackages()
{
recentPackageRepository.Clear();
HasNoRecentPackages = true;
OnPropertyChanged(viewModel => viewModel.HasNoRecentPackages);
}
public void ClearCachedPackages()
{
machinePackageCache.Clear();
HasNoCachedPackages = true;
OnPropertyChanged(viewModel => viewModel.HasNoCachedPackages);
}
public void BrowseCachedPackages()
{
process.Start(machinePackageCache.Source);
}
}
}

2
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementService.cs

@ -71,7 +71,7 @@ namespace ICSharpCode.PackageManagement @@ -71,7 +71,7 @@ namespace ICSharpCode.PackageManagement
}
}
public IPackageRepository RecentPackageRepository {
public IRecentPackageRepository RecentPackageRepository {
get {
if (recentPackageRepository == null) {
CreateRecentPackageRepository();

15
src/AddIns/Misc/PackageManagement/Project/Src/Process.cs

@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
// 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;
namespace ICSharpCode.PackageManagement
{
public class Process : IProcess
{
public void Start(string fileName)
{
System.Diagnostics.Process.Start(fileName);
}
}
}

8
src/AddIns/Misc/PackageManagement/Project/Src/RecentPackageRepository.cs

@ -8,7 +8,7 @@ using NuGet; @@ -8,7 +8,7 @@ using NuGet;
namespace ICSharpCode.PackageManagement
{
public class RecentPackageRepository : IPackageRepository
public class RecentPackageRepository : IRecentPackageRepository
{
public const int DefaultMaximumPackagesCount = 20;
@ -145,5 +145,11 @@ namespace ICSharpCode.PackageManagement @@ -145,5 +145,11 @@ namespace ICSharpCode.PackageManagement
get { return maximumPackagesCount; }
set { maximumPackagesCount = value; }
}
public void Clear()
{
packages.Clear();
UpdateRecentPackagesInOptions();
}
}
}

1
src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourcesView.xaml.cs

@ -8,7 +8,6 @@ namespace ICSharpCode.PackageManagement @@ -8,7 +8,6 @@ namespace ICSharpCode.PackageManagement
{
public partial class RegisteredPackageSourcesView : OptionPanel
{
const string ViewModelResourceName = "RegisteredPackageSourcesViewModel";
RegisteredPackageSourcesViewModel viewModel;
public RegisteredPackageSourcesView()

12
src/AddIns/Misc/PackageManagement/Project/Src/ViewModelLocator.cs

@ -10,6 +10,7 @@ namespace ICSharpCode.PackageManagement @@ -10,6 +10,7 @@ namespace ICSharpCode.PackageManagement
{
AddPackageReferenceViewModel addPackageReferenceViewModel;
RegisteredPackageSourcesViewModel registeredPackageSourcesViewModel;
PackageManagementOptionsViewModel packageManagementOptionsViewModel;
IPackageManagementService packageManagementService;
public AddPackageReferenceViewModel AddPackageReferenceViewModel {
@ -60,5 +61,16 @@ namespace ICSharpCode.PackageManagement @@ -60,5 +61,16 @@ namespace ICSharpCode.PackageManagement
registeredPackageSourcesViewModel = new RegisteredPackageSourcesViewModel(packageManagementService.Options);
}
}
public PackageManagementOptionsViewModel PackageManagementOptionsViewModel {
get {
if (packageManagementOptionsViewModel == null) {
CreatePackageManagementService();
IRecentPackageRepository recentRepository = packageManagementService.RecentPackageRepository;
packageManagementOptionsViewModel = new PackageManagementOptionsViewModel(recentRepository);
}
return packageManagementOptionsViewModel;
}
}
}
}

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

@ -74,6 +74,7 @@ @@ -74,6 +74,7 @@
<Compile Include="Src\Helpers\FakeFileService.cs" />
<Compile Include="Src\Helpers\FakeFolderBrowser.cs" />
<Compile Include="Src\Helpers\FakeLicenseAcceptanceService.cs" />
<Compile Include="Src\Helpers\FakeMachinePackageCache.cs" />
<Compile Include="Src\Helpers\FakeMessageCategoryView.cs" />
<Compile Include="Src\Helpers\FakeMessageReporter.cs" />
<Compile Include="Src\Helpers\FakePackageManager.cs" />
@ -83,6 +84,8 @@ @@ -83,6 +84,8 @@
<Compile Include="Src\Helpers\FakePackageManagementProjectService.cs" />
<Compile Include="Src\Helpers\FakePackagePathResolver.cs" />
<Compile Include="Src\Helpers\FakePackageTests.cs" />
<Compile Include="Src\Helpers\FakeProcess.cs" />
<Compile Include="Src\Helpers\FakeRecentPackageRepository.cs" />
<Compile Include="Src\Helpers\FakeTask.cs" />
<Compile Include="Src\Helpers\FakeTaskFactory.cs" />
<Compile Include="Src\Helpers\FileNameAndDirectory.cs" />
@ -120,6 +123,7 @@ @@ -120,6 +123,7 @@
<Compile Include="Src\LicenseAcceptanceViewModelTests.cs" />
<Compile Include="Src\OpenHyperlinkCommandTests.cs" />
<Compile Include="Src\PackageManagementOptionsTests.cs" />
<Compile Include="Src\PackageManagementOptionsViewModelTests.cs" />
<Compile Include="Src\RegisteredPackageSourcesViewModelTests.cs" />
<Compile Include="Src\PackageManagementOutputMessagesViewTests.cs" />
<Compile Include="Src\PackageManagementServiceTests.cs" />

32
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeMachinePackageCache.cs

@ -0,0 +1,32 @@ @@ -0,0 +1,32 @@
// 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 System.Linq;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
namespace PackageManagement.Tests.Helpers
{
public class FakeMachinePackageCache : IMachinePackageCache
{
public List<FakePackage> FakePackages = new List<FakePackage>();
public IQueryable<IPackage> GetPackages()
{
return FakePackages.AsQueryable();
}
public bool IsClearCalled;
public void Clear()
{
IsClearCalled = true;
}
public string Source { get; set; }
}
}

18
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeProcess.cs

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
// 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 FakeProcess : IProcess
{
public string FileNamePassedToStart;
public void Start(string fileName)
{
FileNamePassedToStart = fileName;
}
}
}

38
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeRecentPackageRepository.cs

@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
// 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 System.Linq;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
namespace PackageManagement.Tests.Helpers
{
public class FakeRecentPackageRepository : IRecentPackageRepository
{
public string Source { get; set; }
public List<FakePackage> FakePackages = new List<FakePackage>();
public IQueryable<IPackage> GetPackages()
{
return FakePackages.AsQueryable();
}
public void AddPackage(IPackage package)
{
}
public void RemovePackage(IPackage package)
{
}
public bool IsClearCalled;
public void Clear()
{
IsClearCalled = true;
}
}
}

277
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsViewModelTests.cs

@ -0,0 +1,277 @@ @@ -0,0 +1,277 @@
// 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 NUnit.Framework;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Tests
{
[TestFixture]
public class PackageManagementOptionsViewModelTests
{
PackageManagementOptionsViewModel viewModel;
FakeRecentPackageRepository fakeRecentRepository;
FakeMachinePackageCache fakeMachineCache;
FakeProcess fakeProcess;
List<string> propertiesChanged;
void CreateRecentRepository()
{
fakeRecentRepository = new FakeRecentPackageRepository();
}
void CreateMachineCache()
{
fakeMachineCache = new FakeMachinePackageCache();
}
void CreateViewModelUsingCreatedMachineCache()
{
CreateRecentRepository();
fakeProcess = new FakeProcess();
viewModel = new PackageManagementOptionsViewModel(fakeRecentRepository, fakeMachineCache, fakeProcess);
}
void CreateViewModelUsingCreatedRecentRepository()
{
CreateMachineCache();
fakeProcess = new FakeProcess();
viewModel = new PackageManagementOptionsViewModel(fakeRecentRepository, fakeMachineCache, fakeProcess);
}
void AddPackageToRecentRepository()
{
fakeRecentRepository.FakePackages.Add(new FakePackage());
}
void AddPackageToMachineCache()
{
fakeMachineCache.FakePackages.Add(new FakePackage());
}
void RecordPropertyChanges()
{
propertiesChanged = new List<string>();
viewModel.PropertyChanged += (sender, e) => propertiesChanged.Add(e.PropertyName);
}
[Test]
public void HasNoRecentPackages_RecentPackageRepositoryHasNoPackages_ReturnsTrue()
{
CreateRecentRepository();
CreateViewModelUsingCreatedRecentRepository();
bool hasPackages = viewModel.HasNoRecentPackages;
Assert.IsTrue(hasPackages);
}
[Test]
public void HasNoRecentPackages_RecentPackageRepositoryHasOnePackage_ReturnsFalse()
{
CreateRecentRepository();
AddPackageToRecentRepository();
CreateViewModelUsingCreatedRecentRepository();
bool hasPackages = viewModel.HasNoRecentPackages;
Assert.IsFalse(hasPackages);
}
[Test]
public void HasNoCachedPackages_MachinePackageCacheHasNoPackages_ReturnsTrue()
{
CreateMachineCache();
CreateViewModelUsingCreatedMachineCache();
bool hasPackages = viewModel.HasNoCachedPackages;
Assert.IsTrue(hasPackages);
}
[Test]
public void HasNoCachedPackages_MachinePackageCacheHasOnePackage_ReturnsFalse()
{
CreateMachineCache();
AddPackageToMachineCache();
CreateViewModelUsingCreatedMachineCache();
bool hasPackages = viewModel.HasNoCachedPackages;
Assert.IsFalse(hasPackages);
}
[Test]
public void ClearRecentPackagesCommandCanExecute_OneRecentPackage_CanExecuteReturnsTrue()
{
CreateRecentRepository();
AddPackageToRecentRepository();
CreateViewModelUsingCreatedRecentRepository();
bool canExecute = viewModel.ClearRecentPackagesCommand.CanExecute(null);
Assert.IsTrue(canExecute);
}
[Test]
public void ClearRecentPackagesCommandCanExecute_NoRecentPackages_CanExecuteReturnsFalse()
{
CreateRecentRepository();
CreateViewModelUsingCreatedRecentRepository();
bool canExecute = viewModel.ClearRecentPackagesCommand.CanExecute(null);
Assert.IsFalse(canExecute);
}
[Test]
public void ClearCachedPackagesCommandCanExecute_OneCachedPackage_CanExecuteReturnsTrue()
{
CreateMachineCache();
AddPackageToMachineCache();
CreateViewModelUsingCreatedMachineCache();
bool canExecute = viewModel.ClearCachedPackagesCommand.CanExecute(null);
Assert.IsTrue(canExecute);
}
[Test]
public void ClearCachedPackagesCommandCanExecute_NoCachedPackages_CanExecuteReturnsFalse()
{
CreateMachineCache();
CreateViewModelUsingCreatedMachineCache();
bool canExecute = viewModel.ClearCachedPackagesCommand.CanExecute(null);
Assert.IsFalse(canExecute);
}
[Test]
public void ClearCachedPackagesCommandExecute_OneCachedPackage_ClearsPackagesFromCache()
{
CreateMachineCache();
AddPackageToMachineCache();
CreateViewModelUsingCreatedMachineCache();
viewModel.ClearCachedPackagesCommand.Execute(null);
Assert.IsTrue(fakeMachineCache.IsClearCalled);
}
[Test]
public void ClearRecentPackagesCommandExecute_OneRecentPackage_ClearsPackages()
{
CreateMachineCache();
AddPackageToRecentRepository();
CreateViewModelUsingCreatedRecentRepository();
viewModel.ClearRecentPackagesCommand.Execute(null);
Assert.IsTrue(fakeRecentRepository.IsClearCalled);
}
[Test]
public void ClearRecentPackages_OneRecentPackage_HasNoRecentPackagesIsTrue()
{
CreateRecentRepository();
AddPackageToRecentRepository();
CreateViewModelUsingCreatedRecentRepository();
RecordPropertyChanges();
viewModel.ClearRecentPackages();
bool hasPackages = viewModel.HasNoRecentPackages;
Assert.IsTrue(hasPackages);
}
[Test]
public void ClearCachedPackages_OneCachedPackage_HasNoCachedPackagesReturnsTrue()
{
CreateMachineCache();
AddPackageToMachineCache();
CreateViewModelUsingCreatedMachineCache();
RecordPropertyChanges();
viewModel.ClearCachedPackages();
bool hasPackages = viewModel.HasNoCachedPackages;
Assert.IsTrue(hasPackages);
}
[Test]
public void ClearRecentPackages_OneRecentPackage_HasNoRecentPackagesPropertyChangedEventFired()
{
CreateRecentRepository();
AddPackageToRecentRepository();
CreateViewModelUsingCreatedMachineCache();
RecordPropertyChanges();
viewModel.ClearRecentPackages();
bool fired = propertiesChanged.Contains("HasNoRecentPackages");
Assert.IsTrue(fired);
}
[Test]
public void ClearCachedPackages_OneCachedPackage_HasNoCachedPackagesPropertyChangedEventFired()
{
CreateMachineCache();
AddPackageToMachineCache();
CreateViewModelUsingCreatedMachineCache();
RecordPropertyChanges();
viewModel.ClearCachedPackages();
bool fired = propertiesChanged.Contains("HasNoCachedPackages");
Assert.IsTrue(fired);
}
[Test]
public void BrowseCachedPackagesCommandCanExecute_OneCachedPackage_ReturnsTrue()
{
CreateMachineCache();
AddPackageToMachineCache();
CreateViewModelUsingCreatedMachineCache();
bool canExecute = viewModel.BrowseCachedPackagesCommand.CanExecute(null);
Assert.IsTrue(canExecute);
}
[Test]
public void BrowseCachedPackagesCommandCanExecute_NoCachedPackages_ReturnsFalse()
{
CreateMachineCache();
CreateViewModelUsingCreatedMachineCache();
bool canExecute = viewModel.BrowseCachedPackagesCommand.CanExecute(null);
Assert.IsFalse(canExecute);
}
[Test]
public void BrowseCachedPackagesCommandExecute_OneCachedPackage_StartsProcessToOpenMachineCacheFolder()
{
CreateMachineCache();
CreateViewModelUsingCreatedMachineCache();
string expectedFileName = @"d:\projects\nugetpackages";
fakeMachineCache.Source = expectedFileName;
viewModel.BrowseCachedPackagesCommand.Execute(null);
string fileName = fakeProcess.FileNamePassedToStart;
Assert.AreEqual(expectedFileName, fileName);
}
}
}

25
src/AddIns/Misc/PackageManagement/Test/Src/RecentPackageRepositoryTests.cs

@ -212,5 +212,30 @@ namespace PackageManagement.Tests @@ -212,5 +212,30 @@ namespace PackageManagement.Tests
PackageCollectionAssert.AreEqual(expectedPackages, recentPackages);
}
[Test]
public void Clear_OneRecentPackage_PackagesRemoved()
{
CreateRepository();
AddOnePackageToRepository("Test1");
repository.Clear();
int count = repository.GetPackages().Count();
Assert.AreEqual(0, count);
}
[Test]
public void Clear_OneRecentPackageInOptions_RecentPackagesAreRemovedFromOptions()
{
CreateRepositoryWithOneRecentPackageSavedInOptions();
repository.Clear();
int count = options.RecentPackages.Count;
Assert.AreEqual(0, count);
}
}
}

Loading…
Cancel
Save