Browse Source

Can now browse for a directory containing NuGet packages in the options dialog.

pull/15/head
mrward 15 years ago
parent
commit
787fce196d
  1. 16
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.addin
  2. 13
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  3. 6
      src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimeRegisteredPackageSourcesViewModel.cs
  4. 23
      src/AddIns/Misc/PackageManagement/Project/Src/FolderBrowser.cs
  5. 12
      src/AddIns/Misc/PackageManagement/Project/Src/IFolderBrowser.cs
  6. 12
      src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourcesView.xaml
  7. 12
      src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourcesView.xaml.cs
  8. 66
      src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourcesViewModel.cs
  9. 16
      src/AddIns/Misc/PackageManagement/Project/Src/ViewModelLocator.cs
  10. 3
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  11. 18
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeFolderBrowser.cs
  12. 105
      src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesViewModelTests.cs

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

@ -52,11 +52,19 @@
</Path> </Path>
<!-- Tools options --> <!-- Tools options -->
<Path name="/SharpDevelop/Dialogs/OptionsDialog/ToolsOptions"> <Path name="/SharpDevelop/Dialogs/OptionsDialog">
<OptionPanel <OptionPanel
id="PackageManagementOptions" id="PackageManagement"
label="Package Management" label="Package Management"
class="ICSharpCode.PackageManagement.PackageManagementOptionsView" insertafter="Debugging"
/> insertbefore="TextEditorOptions">
<OptionPanel
id="PackageManagementOptions"
label="General"/>
<OptionPanel
id="PackageSources"
label="Package Sources"
class="ICSharpCode.PackageManagement.RegisteredPackageSourcesView"/>
</OptionPanel>
</Path> </Path>
</AddIn> </AddIn>

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

@ -45,6 +45,7 @@
<Reference Include="System.Core"> <Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework> <RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference> </Reference>
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xaml"> <Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework> <RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference> </Reference>
@ -72,7 +73,7 @@
<Compile Include="Src\BooleanToFontWeightConverter.cs" /> <Compile Include="Src\BooleanToFontWeightConverter.cs" />
<Compile Include="Src\DelegateCommand.cs" /> <Compile Include="Src\DelegateCommand.cs" />
<Compile Include="Src\Design\DesignTimeLicenseAcceptanceViewModel.cs" /> <Compile Include="Src\Design\DesignTimeLicenseAcceptanceViewModel.cs" />
<Compile Include="Src\Design\DesignTimePackageManagementOptionsViewModel.cs" /> <Compile Include="Src\Design\DesignTimeRegisteredPackageSourcesViewModel.cs" />
<Compile Include="Src\Design\DesignTimePackageManagementService.cs" /> <Compile Include="Src\Design\DesignTimePackageManagementService.cs" />
<Compile Include="Src\Design\DesignTimePackagesViewModel.cs" /> <Compile Include="Src\Design\DesignTimePackagesViewModel.cs" />
<Compile Include="Src\Design\FakeFileSystem.cs" /> <Compile Include="Src\Design\FakeFileSystem.cs" />
@ -84,7 +85,9 @@
<Compile Include="Src\Design\FakeProjectManager.cs" /> <Compile Include="Src\Design\FakeProjectManager.cs" />
<Compile Include="Src\Design\FakeProjectSystem.cs" /> <Compile Include="Src\Design\FakeProjectSystem.cs" />
<Compile Include="Src\Design\WpfDesigner.cs" /> <Compile Include="Src\Design\WpfDesigner.cs" />
<Compile Include="Src\FolderBrowser.cs" />
<Compile Include="Src\ICompilerMessageView.cs" /> <Compile Include="Src\ICompilerMessageView.cs" />
<Compile Include="Src\IFolderBrowser.cs" />
<Compile Include="Src\IMessageReporter.cs" /> <Compile Include="Src\IMessageReporter.cs" />
<Compile Include="Src\IMessageViewCategory.cs" /> <Compile Include="Src\IMessageViewCategory.cs" />
<Compile Include="Src\IPackageManagementOutputMessagesView.cs" /> <Compile Include="Src\IPackageManagementOutputMessagesView.cs" />
@ -117,11 +120,11 @@
<Compile Include="Src\OpenHyperlinkCommand.cs" /> <Compile Include="Src\OpenHyperlinkCommand.cs" />
<Compile Include="Src\PackageManagementFileService.cs" /> <Compile Include="Src\PackageManagementFileService.cs" />
<Compile Include="Src\PackageManagementOptions.cs" /> <Compile Include="Src\PackageManagementOptions.cs" />
<Compile Include="Src\PackageManagementOptionsView.xaml.cs"> <Compile Include="Src\RegisteredPackageSourcesView.xaml.cs">
<DependentUpon>PackageManagementOptionsView.xaml</DependentUpon> <DependentUpon>RegisteredPackageSourcesView.xaml</DependentUpon>
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="Src\PackageManagementOptionsViewModel.cs" /> <Compile Include="Src\RegisteredPackageSourcesViewModel.cs" />
<Compile Include="Src\PackageManagementProjectService.cs" /> <Compile Include="Src\PackageManagementProjectService.cs" />
<Compile Include="Src\PackageManagementEnumerableExtensions.cs" /> <Compile Include="Src\PackageManagementEnumerableExtensions.cs" />
<Compile Include="Src\PackageManagementService.cs" /> <Compile Include="Src\PackageManagementService.cs" />
@ -167,7 +170,7 @@
<ItemGroup> <ItemGroup>
<Page Include="Src\AddPackageReferenceView.xaml" /> <Page Include="Src\AddPackageReferenceView.xaml" />
<Page Include="Src\LicenseAcceptanceView.xaml" /> <Page Include="Src\LicenseAcceptanceView.xaml" />
<Page Include="Src\PackageManagementOptionsView.xaml" /> <Page Include="Src\RegisteredPackageSourcesView.xaml" />
<Page Include="Src\PackagesView.xaml" /> <Page Include="Src\PackagesView.xaml" />
<Page Include="Src\PagedResultsView.xaml" /> <Page Include="Src\PagedResultsView.xaml" />
</ItemGroup> </ItemGroup>

