24 changed files with 674 additions and 8 deletions
@ -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; } |
||||||
|
} |
||||||
|
} |
@ -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); |
||||||
|
} |
||||||
|
} |
@ -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(); |
||||||
|
} |
||||||
|
} |
@ -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; } |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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> |
@ -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(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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; } |
||||||
|
} |
||||||
|
} |
@ -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; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -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); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue