Browse Source

Support selecting the aggregrate NuGet package repository in the console.

pull/15/head
Matt Ward 14 years ago
parent
commit
2a44380410
  1. 2
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementServices.cs
  2. 15
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs
  3. 28
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleViewModel.cs
  4. 6
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageManagementConsoleHost.cs
  5. 8
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageManagementConsoleViewModel.cs
  6. 26
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleHostTests.cs
  7. 85
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleViewModelTests.cs

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

@ -23,7 +23,7 @@ namespace ICSharpCode.PackageManagement @@ -23,7 +23,7 @@ namespace ICSharpCode.PackageManagement
registeredPackageRepositories = new RegisteredPackageRepositories(options);
outputMessagesView = new PackageManagementOutputMessagesView(packageManagementEvents);
solution = new PackageManagementSolution(registeredPackageRepositories, packageManagementEvents);
consoleHost = new PackageManagementConsoleHost(solution);
consoleHost = new PackageManagementConsoleHost(solution, registeredPackageRepositories);
projectBrowserRefresher = new ProjectBrowserRefresher(projectService, packageManagementEvents);
}

15
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs

@ -16,6 +16,7 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -16,6 +16,7 @@ namespace ICSharpCode.PackageManagement.Scripting
{
IThread thread;
IPackageManagementSolution solution;
IRegisteredPackageRepositories registeredRepositories;
IPowerShellHostFactory powerShellHostFactory;
IPackageManagementProjectService projectService;
IPowerShellHost powerShellHost;
@ -25,19 +26,24 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -25,19 +26,24 @@ namespace ICSharpCode.PackageManagement.Scripting
public PackageManagementConsoleHost(
IPackageManagementSolution solution,
IRegisteredPackageRepositories registeredRepositories,
IPowerShellHostFactory powerShellHostFactory,
IPackageManagementProjectService projectService,
IPackageManagementAddInPath addinPath)
{
this.solution = solution;
this.registeredRepositories = registeredRepositories;
this.powerShellHostFactory = powerShellHostFactory;
this.projectService = projectService;
this.addinPath = addinPath;
}
public PackageManagementConsoleHost(IPackageManagementSolution solution)
public PackageManagementConsoleHost(
IPackageManagementSolution solution,
IRegisteredPackageRepositories registeredRepositories)
: this(
solution,
registeredRepositories,
new PowerShellHostFactory(),
new PackageManagementProjectService(),
new PackageManagementAddInPath())
@ -45,7 +51,12 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -45,7 +51,12 @@ namespace ICSharpCode.PackageManagement.Scripting
}
public IProject DefaultProject { get; set; }
public PackageSource ActivePackageSource { get; set; }
public PackageSource ActivePackageSource {
get { return registeredRepositories.ActivePackageSource; }
set { registeredRepositories.ActivePackageSource = value; }
}
public IScriptingConsole ScriptingConsole { get; set; }
public IPackageManagementProjectService ProjectService {

28
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleViewModel.cs

@ -80,10 +80,16 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -80,10 +80,16 @@ namespace ICSharpCode.PackageManagement.Scripting
void UpdatePackageSourceViewModels()
{
packageSources.Clear();
AddRegisteredPackageSourceViewModels();
AddAggregatePackageSourceViewModelIfMoreThanOnePackageSourceViewModelAdded();
SelectActivePackageSource();
}
void AddRegisteredPackageSourceViewModels()
{
foreach (PackageSource packageSource in registeredPackageSources) {
AddPackageSourceViewModel(packageSource);
}
SelectFirstActivePackageSource();
}
void AddPackageSourceViewModel(PackageSource packageSource)
@ -92,6 +98,26 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -92,6 +98,26 @@ namespace ICSharpCode.PackageManagement.Scripting
packageSources.Add(viewModel);
}
void AddAggregatePackageSourceViewModelIfMoreThanOnePackageSourceViewModelAdded()
{
if (packageSources.Count > 1) {
AddPackageSourceViewModel(RegisteredPackageSourceSettings.AggregatePackageSource);
}
}
void SelectActivePackageSource()
{
PackageSource activePackageSource = consoleHost.ActivePackageSource;
foreach (PackageSourceViewModel packageSourceViewModel in packageSources) {
if (packageSourceViewModel.GetPackageSource().Equals(activePackageSource)) {
ActivePackageSource = packageSourceViewModel;
return;
}
}
SelectFirstActivePackageSource();
}
void SelectFirstActivePackageSource()
{
if (packageSources.Count > 0) {

6
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageManagementConsoleHost.cs

@ -18,10 +18,12 @@ namespace PackageManagement.Tests.Helpers @@ -18,10 +18,12 @@ namespace PackageManagement.Tests.Helpers
public FakePackageManagementAddInPath FakePackageManagementAddInPath;
public FakePackageManagementProjectService FakeProjectService;
public FakePackageManagementSolution FakeSolution;
public FakeRegisteredPackageRepositories FakeRegisteredPackageRepositories;
public TestablePackageManagementConsoleHost()
: this(
new FakePackageManagementSolution(),
new FakeRegisteredPackageRepositories(),
new FakeScriptingConsoleWithLinesToRead(),
new FakePowerShellHostFactory(),
new FakePackageManagementProjectService(),
@ -31,17 +33,19 @@ namespace PackageManagement.Tests.Helpers @@ -31,17 +33,19 @@ namespace PackageManagement.Tests.Helpers
public TestablePackageManagementConsoleHost(
FakePackageManagementSolution solution,
FakeRegisteredPackageRepositories registeredPackageRepositories,
FakeScriptingConsoleWithLinesToRead scriptingConsole,
FakePowerShellHostFactory powerShellHostFactory,
FakePackageManagementProjectService projectService,
FakePackageManagementAddInPath addinPath)
: base(solution, powerShellHostFactory, projectService, addinPath)
: base(solution, registeredPackageRepositories, powerShellHostFactory, projectService, addinPath)
{
this.FakeSolution = solution;
this.FakeScriptingConsole = scriptingConsole;
this.ScriptingConsole = scriptingConsole;
this.FakePowerShellHostFactory = powerShellHostFactory;
this.FakeProjectService = projectService;
this.FakeRegisteredPackageRepositories = registeredPackageRepositories;
this.FakePackageManagementAddInPath = addinPath;
}

8
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageManagementConsoleViewModel.cs

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// 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.Scripting;
using ICSharpCode.Scripting;
@ -22,6 +23,13 @@ namespace PackageManagement.Tests.Helpers @@ -22,6 +23,13 @@ namespace PackageManagement.Tests.Helpers
{
}
public TestablePackageManagementConsoleViewModel(
IEnumerable<PackageSource> packageSources,
IPackageManagementConsoleHost consoleHost)
: this(new RegisteredPackageSources(packageSources), consoleHost)
{
}
public TestablePackageManagementConsoleViewModel(
RegisteredPackageSources registeredPackageSources,
IPackageManagementConsoleHost consoleHost)

26
src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleHostTests.cs

@ -20,6 +20,7 @@ namespace PackageManagement.Tests.Scripting @@ -20,6 +20,7 @@ namespace PackageManagement.Tests.Scripting
FakePowerShellHost powerShellHost;
FakePackageManagementSolution fakeSolution;
FakePackageManagementProjectService fakeProjectService;
FakeRegisteredPackageRepositories fakeRegisteredPackageRepositories;
void CreateHost()
{
@ -28,6 +29,7 @@ namespace PackageManagement.Tests.Scripting @@ -28,6 +29,7 @@ namespace PackageManagement.Tests.Scripting
scriptingConsole = host.FakeScriptingConsole;
powerShellHost = host.FakePowerShellHostFactory.FakePowerShellHost;
fakeProjectService = host.FakeProjectService;
fakeRegisteredPackageRepositories = host.FakeRegisteredPackageRepositories;
}
void RunHost()
@ -390,5 +392,29 @@ namespace PackageManagement.Tests.Scripting @@ -390,5 +392,29 @@ namespace PackageManagement.Tests.Scripting
CollectionAssert.AreEqual(expectedProjects, projects);
}
[Test]
public void ActivePackageSource_ConsoleHostCreated_ReturnsRegisteredPackageSourcesActivePackageSource()
{
CreateHost();
var expectedPackageSource = new PackageSource("Test");
fakeRegisteredPackageRepositories.ActivePackageSource = expectedPackageSource;
var actualPackageSource = host.ActivePackageSource;
Assert.AreEqual(expectedPackageSource, actualPackageSource);
}
[Test]
public void ActivePackageSource_ActivePackageSourcechanged_RegisteredPackageSourcesActivePackageSourceIsUpdated()
{
CreateHost();
var expectedPackageSource = new PackageSource("Test");
host.ActivePackageSource = expectedPackageSource;
var actualPackageSource = fakeRegisteredPackageRepositories.ActivePackageSource;
Assert.AreEqual(expectedPackageSource, actualPackageSource);
}
}
}

