Browse Source

Support selecting the aggregrate NuGet package repository in the console.

pull/15/head
Matt Ward 15 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
registeredPackageRepositories = new RegisteredPackageRepositories(options); registeredPackageRepositories = new RegisteredPackageRepositories(options);
outputMessagesView = new PackageManagementOutputMessagesView(packageManagementEvents); outputMessagesView = new PackageManagementOutputMessagesView(packageManagementEvents);
solution = new PackageManagementSolution(registeredPackageRepositories, packageManagementEvents); solution = new PackageManagementSolution(registeredPackageRepositories, packageManagementEvents);
consoleHost = new PackageManagementConsoleHost(solution); consoleHost = new PackageManagementConsoleHost(solution, registeredPackageRepositories);
projectBrowserRefresher = new ProjectBrowserRefresher(projectService, packageManagementEvents); projectBrowserRefresher = new ProjectBrowserRefresher(projectService, packageManagementEvents);
} }

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

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

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

@ -80,10 +80,16 @@ namespace ICSharpCode.PackageManagement.Scripting
void UpdatePackageSourceViewModels() void UpdatePackageSourceViewModels()
{ {
packageSources.Clear(); packageSources.Clear();
AddRegisteredPackageSourceViewModels();
AddAggregatePackageSourceViewModelIfMoreThanOnePackageSourceViewModelAdded();
SelectActivePackageSource();
}
void AddRegisteredPackageSourceViewModels()
{
foreach (PackageSource packageSource in registeredPackageSources) { foreach (PackageSource packageSource in registeredPackageSources) {
AddPackageSourceViewModel(packageSource); AddPackageSourceViewModel(packageSource);
} }
SelectFirstActivePackageSource();
} }
void AddPackageSourceViewModel(PackageSource packageSource) void AddPackageSourceViewModel(PackageSource packageSource)
@ -92,6 +98,26 @@ namespace ICSharpCode.PackageManagement.Scripting
packageSources.Add(viewModel); 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() void SelectFirstActivePackageSource()
{ {
if (packageSources.Count > 0) { if (packageSources.Count > 0) {

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

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

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

@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using System.Collections.Generic;
using ICSharpCode.PackageManagement; using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Scripting; using ICSharpCode.PackageManagement.Scripting;
using ICSharpCode.Scripting; using ICSharpCode.Scripting;
@ -22,6 +23,13 @@ namespace PackageManagement.Tests.Helpers
{ {
} }
public TestablePackageManagementConsoleViewModel(
IEnumerable<PackageSource> packageSources,
IPackageManagementConsoleHost consoleHost)
: this(new RegisteredPackageSources(packageSources), consoleHost)
{
}
public TestablePackageManagementConsoleViewModel( public TestablePackageManagementConsoleViewModel(
RegisteredPackageSources registeredPackageSources, RegisteredPackageSources registeredPackageSources,
IPackageManagementConsoleHost consoleHost) IPackageManagementConsoleHost consoleHost)

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

@ -20,6 +20,7 @@ namespace PackageManagement.Tests.Scripting
FakePowerShellHost powerShellHost; FakePowerShellHost powerShellHost;
FakePackageManagementSolution fakeSolution; FakePackageManagementSolution fakeSolution;
FakePackageManagementProjectService fakeProjectService; FakePackageManagementProjectService fakeProjectService;
FakeRegisteredPackageRepositories fakeRegisteredPackageRepositories;
void CreateHost() void CreateHost()
{ {
@ -28,6 +29,7 @@ namespace PackageManagement.Tests.Scripting
scriptingConsole = host.FakeScriptingConsole; scriptingConsole = host.FakeScriptingConsole;
powerShellHost = host.FakePowerShellHostFactory.FakePowerShellHost; powerShellHost = host.FakePowerShellHostFactory.FakePowerShellHost;
fakeProjectService = host.FakeProjectService; fakeProjectService = host.FakeProjectService;
fakeRegisteredPackageRepositories = host.FakeRegisteredPackageRepositories;
} }
void RunHost() void RunHost()
@ -390,5 +392,29 @@ namespace PackageManagement.Tests.Scripting
CollectionAssert.AreEqual(expectedProjects, projects); 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
viewModel = new TestablePackageManagementConsoleViewModel(consoleHost); viewModel = new TestablePackageManagementConsoleViewModel(consoleHost);
} }
void CreateViewModel(IEnumerable<PackageSource> packageSources, IPackageManagementConsoleHost consoleHost)
{
viewModel = new TestablePackageManagementConsoleViewModel(packageSources, consoleHost);
}
void CreateViewModelWithOneRegisteredPackageSource() void CreateViewModelWithOneRegisteredPackageSource()
{ {
CreateConsoleHost(); CreateConsoleHost();
AddOnePackageSourceAndRemoveAnyExistingPackageSources(); var packageSources = new List<PackageSource>();
CreateViewModel(consoleHost); 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() Solution CreateViewModelWithOneProjectOpen()
@ -65,20 +95,22 @@ namespace PackageManagement.Tests.Scripting
return solution; return solution;
} }
void AddOnePackageSourceAndRemoveAnyExistingPackageSources() PackageSource AddOnePackageSourceAndRemoveAnyExistingPackageSources()
{ {
viewModel.RegisteredPackageSources.Clear(); 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() PackageSourceViewModel SelectSecondPackageSource()
@ -156,6 +188,16 @@ namespace PackageManagement.Tests.Scripting
Assert.AreEqual(expectedPackageSource, actualPackageSource); Assert.AreEqual(expectedPackageSource, actualPackageSource);
} }
[Test]
public void ActivePackageSource_TwoRegisteredPackageSourcesAndLastOneIsActiveWhenConsoleCreated_SecondPackageSourceIsActiveInViewModel()
{
var expectedPackageSource = CreateViewModelWithTwoRegisteredPackageSourcesAndLastOneIsActivePackageSource();
var actualPackageSource = viewModel.ActivePackageSource.GetPackageSource();
Assert.AreEqual(expectedPackageSource, actualPackageSource);
}
[Test] [Test]
public void PackageSources_OriginalPackageSourceRemovedAndOnePackageSourceAddedAfterConsoleCreated_NewPackageSourceIsDisplayed() public void PackageSources_OriginalPackageSourceRemovedAndOnePackageSourceAddedAfterConsoleCreated_NewPackageSourceIsDisplayed()
{ {
@ -168,6 +210,19 @@ namespace PackageManagement.Tests.Scripting
PackageSourceCollectionAssert.AreEqual(expectedPackageSources, actualPackageSources); 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] [Test]
public void ActivePackageSource_OriginalPackageSourceRemovedAndOnePackageSourceAddedAfterConsoleCreated_ActivePackageSourceIsUpdatedToNewPackageSource() public void ActivePackageSource_OriginalPackageSourceRemovedAndOnePackageSourceAddedAfterConsoleCreated_ActivePackageSourceIsUpdatedToNewPackageSource()
{ {
@ -203,20 +258,6 @@ namespace PackageManagement.Tests.Scripting
Assert.AreEqual(selectedPackageSource, actualPackageSource); 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] [Test]
public void ActivePackageSource_SelectedPackageSourceIsRemoved_ActivePackageSourceIsChangedToFirstPackageSource() public void ActivePackageSource_SelectedPackageSourceIsRemoved_ActivePackageSourceIsChangedToFirstPackageSource()
{ {

Loading…
Cancel
Save