6
src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimePackageManagementOptionsViewModel.cs → src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimeRegisteredPackageSourcesViewModel.cs

@ -8,14 +8,14 @@ using NuGet;
namespace ICSharpCode.PackageManagement.Design namespace ICSharpCode.PackageManagement.Design
{ {
public class DesignTimePackageManagementOptionsViewModel : PackageManagementOptionsViewModel public class DesignTimeRegisteredPackageSourcesViewModel : RegisteredPackageSourcesViewModel
{ {
public DesignTimePackageManagementOptionsViewModel() public DesignTimeRegisteredPackageSourcesViewModel()
: this(new PackageManagementOptions(new Properties())) : this(new PackageManagementOptions(new Properties()))
{ {
} }
public DesignTimePackageManagementOptionsViewModel(PackageManagementOptions options) public DesignTimeRegisteredPackageSourcesViewModel(PackageManagementOptions options)
: base(options) : base(options)
{ {
options.PackageSources.Add(new PackageSource("Source2", "http://sharpdevelop.codeplex.com")); options.PackageSources.Add(new PackageSource("Source2", "http://sharpdevelop.codeplex.com"));

23
src/AddIns/Misc/PackageManagement/Project/Src/FolderBrowser.cs

@ -0,0 +1,23 @@
// 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.Windows.Forms;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.PackageManagement
{
public class FolderBrowser : IFolderBrowser
{
public string SelectFolder()
{
using (var dialog = new FolderBrowserDialog()) {
IWin32Window owner = WorkbenchSingleton.MainWin32Window;
if (dialog.ShowDialog(owner) == DialogResult.OK) {
return dialog.SelectedPath;
}
}
return null;
}
}
}

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

@ -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 IFolderBrowser
{
string SelectFolder();
}
}

12
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptionsView.xaml → src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourcesView.xaml

@ -1,5 +1,5 @@
<gui:OptionPanel <gui:OptionPanel
x:Class="ICSharpCode.PackageManagement.PackageManagementOptionsView" x:Class="ICSharpCode.PackageManagement.RegisteredPackageSourcesView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:gui="clr-namespace:ICSharpCode.SharpDevelop.Gui;assembly=ICSharpCode.SharpDevelop" xmlns:gui="clr-namespace:ICSharpCode.SharpDevelop.Gui;assembly=ICSharpCode.SharpDevelop"
xmlns:pm="clr-namespace:ICSharpCode.PackageManagement" xmlns:pm="clr-namespace:ICSharpCode.PackageManagement"
@ -50,7 +50,7 @@
</Grid.Resources> </Grid.Resources>
<Grid.DataContext> <Grid.DataContext>
<Binding Source="{StaticResource ViewModelLocator}" Path="PackageManagementOptionsViewModel"/> <Binding Source="{StaticResource ViewModelLocator}" Path="RegisteredPackageSourcesViewModel"/>
</Grid.DataContext> </Grid.DataContext>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
@ -127,7 +127,13 @@
<Button <Button
Content="Add" Content="Add"
Command="{Binding Path=AddPackageSourceCommand}" Command="{Binding Path=AddPackageSourceCommand}"
Margin="4, 2" Margin="4, 6, 4, 4"
Padding="7, 0"/>
<Button
Content="..."
Command="{Binding Path=BrowsePackageFolderCommand}"
HorizontalAlignment="Left"
Margin="4, 4"
Padding="7, 0"/> Padding="7, 0"/>
</StackPanel> </StackPanel>
</Grid> </Grid>

12
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptionsView.xaml.cs → src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourcesView.xaml.cs

@ -6,20 +6,20 @@ using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.PackageManagement namespace ICSharpCode.PackageManagement
{ {
public partial class PackageManagementOptionsView : OptionPanel public partial class RegisteredPackageSourcesView : OptionPanel
{ {
const string ViewModelResourceName = "PackageManagementOptionsViewModel"; const string ViewModelResourceName = "RegisteredPackageSourcesViewModel";
PackageManagementOptionsViewModel viewModel; RegisteredPackageSourcesViewModel viewModel;
public PackageManagementOptionsView() public RegisteredPackageSourcesView()
{ {
InitializeComponent(); InitializeComponent();
} }
PackageManagementOptionsViewModel ViewModel { RegisteredPackageSourcesViewModel ViewModel {
get { get {
if (viewModel == null) { if (viewModel == null) {
viewModel = MainGrid.DataContext as PackageManagementOptionsViewModel; viewModel = MainGrid.DataContext as RegisteredPackageSourcesViewModel;
} }
return viewModel; return viewModel;
} }

66
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptionsViewModel.cs → src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourcesViewModel.cs

@ -3,29 +3,42 @@
using System; using System;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.IO;
using System.Linq; using System.Linq;
using System.Windows.Input; using System.Windows.Input;
using NuGet; using NuGet;
namespace ICSharpCode.PackageManagement namespace ICSharpCode.PackageManagement
{ {
public class PackageManagementOptionsViewModel : ViewModelBase<PackageManagementOptionsViewModel> public class RegisteredPackageSourcesViewModel : ViewModelBase<RegisteredPackageSourcesViewModel>
{ {
ObservableCollection<PackageSourceViewModel> packageSourceViewModels = ObservableCollection<PackageSourceViewModel> packageSourceViewModels =
new ObservableCollection<PackageSourceViewModel>(); new ObservableCollection<PackageSourceViewModel>();
PackageManagementOptions options; PackageManagementOptions options;
IFolderBrowser folderBrowser;
DelegateCommand addPackageSourceCommmand; DelegateCommand addPackageSourceCommmand;
DelegateCommand removePackageSourceCommand; DelegateCommand removePackageSourceCommand;
DelegateCommand movePackageSourceUpCommand; DelegateCommand movePackageSourceUpCommand;
DelegateCommand movePackageSourceDownCommand; DelegateCommand movePackageSourceDownCommand;
DelegateCommand browsePackageFolderCommand;
RegisteredPackageSource newPackageSource = new RegisteredPackageSource(); RegisteredPackageSource newPackageSource = new RegisteredPackageSource();
PackageSourceViewModel selectedPackageSourceViewModel; PackageSourceViewModel selectedPackageSourceViewModel;
public PackageManagementOptionsViewModel(PackageManagementOptions options) public RegisteredPackageSourcesViewModel(
PackageManagementOptions options)
: this(options, new FolderBrowser())
{
}
public RegisteredPackageSourcesViewModel(
PackageManagementOptions options,
IFolderBrowser folderBrowser)
{ {
this.options = options; this.options = options;
this.folderBrowser = folderBrowser;
CreateCommands(); CreateCommands();
} }
@ -46,6 +59,9 @@ namespace ICSharpCode.PackageManagement
movePackageSourceDownCommand = movePackageSourceDownCommand =
new DelegateCommand(param => MovePackageSourceDown(), new DelegateCommand(param => MovePackageSourceDown(),
param => CanMovePackageSourceDown); param => CanMovePackageSourceDown);
browsePackageFolderCommand =
new DelegateCommand(param => BrowsePackageFolder());
} }
public ICommand AddPackageSourceCommand { public ICommand AddPackageSourceCommand {
@ -64,6 +80,10 @@ namespace ICSharpCode.PackageManagement
get { return movePackageSourceDownCommand; } get { return movePackageSourceDownCommand; }
} }
public ICommand BrowsePackageFolderCommand {
get { return browsePackageFolderCommand; }
}
public ObservableCollection<PackageSourceViewModel> PackageSourceViewModels { public ObservableCollection<PackageSourceViewModel> PackageSourceViewModels {
get { return packageSourceViewModels; } get { return packageSourceViewModels; }
} }
@ -92,12 +112,18 @@ namespace ICSharpCode.PackageManagement
public string NewPackageSourceName { public string NewPackageSourceName {
get { return newPackageSource.Name; } get { return newPackageSource.Name; }
set { newPackageSource.Name = value; } set {
newPackageSource.Name = value;
OnPropertyChanged(viewModel => viewModel.NewPackageSourceName);
}
} }
public string NewPackageSourceUrl { public string NewPackageSourceUrl {
get { return newPackageSource.Source; } get { return newPackageSource.Source; }
set { newPackageSource.Source = value; } set {
newPackageSource.Source = value;
OnPropertyChanged(viewModel => viewModel.NewPackageSourceUrl);
}
} }
public PackageSourceViewModel SelectedPackageSourceViewModel { public PackageSourceViewModel SelectedPackageSourceViewModel {
@ -127,21 +153,15 @@ namespace ICSharpCode.PackageManagement
} }
public bool CanAddPackageSource { public bool CanAddPackageSource {
get { get { return NewPackageSourceHasUrl && NewPackageSourceHasName; }
return NewPackageSourceHasUrl && NewPackageSourceHasName;
}
} }
bool NewPackageSourceHasUrl { bool NewPackageSourceHasUrl {
get { get { return !String.IsNullOrEmpty(NewPackageSourceUrl); }
return !String.IsNullOrEmpty(NewPackageSourceUrl);
}
} }
bool NewPackageSourceHasName { bool NewPackageSourceHasName {
get { get { return !String.IsNullOrEmpty(NewPackageSourceName); }
return !String.IsNullOrEmpty(NewPackageSourceName);
}
} }
public void RemovePackageSource() public void RemovePackageSource()
@ -209,5 +229,25 @@ namespace ICSharpCode.PackageManagement
{ {
return packageSourceViewModels.Last(); return packageSourceViewModels.Last();
} }
public void BrowsePackageFolder()
{
string folder = folderBrowser.SelectFolder();
if (folder != null) {
UpdateNewPackageSourceUsingSelectedFolder(folder);
}
}
void UpdateNewPackageSourceUsingSelectedFolder(string folder)
{
NewPackageSourceUrl = folder;
NewPackageSourceName = GetPackageSourceNameFromFolder(folder);
}
string GetPackageSourceNameFromFolder(string folder)
{
return Path.GetFileName(folder);
}
} }
} }

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

@ -9,7 +9,7 @@ namespace ICSharpCode.PackageManagement
public class ViewModelLocator public class ViewModelLocator
{ {
AddPackageReferenceViewModel addPackageReferenceViewModel; AddPackageReferenceViewModel addPackageReferenceViewModel;
PackageManagementOptionsViewModel packageManagementOptionsViewModel; RegisteredPackageSourcesViewModel registeredPackageSourcesViewModel;
IPackageManagementService packageManagementService; IPackageManagementService packageManagementService;
public AddPackageReferenceViewModel AddPackageReferenceViewModel { public AddPackageReferenceViewModel AddPackageReferenceViewModel {
@ -42,22 +42,22 @@ namespace ICSharpCode.PackageManagement
return WpfDesigner.IsInDesignMode(); return WpfDesigner.IsInDesignMode();
} }
public PackageManagementOptionsViewModel PackageManagementOptionsViewModel { public RegisteredPackageSourcesViewModel RegisteredPackageSourcesViewModel {
get { get {
if (packageManagementOptionsViewModel == null) { if (registeredPackageSourcesViewModel == null) {
CreatePackageManagementOptionsViewModel(); CreateRegisteredPackageSourcesViewModel();
} }
return packageManagementOptionsViewModel; return registeredPackageSourcesViewModel;
} }
} }
void CreatePackageManagementOptionsViewModel() void CreateRegisteredPackageSourcesViewModel()
{ {
CreatePackageManagementService(); CreatePackageManagementService();
if (IsInDesignMode()) { if (IsInDesignMode()) {
packageManagementOptionsViewModel = new DesignTimePackageManagementOptionsViewModel(); registeredPackageSourcesViewModel = new DesignTimeRegisteredPackageSourcesViewModel();
} else { } else {
packageManagementOptionsViewModel = new PackageManagementOptionsViewModel(packageManagementService.Options); registeredPackageSourcesViewModel = new RegisteredPackageSourcesViewModel(packageManagementService.Options);
} }
} }
} }

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

@ -72,6 +72,7 @@
<Compile Include="Src\Helpers\ExceptionThrowingPackageOperationResolver.cs" /> <Compile Include="Src\Helpers\ExceptionThrowingPackageOperationResolver.cs" />
<Compile Include="Src\Helpers\FakeCompilerMessageView.cs" /> <Compile Include="Src\Helpers\FakeCompilerMessageView.cs" />
<Compile Include="Src\Helpers\FakeFileService.cs" /> <Compile Include="Src\Helpers\FakeFileService.cs" />
<Compile Include="Src\Helpers\FakeFolderBrowser.cs" />
<Compile Include="Src\Helpers\FakeLicenseAcceptanceService.cs" /> <Compile Include="Src\Helpers\FakeLicenseAcceptanceService.cs" />
<Compile Include="Src\Helpers\FakeMessageCategoryView.cs" /> <Compile Include="Src\Helpers\FakeMessageCategoryView.cs" />
<Compile Include="Src\Helpers\FakeMessageReporter.cs" /> <Compile Include="Src\Helpers\FakeMessageReporter.cs" />
@ -119,7 +120,7 @@
<Compile Include="Src\LicenseAcceptanceViewModelTests.cs" /> <Compile Include="Src\LicenseAcceptanceViewModelTests.cs" />
<Compile Include="Src\OpenHyperlinkCommandTests.cs" /> <Compile Include="Src\OpenHyperlinkCommandTests.cs" />
<Compile Include="Src\PackageManagementOptionsTests.cs" /> <Compile Include="Src\PackageManagementOptionsTests.cs" />
<Compile Include="Src\PackageManagementOptionsViewModelTests.cs" /> <Compile Include="Src\RegisteredPackageSourcesViewModelTests.cs" />
<Compile Include="Src\PackageManagementOutputMessagesViewTests.cs" /> <Compile Include="Src\PackageManagementOutputMessagesViewTests.cs" />
<Compile Include="Src\PackageManagementServiceTests.cs" /> <Compile Include="Src\PackageManagementServiceTests.cs" />
<Compile Include="Src\PackageRepositoryCacheTests.cs" /> <Compile Include="Src\PackageRepositoryCacheTests.cs" />

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

@ -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 FakeFolderBrowser : IFolderBrowser
{
public string FolderToReturnFromSelectFolder;
public string SelectFolder()
{
return FolderToReturnFromSelectFolder;
}
}
}

105
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsViewModelTests.cs → src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesViewModelTests.cs

@ -12,16 +12,19 @@ using PackageManagement.Tests.Helpers;
namespace PackageManagement.Tests namespace PackageManagement.Tests
{ {
[TestFixture] [TestFixture]
public class PackageManagementOptionsViewModelTests public class RegisteredPackageSourcesViewModelTests
{ {
PackageManagementOptionsViewModel viewModel; RegisteredPackageSourcesViewModel viewModel;
PackageManagementOptions options; PackageManagementOptions options;
FakeFolderBrowser fakeFolderBrowser;
List<string> propertiesChanged;
void CreateViewModel() void CreateViewModel()
{ {
options = new PackageManagementOptions(new Properties()); options = new PackageManagementOptions(new Properties());
options.PackageSources.Clear(); options.PackageSources.Clear();
viewModel = new PackageManagementOptionsViewModel(options); fakeFolderBrowser = new FakeFolderBrowser();
viewModel = new RegisteredPackageSourcesViewModel(options, fakeFolderBrowser);
} }
void CreateViewModelWithOnePackageSource() void CreateViewModelWithOnePackageSource()
@ -43,6 +46,12 @@ namespace PackageManagement.Tests
options.PackageSources.Add(source); options.PackageSources.Add(source);
} }
void RecordPropertyChanges()
{
propertiesChanged = new List<string>();
viewModel.PropertyChanged += (sender, e) => propertiesChanged.Add(e.PropertyName);
}
[Test] [Test]
public void Constructor_InstanceCreated_NoPackageSourceViewModels() public void Constructor_InstanceCreated_NoPackageSourceViewModels()
{ {
@ -464,5 +473,95 @@ namespace PackageManagement.Tests
Assert.Contains("SelectedPackageSourceViewModel", propertyNames); Assert.Contains("SelectedPackageSourceViewModel", propertyNames);
} }
[Test]
public void BrowsePackageFolderCommand_UserSelectsFolder_NewPackageSourceUrlIsUpdatedWithSelectedFolder()
{
CreateViewModel();
viewModel.Load();
string expectedSourceUrl = @"d:\projects\packages";
fakeFolderBrowser.FolderToReturnFromSelectFolder = expectedSourceUrl;
viewModel.BrowsePackageFolderCommand.Execute(null);
string newSourceUrl = viewModel.NewPackageSourceUrl;
Assert.AreEqual(expectedSourceUrl, newSourceUrl);
}
[Test]
public void BrowsePackageFolder_UserSelectsFolder_NewPackageSourceNameIsUpdatedWithSelectedFolderName()
{
CreateViewModel();
viewModel.Load();
fakeFolderBrowser.FolderToReturnFromSelectFolder = @"d:\projects\NuGet Packages";
viewModel.BrowsePackageFolder();
string newName = viewModel.NewPackageSourceName;
Assert.AreEqual("NuGet Packages", newName);
}
[Test]
public void BrowsePackageFolder_UserDoesNotSelectFolder_NewPackageSourceUrlIsNotChanged()
{
CreateViewModel();
viewModel.Load();
string expectedSource = "http://sharpdevelop.com/packages";
viewModel.NewPackageSourceUrl = expectedSource;
fakeFolderBrowser.FolderToReturnFromSelectFolder = null;
viewModel.BrowsePackageFolder();
string newSource = viewModel.NewPackageSourceUrl;
Assert.AreEqual(expectedSource, newSource);
}
[Test]
public void BrowsePackageFolder_UserDoesNotSelectFolder_NewPackageSourceNameIsNotChanged()
{
CreateViewModel();
viewModel.Load();
viewModel.NewPackageSourceName = "Test";
fakeFolderBrowser.FolderToReturnFromSelectFolder = null;
viewModel.BrowsePackageFolder();
string name = viewModel.NewPackageSourceName;
Assert.AreEqual("Test", name);
}
[Test]
public void BrowsePackageFolder_UserSelectsFolder_PropertyChangedEventFiresForNewPackageSourceUrl()
{
CreateViewModel();
viewModel.Load();
fakeFolderBrowser.FolderToReturnFromSelectFolder = @"d:\projects\NuGet Packages";
RecordPropertyChanges();
viewModel.BrowsePackageFolder();
bool propertyEventFired = propertiesChanged.Contains("NewPackageSourceUrl");
Assert.IsTrue(propertyEventFired);
}
[Test]
public void BrowsePackageFolder_UserSelectsFolder_PropertyChangedEventFiresForNewPackageSourceName()
{
CreateViewModel();
viewModel.Load();
fakeFolderBrowser.FolderToReturnFromSelectFolder = @"d:\projects\NuGet Packages";
RecordPropertyChanges();
viewModel.BrowsePackageFolder();
bool propertyEventFired = propertiesChanged.Contains("NewPackageSourceName");
Assert.IsTrue(propertyEventFired);
}
} }
} }
Loading…
Cancel
Save