85
src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleViewModelTests.cs

@ -39,11 +39,41 @@ namespace PackageManagement.Tests.Scripting @@ -39,11 +39,41 @@ namespace PackageManagement.Tests.Scripting
viewModel = new TestablePackageManagementConsoleViewModel(consoleHost);
}
void CreateViewModel(IEnumerable<PackageSource> packageSources, IPackageManagementConsoleHost consoleHost)
{
viewModel = new TestablePackageManagementConsoleViewModel(packageSources, consoleHost);
}
void CreateViewModelWithOneRegisteredPackageSource()
{
CreateConsoleHost();
AddOnePackageSourceAndRemoveAnyExistingPackageSources();
CreateViewModel(consoleHost);
var packageSources = new List<PackageSource>();
packageSources.Add(new PackageSource("First source"));
CreateViewModel(packageSources, consoleHost);
}
void CreateViewModelWithTwoRegisteredPackageSources()
{
CreateConsoleHost();
var packageSources = new List<PackageSource>();
packageSources.Add(new PackageSource("First source"));
packageSources.Add(new PackageSource("Second source"));
CreateViewModel(packageSources, consoleHost);
}
PackageSource CreateViewModelWithTwoRegisteredPackageSourcesAndLastOneIsActivePackageSource()
{
CreateConsoleHost();
var packageSources = new List<PackageSource>();
packageSources.Add(new PackageSource("First source"));
var activePackageSource = new PackageSource("Second source");
packageSources.Add(activePackageSource);
consoleHost.ActivePackageSource = activePackageSource;
CreateViewModel(packageSources, consoleHost);
return activePackageSource;
}
Solution CreateViewModelWithOneProjectOpen()
@ -65,20 +95,22 @@ namespace PackageManagement.Tests.Scripting @@ -65,20 +95,22 @@ namespace PackageManagement.Tests.Scripting
return solution;
}
void AddOnePackageSourceAndRemoveAnyExistingPackageSources()
PackageSource AddOnePackageSourceAndRemoveAnyExistingPackageSources()
{
viewModel.RegisteredPackageSources.Clear();
AddOnePackageSource();
return AddOnePackageSource();
}
void AddOnePackageSource()
PackageSource AddOnePackageSource()
{
AddOnePackageSource("NewSource");
return AddOnePackageSource("NewSource");
}
void AddOnePackageSource(string name)
PackageSource AddOnePackageSource(string name)
{
viewModel.RegisteredPackageSources.Add(new PackageSource(name));
var source = new PackageSource(name);
viewModel.RegisteredPackageSources.Add(source);
return source;
}
PackageSourceViewModel SelectSecondPackageSource()
@ -156,6 +188,16 @@ namespace PackageManagement.Tests.Scripting @@ -156,6 +188,16 @@ namespace PackageManagement.Tests.Scripting
Assert.AreEqual(expectedPackageSource, actualPackageSource);
}
[Test]
public void ActivePackageSource_TwoRegisteredPackageSourcesAndLastOneIsActiveWhenConsoleCreated_SecondPackageSourceIsActiveInViewModel()
{
var expectedPackageSource = CreateViewModelWithTwoRegisteredPackageSourcesAndLastOneIsActivePackageSource();
var actualPackageSource = viewModel.ActivePackageSource.GetPackageSource();
Assert.AreEqual(expectedPackageSource, actualPackageSource);
}
[Test]
public void PackageSources_OriginalPackageSourceRemovedAndOnePackageSourceAddedAfterConsoleCreated_NewPackageSourceIsDisplayed()
{
@ -168,6 +210,19 @@ namespace PackageManagement.Tests.Scripting @@ -168,6 +210,19 @@ namespace PackageManagement.Tests.Scripting
PackageSourceCollectionAssert.AreEqual(expectedPackageSources, actualPackageSources);
}
[Test]
public void PackageSources_TwoRegisteredPackageSourcesWhenConsoleCreated_ThreePackageSourcesReturnedIncludingAggregatePackageSource()
{
CreateViewModelWithTwoRegisteredPackageSources();
var actualPackageSources = viewModel.PackageSources;
var expectedPackageSources = new List<PackageSource>(viewModel.RegisteredPackageSources);
expectedPackageSources.Add(RegisteredPackageSourceSettings.AggregatePackageSource);
PackageSourceCollectionAssert.AreEqual(expectedPackageSources, actualPackageSources);
}
[Test]
public void ActivePackageSource_OriginalPackageSourceRemovedAndOnePackageSourceAddedAfterConsoleCreated_ActivePackageSourceIsUpdatedToNewPackageSource()
{
@ -203,20 +258,6 @@ namespace PackageManagement.Tests.Scripting @@ -203,20 +258,6 @@ namespace PackageManagement.Tests.Scripting
Assert.AreEqual(selectedPackageSource, actualPackageSource);
}
[Test]
public void ActivePackageSource_OnePackageSourceAddedAfterSelectingSecondPackageSource_ActivePackageSourceIsChangedToFirstPackageSource()
{
CreateViewModel();
AddOnePackageSource();
SelectSecondPackageSource();
AddOnePackageSource("ThirdPackageSource");
var expectedPackageSource = viewModel.PackageSources[0];
var actualPackageSource = viewModel.ActivePackageSource;
Assert.AreEqual(expectedPackageSource, actualPackageSource);
}
[Test]
public void ActivePackageSource_SelectedPackageSourceIsRemoved_ActivePackageSourceIsChangedToFirstPackageSource()
{

Loading…
Cancel
Save