Browse Source

Remove dependency on project service from package management console host.

pull/15/head
Matt Ward 15 years ago
parent
commit
6091f9a250
  1. 4
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/GetProjectCmdlet.cs
  2. 8
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/OpenProjects.cs
  3. 3
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Helpers/TestableGetProjectCmdlet.cs
  4. 52
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/GetProjectCmdletTests.cs
  5. 7
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementSolution.cs
  6. 1
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementSolution.cs
  7. 5
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSolution.cs
  8. 1
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementViewModels.cs
  9. 4
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageManagementConsoleHost.cs
  10. 21
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs
  11. 3
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleViewModel.cs
  12. 26
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementConsoleHost.cs
  13. 6
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageManagementConsoleHost.cs
  14. 17
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageManagementConsoleViewModel.cs
  15. 13
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSolutionTests.cs
  16. 22
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleHostTests.cs
  17. 32
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageManagementConsoleViewModelTests.cs

4
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/GetProjectCmdlet.cs

@ -56,7 +56,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets
IEnumerable<Project> GetAllProjects() IEnumerable<Project> GetAllProjects()
{ {
var projects = new OpenProjects(ConsoleHost); var projects = new OpenProjects(ConsoleHost.Solution);
return projects.GetAllProjects(); return projects.GetAllProjects();
} }
@ -74,7 +74,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets
IEnumerable<Project> GetFilteredProjects() IEnumerable<Project> GetFilteredProjects()
{ {
var projects = new OpenProjects(ConsoleHost); var projects = new OpenProjects(ConsoleHost.Solution);
return projects.GetFilteredProjects(Name); return projects.GetFilteredProjects(Name);
} }

8
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/OpenProjects.cs

@ -13,16 +13,16 @@ namespace ICSharpCode.PackageManagement.Cmdlets
{ {
public class OpenProjects public class OpenProjects
{ {
IPackageManagementConsoleHost consoleHost; IPackageManagementSolution solution;
public OpenProjects(IPackageManagementConsoleHost consoleHost) public OpenProjects(IPackageManagementSolution solution)
{ {
this.consoleHost = consoleHost; this.solution = solution;
} }
public IEnumerable<Project> GetAllProjects() public IEnumerable<Project> GetAllProjects()
{ {
foreach (IProject project in consoleHost.GetOpenProjects()) { foreach (IProject project in solution.GetMSBuildProjects()) {
yield return CreateProject(project); yield return CreateProject(project);
} }
} }

3
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Helpers/TestableGetProjectCmdlet.cs

@ -3,6 +3,7 @@
using System; using System;
using ICSharpCode.PackageManagement.Cmdlets; using ICSharpCode.PackageManagement.Cmdlets;
using ICSharpCode.PackageManagement.Design;
using PackageManagement.Tests.Helpers; using PackageManagement.Tests.Helpers;
namespace PackageManagement.Cmdlets.Tests.Helpers namespace PackageManagement.Cmdlets.Tests.Helpers
@ -12,6 +13,7 @@ namespace PackageManagement.Cmdlets.Tests.Helpers
public FakeCmdletTerminatingError FakeCmdletTerminatingError; public FakeCmdletTerminatingError FakeCmdletTerminatingError;
public FakePackageManagementConsoleHost FakePackageManagementConsoleHost; public FakePackageManagementConsoleHost FakePackageManagementConsoleHost;
public FakeCommandRuntime FakeCommandRuntime; public FakeCommandRuntime FakeCommandRuntime;
public FakePackageManagementSolution FakeSolution;
public TestableGetProjectCmdlet() public TestableGetProjectCmdlet()
: this( : this(
@ -31,6 +33,7 @@ namespace PackageManagement.Cmdlets.Tests.Helpers
this.FakeCommandRuntime = commandRuntime; this.FakeCommandRuntime = commandRuntime;
this.CommandRuntime = commandRuntime; this.CommandRuntime = commandRuntime;
this.FakeCmdletTerminatingError = cmdletTerminatingError; this.FakeCmdletTerminatingError = cmdletTerminatingError;
this.FakeSolution = consoleHost.FakeSolution;
} }
public void CallProcessRecord() public void CallProcessRecord()

52
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/GetProjectCmdletTests.cs

@ -4,7 +4,10 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Management.Automation; using System.Management.Automation;
using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.EnvDTE; using ICSharpCode.PackageManagement.EnvDTE;
using ICSharpCode.SharpDevelop.Project;
using NUnit.Framework; using NUnit.Framework;
using PackageManagement.Cmdlets.Tests.Helpers; using PackageManagement.Cmdlets.Tests.Helpers;
using PackageManagement.Tests.Helpers; using PackageManagement.Tests.Helpers;
@ -18,6 +21,7 @@ namespace PackageManagement.Cmdlets.Tests
FakeCmdletTerminatingError fakeTerminatingError; FakeCmdletTerminatingError fakeTerminatingError;
TestableProject defaultProject; TestableProject defaultProject;
FakeCommandRuntime fakeCommandRuntime; FakeCommandRuntime fakeCommandRuntime;
FakePackageManagementSolution fakeSolution;
void CreateCmdletWithoutActiveProject() void CreateCmdletWithoutActiveProject()
{ {
@ -31,9 +35,17 @@ namespace PackageManagement.Cmdlets.Tests
fakeTerminatingError = cmdlet.FakeCmdletTerminatingError; fakeTerminatingError = cmdlet.FakeCmdletTerminatingError;
fakeCommandRuntime = cmdlet.FakeCommandRuntime; fakeCommandRuntime = cmdlet.FakeCommandRuntime;
fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost; fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost;
fakeSolution = cmdlet.FakeSolution;
defaultProject = base.AddDefaultProjectToConsoleHost(); defaultProject = base.AddDefaultProjectToConsoleHost();
} }
TestableProject AddFakeProject(string name)
{
var project = ProjectHelper.CreateTestProject(name);
fakeSolution.FakeMSBuildProjects.Add(project);
return project;
}
void RunCmdlet() void RunCmdlet()
{ {
cmdlet.CallProcessRecord(); cmdlet.CallProcessRecord();
@ -44,10 +56,10 @@ namespace PackageManagement.Cmdlets.Tests
cmdlet.All = new SwitchParameter(true); cmdlet.All = new SwitchParameter(true);
} }
void ProjectCollectionAssertAreEqual(IEnumerable<TestableProject> expectedProjects, IEnumerable<Project> actualProjects) void ProjectCollectionAssertAreEqual(IEnumerable<IProject> expectedProjects, IEnumerable<Project> actualProjects)
{ {
var expectedProjectNames = new List<string>(); var expectedProjectNames = new List<string>();
foreach (TestableProject testableProject in expectedProjects) { foreach (IProject testableProject in expectedProjects) {
expectedProjectNames.Add(testableProject.Name); expectedProjectNames.Add(testableProject.Name);
} }
@ -87,12 +99,12 @@ namespace PackageManagement.Cmdlets.Tests
CreateCmdlet(); CreateCmdlet();
EnableAllParameter(); EnableAllParameter();
fakeConsoleHost.AddFakeProject("A"); AddFakeProject("A");
fakeConsoleHost.AddFakeProject("B"); AddFakeProject("B");
RunCmdlet(); RunCmdlet();
var expectedProjects = fakeConsoleHost.FakeOpenProjects; var expectedProjects = fakeSolution.FakeMSBuildProjects;
var projects = fakeCommandRuntime.FirstObjectPassedToWriteObject as IEnumerable<Project>; var projects = fakeCommandRuntime.FirstObjectPassedToWriteObject as IEnumerable<Project>;
ProjectCollectionAssertAreEqual(expectedProjects, projects); ProjectCollectionAssertAreEqual(expectedProjects, projects);
@ -104,8 +116,8 @@ namespace PackageManagement.Cmdlets.Tests
CreateCmdlet(); CreateCmdlet();
EnableAllParameter(); EnableAllParameter();
fakeConsoleHost.AddFakeProject("A"); AddFakeProject("A");
fakeConsoleHost.AddFakeProject("B"); AddFakeProject("B");
RunCmdlet(); RunCmdlet();
@ -120,8 +132,8 @@ namespace PackageManagement.Cmdlets.Tests
CreateCmdlet(); CreateCmdlet();
cmdlet.Name = new string[] { "B" }; cmdlet.Name = new string[] { "B" };
fakeConsoleHost.AddFakeProject("A"); AddFakeProject("A");
var projectB = fakeConsoleHost.AddFakeProject("B"); var projectB = AddFakeProject("B");
RunCmdlet(); RunCmdlet();
@ -139,8 +151,8 @@ namespace PackageManagement.Cmdlets.Tests
CreateCmdlet(); CreateCmdlet();
cmdlet.Name = new string[] { "b" }; cmdlet.Name = new string[] { "b" };
fakeConsoleHost.AddFakeProject("A"); AddFakeProject("A");
var projectB = fakeConsoleHost.AddFakeProject("B"); var projectB = AddFakeProject("B");
RunCmdlet(); RunCmdlet();
@ -158,9 +170,9 @@ namespace PackageManagement.Cmdlets.Tests
CreateCmdlet(); CreateCmdlet();
cmdlet.Name = new string[] { "B", "C" }; cmdlet.Name = new string[] { "B", "C" };
fakeConsoleHost.AddFakeProject("A"); AddFakeProject("A");
var projectB = fakeConsoleHost.AddFakeProject("B"); var projectB = AddFakeProject("B");
var projectC = fakeConsoleHost.AddFakeProject("C"); var projectC = AddFakeProject("C");
RunCmdlet(); RunCmdlet();
@ -179,9 +191,9 @@ namespace PackageManagement.Cmdlets.Tests
CreateCmdlet(); CreateCmdlet();
cmdlet.Name = new string[] { "B", "C" }; cmdlet.Name = new string[] { "B", "C" };
fakeConsoleHost.AddFakeProject("A"); AddFakeProject("A");
var projectB = fakeConsoleHost.AddFakeProject("B"); var projectB = AddFakeProject("B");
var projectC = fakeConsoleHost.AddFakeProject("C"); var projectC = AddFakeProject("C");
RunCmdlet(); RunCmdlet();
@ -196,9 +208,9 @@ namespace PackageManagement.Cmdlets.Tests
CreateCmdlet(); CreateCmdlet();
cmdlet.Name = new string[] { "B*", "C*" }; cmdlet.Name = new string[] { "B*", "C*" };
fakeConsoleHost.AddFakeProject("A"); AddFakeProject("A");
var projectB = fakeConsoleHost.AddFakeProject("B"); var projectB = AddFakeProject("B");
var projectC = fakeConsoleHost.AddFakeProject("C"); var projectC = AddFakeProject("C");
RunCmdlet(); RunCmdlet();

7
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementSolution.cs

@ -60,5 +60,12 @@ namespace ICSharpCode.PackageManagement.Design
ProjectNamePassedToGetProject = projectName; ProjectNamePassedToGetProject = projectName;
return FakeProject; return FakeProject;
} }
public List<IProject> FakeMSBuildProjects = new List<IProject>();
public IEnumerable<IProject> GetMSBuildProjects()
{
return FakeMSBuildProjects;
}
} }
} }

1
src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementSolution.cs

@ -14,5 +14,6 @@ namespace ICSharpCode.PackageManagement
IPackageManagementProject GetActiveProject(IPackageRepository sourceRepository); IPackageManagementProject GetActiveProject(IPackageRepository sourceRepository);
IPackageManagementProject GetProject(PackageSource source, string projectName); IPackageManagementProject GetProject(PackageSource source, string projectName);
IPackageManagementProject GetProject(IPackageRepository sourceRepository, string projectName); IPackageManagementProject GetProject(IPackageRepository sourceRepository, string projectName);
IEnumerable<IProject> GetMSBuildProjects();
} }
} }

5
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSolution.cs

@ -102,5 +102,10 @@ namespace ICSharpCode.PackageManagement
MSBuildBasedProject msbuildProject = GetMSBuildProject(projectName); MSBuildBasedProject msbuildProject = GetMSBuildProject(projectName);
return CreateProject(sourceRepository, msbuildProject); return CreateProject(sourceRepository, msbuildProject);
} }
public IEnumerable<IProject> GetMSBuildProjects()
{
return projectService.GetOpenProjects();
}
} }
} }

1
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementViewModels.cs

@ -110,6 +110,7 @@ namespace ICSharpCode.PackageManagement
packageManagementConsoleViewModel = packageManagementConsoleViewModel =
new PackageManagementConsoleViewModel( new PackageManagementConsoleViewModel(
registeredPackageRepositories.PackageSources, registeredPackageRepositories.PackageSources,
PackageManagementServices.ProjectService,
consoleHost); consoleHost);
} }
} }

4
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageManagementConsoleHost.cs

@ -15,9 +15,7 @@ namespace ICSharpCode.PackageManagement.Scripting
IProject DefaultProject { get; set; } IProject DefaultProject { get; set; }
PackageSource ActivePackageSource { get; set; } PackageSource ActivePackageSource { get; set; }
IScriptingConsole ScriptingConsole { get; set; } IScriptingConsole ScriptingConsole { get; set; }
IPackageManagementProjectService ProjectService { get; } IPackageManagementSolution Solution { get; }
IEnumerable<IProject> GetOpenProjects();
void Clear(); void Clear();
void Run(); void Run();

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

@ -15,10 +15,8 @@ namespace ICSharpCode.PackageManagement.Scripting
public class PackageManagementConsoleHost : IPackageManagementConsoleHost public class PackageManagementConsoleHost : IPackageManagementConsoleHost
{ {
IThread thread; IThread thread;
IPackageManagementSolution solution;
IRegisteredPackageRepositories registeredRepositories; IRegisteredPackageRepositories registeredRepositories;
IPowerShellHostFactory powerShellHostFactory; IPowerShellHostFactory powerShellHostFactory;
IPackageManagementProjectService projectService;
IPowerShellHost powerShellHost; IPowerShellHost powerShellHost;
IPackageManagementAddInPath addinPath; IPackageManagementAddInPath addinPath;
int autoIndentSize = 0; int autoIndentSize = 0;
@ -28,13 +26,11 @@ namespace ICSharpCode.PackageManagement.Scripting
IPackageManagementSolution solution, IPackageManagementSolution solution,
IRegisteredPackageRepositories registeredRepositories, IRegisteredPackageRepositories registeredRepositories,
IPowerShellHostFactory powerShellHostFactory, IPowerShellHostFactory powerShellHostFactory,
IPackageManagementProjectService projectService,
IPackageManagementAddInPath addinPath) IPackageManagementAddInPath addinPath)
{ {
this.solution = solution; this.Solution = solution;
this.registeredRepositories = registeredRepositories; this.registeredRepositories = registeredRepositories;
this.powerShellHostFactory = powerShellHostFactory; this.powerShellHostFactory = powerShellHostFactory;
this.projectService = projectService;
this.addinPath = addinPath; this.addinPath = addinPath;
} }
@ -45,7 +41,6 @@ namespace ICSharpCode.PackageManagement.Scripting
solution, solution,
registeredRepositories, registeredRepositories,
new PowerShellHostFactory(), new PowerShellHostFactory(),
new PackageManagementProjectService(),
new PackageManagementAddInPath()) new PackageManagementAddInPath())
{ {
} }
@ -58,10 +53,7 @@ namespace ICSharpCode.PackageManagement.Scripting
} }
public IScriptingConsole ScriptingConsole { get; set; } public IScriptingConsole ScriptingConsole { get; set; }
public IPackageManagementSolution Solution { get; private set; }
public IPackageManagementProjectService ProjectService {
get { return projectService; }
}
public void Dispose() public void Dispose()
{ {
@ -185,7 +177,7 @@ namespace ICSharpCode.PackageManagement.Scripting
PackageSource source = GetActivePackageSource(packageSource); PackageSource source = GetActivePackageSource(packageSource);
projectName = GetActiveProjectName(projectName); projectName = GetActiveProjectName(projectName);
return solution.GetProject(source, projectName); return Solution.GetProject(source, projectName);
} }
public PackageSource GetActivePackageSource(string source) public PackageSource GetActivePackageSource(string source)
@ -207,12 +199,7 @@ namespace ICSharpCode.PackageManagement.Scripting
public IPackageManagementProject GetProject(IPackageRepository sourceRepository, string projectName) public IPackageManagementProject GetProject(IPackageRepository sourceRepository, string projectName)
{ {
projectName = GetActiveProjectName(projectName); projectName = GetActiveProjectName(projectName);
return solution.GetProject(sourceRepository, projectName); return Solution.GetProject(sourceRepository, projectName);
}
public IEnumerable<IProject> GetOpenProjects()
{
return projectService.GetOpenProjects();
} }
} }
} }

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

@ -32,10 +32,11 @@ namespace ICSharpCode.PackageManagement.Scripting
public PackageManagementConsoleViewModel( public PackageManagementConsoleViewModel(
RegisteredPackageSources registeredPackageSources, RegisteredPackageSources registeredPackageSources,
IPackageManagementProjectService projectService,
IPackageManagementConsoleHost consoleHost) IPackageManagementConsoleHost consoleHost)
{ {
this.registeredPackageSources = registeredPackageSources; this.registeredPackageSources = registeredPackageSources;
this.projectService = consoleHost.ProjectService; this.projectService = projectService;
this.consoleHost = consoleHost; this.consoleHost = consoleHost;
Init(); Init();

26
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackageManagementConsoleHost.cs

@ -19,6 +19,12 @@ namespace PackageManagement.Tests.Helpers
public PackageSource ActivePackageSource { get; set; } public PackageSource ActivePackageSource { get; set; }
public IScriptingConsole ScriptingConsole { get; set; } public IScriptingConsole ScriptingConsole { get; set; }
public IPackageManagementSolution Solution {
get { return FakeSolution; }
}
public FakePackageManagementSolution FakeSolution = new FakePackageManagementSolution();
public bool IsDisposeCalled; public bool IsDisposeCalled;
public bool IsClearCalled; public bool IsClearCalled;
public bool IsRunCalled; public bool IsRunCalled;
@ -53,11 +59,7 @@ namespace PackageManagement.Tests.Helpers
} }
public FakePackageManagementProjectService FakeProjectService = new FakePackageManagementProjectService(); public FakePackageManagementProjectService FakeProjectService = new FakePackageManagementProjectService();
public IPackageManagementProjectService ProjectService {
get { return FakeProjectService; }
}
public string PackageSourcePassedToGetProject; public string PackageSourcePassedToGetProject;
public string ProjectNamePassedToGetProject; public string ProjectNamePassedToGetProject;
public FakePackageManagementProject FakeProject = new FakePackageManagementProject(); public FakePackageManagementProject FakeProject = new FakePackageManagementProject();
@ -86,19 +88,5 @@ namespace PackageManagement.Tests.Helpers
PackageSourcePassedToGetActivePackageSource = source; PackageSourcePassedToGetActivePackageSource = source;
return PackageSourceToReturnFromGetActivePackageSource; return PackageSourceToReturnFromGetActivePackageSource;
} }
public List<TestableProject> FakeOpenProjects = new List<TestableProject>();
public TestableProject AddFakeProject(string name)
{
var project = ProjectHelper.CreateTestProject(name);
FakeOpenProjects.Add(project);
return project;
}
public IEnumerable<IProject> GetOpenProjects()
{
return FakeOpenProjects;
}
} }
} }

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

@ -16,7 +16,6 @@ namespace PackageManagement.Tests.Helpers
public ThreadStart ThreadStartPassedToCreateThread; public ThreadStart ThreadStartPassedToCreateThread;
public FakePowerShellHostFactory FakePowerShellHostFactory; public FakePowerShellHostFactory FakePowerShellHostFactory;
public FakePackageManagementAddInPath FakePackageManagementAddInPath; public FakePackageManagementAddInPath FakePackageManagementAddInPath;
public FakePackageManagementProjectService FakeProjectService;
public FakePackageManagementSolution FakeSolution; public FakePackageManagementSolution FakeSolution;
public FakeRegisteredPackageRepositories FakeRegisteredPackageRepositories; public FakeRegisteredPackageRepositories FakeRegisteredPackageRepositories;
@ -26,7 +25,6 @@ namespace PackageManagement.Tests.Helpers
new FakeRegisteredPackageRepositories(), new FakeRegisteredPackageRepositories(),
new FakeScriptingConsoleWithLinesToRead(), new FakeScriptingConsoleWithLinesToRead(),
new FakePowerShellHostFactory(), new FakePowerShellHostFactory(),
new FakePackageManagementProjectService(),
new FakePackageManagementAddInPath()) new FakePackageManagementAddInPath())
{ {
} }
@ -36,15 +34,13 @@ namespace PackageManagement.Tests.Helpers
FakeRegisteredPackageRepositories registeredPackageRepositories, FakeRegisteredPackageRepositories registeredPackageRepositories,
FakeScriptingConsoleWithLinesToRead scriptingConsole, FakeScriptingConsoleWithLinesToRead scriptingConsole,
FakePowerShellHostFactory powerShellHostFactory, FakePowerShellHostFactory powerShellHostFactory,
FakePackageManagementProjectService projectService,
FakePackageManagementAddInPath addinPath) FakePackageManagementAddInPath addinPath)
: base(solution, registeredPackageRepositories, powerShellHostFactory, projectService, addinPath) : base(solution, registeredPackageRepositories, powerShellHostFactory, 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.FakeRegisteredPackageRepositories = registeredPackageRepositories; this.FakeRegisteredPackageRepositories = registeredPackageRepositories;
this.FakePackageManagementAddInPath = addinPath; this.FakePackageManagementAddInPath = addinPath;
} }

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

@ -4,6 +4,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using ICSharpCode.PackageManagement; using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.Scripting; using ICSharpCode.PackageManagement.Scripting;
using ICSharpCode.Scripting; using ICSharpCode.Scripting;
using ICSharpCode.Scripting.Tests.Utils; using ICSharpCode.Scripting.Tests.Utils;
@ -17,6 +18,7 @@ namespace PackageManagement.Tests.Helpers
new PackageManagementConsole(new FakeScriptingConsole(), new FakeControlDispatcher()); new PackageManagementConsole(new FakeScriptingConsole(), new FakeControlDispatcher());
public RegisteredPackageSources RegisteredPackageSources; public RegisteredPackageSources RegisteredPackageSources;
public FakePackageManagementProjectService FakeProjectService;
public TestablePackageManagementConsoleViewModel(IPackageManagementConsoleHost consoleHost) public TestablePackageManagementConsoleViewModel(IPackageManagementConsoleHost consoleHost)
: this(new RegisteredPackageSources(new PackageSource[0]), consoleHost) : this(new RegisteredPackageSources(new PackageSource[0]), consoleHost)
@ -26,16 +28,25 @@ namespace PackageManagement.Tests.Helpers
public TestablePackageManagementConsoleViewModel( public TestablePackageManagementConsoleViewModel(
IEnumerable<PackageSource> packageSources, IEnumerable<PackageSource> packageSources,
IPackageManagementConsoleHost consoleHost) IPackageManagementConsoleHost consoleHost)
: this(new RegisteredPackageSources(packageSources), consoleHost) : this(new RegisteredPackageSources(packageSources), consoleHost, new FakePackageManagementProjectService())
{
}
public TestablePackageManagementConsoleViewModel(
IPackageManagementConsoleHost consoleHost,
FakePackageManagementProjectService projectService)
: this(new RegisteredPackageSources(new PackageSource[0]), consoleHost, projectService)
{ {
} }
public TestablePackageManagementConsoleViewModel( public TestablePackageManagementConsoleViewModel(
RegisteredPackageSources registeredPackageSources, RegisteredPackageSources registeredPackageSources,
IPackageManagementConsoleHost consoleHost) IPackageManagementConsoleHost consoleHost,
: base(registeredPackageSources, consoleHost) FakePackageManagementProjectService projectService)
: base(registeredPackageSources, projectService, consoleHost)
{ {
this.RegisteredPackageSources = registeredPackageSources; this.RegisteredPackageSources = registeredPackageSources;
this.FakeProjectService = projectService;
} }
protected override PackageManagementConsole CreateConsole() protected override PackageManagementConsole CreateConsole()

13
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSolutionTests.cs

@ -242,5 +242,18 @@ namespace PackageManagement.Tests
Assert.AreEqual(expectedRepository, actualRepository); Assert.AreEqual(expectedRepository, actualRepository);
} }
[Test]
public void GetMSBuildProjects_TwoProjectsInOpenSolution_ReturnsTwoProjects()
{
CreateSolution();
AddProjectToOpenProjects("A");
AddProjectToOpenProjects("B");
var projects = solution.GetMSBuildProjects();
var expectedProjects = fakeProjectService.FakeOpenProjects;
CollectionAssert.AreEqual(expectedProjects, projects);
}
} }
} }

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

@ -19,7 +19,6 @@ namespace PackageManagement.Tests.Scripting
FakeScriptingConsoleWithLinesToRead scriptingConsole; FakeScriptingConsoleWithLinesToRead scriptingConsole;
FakePowerShellHost powerShellHost; FakePowerShellHost powerShellHost;
FakePackageManagementSolution fakeSolution; FakePackageManagementSolution fakeSolution;
FakePackageManagementProjectService fakeProjectService;
FakeRegisteredPackageRepositories fakeRegisteredPackageRepositories; FakeRegisteredPackageRepositories fakeRegisteredPackageRepositories;
void CreateHost() void CreateHost()
@ -28,7 +27,6 @@ namespace PackageManagement.Tests.Scripting
fakeSolution = host.FakeSolution; fakeSolution = host.FakeSolution;
scriptingConsole = host.FakeScriptingConsole; scriptingConsole = host.FakeScriptingConsole;
powerShellHost = host.FakePowerShellHostFactory.FakePowerShellHost; powerShellHost = host.FakePowerShellHostFactory.FakePowerShellHost;
fakeProjectService = host.FakeProjectService;
fakeRegisteredPackageRepositories = host.FakeRegisteredPackageRepositories; fakeRegisteredPackageRepositories = host.FakeRegisteredPackageRepositories;
} }
@ -38,13 +36,6 @@ namespace PackageManagement.Tests.Scripting
host.ThreadStartPassedToCreateThread.Invoke(); host.ThreadStartPassedToCreateThread.Invoke();
} }
TestableProject AddProject(string name)
{
var project = ProjectHelper.CreateTestProject(name);
fakeProjectService.AddFakeProject(project);
return project;
}
[Test] [Test]
public void Dispose_ScriptingConsoleIsNotNull_ScriptingConsoleIsDisposed() public void Dispose_ScriptingConsoleIsNotNull_ScriptingConsoleIsDisposed()
{ {
@ -380,19 +371,6 @@ namespace PackageManagement.Tests.Scripting
Assert.AreEqual("MyProject", projectName); Assert.AreEqual("MyProject", projectName);
} }
[Test]
public void GetOpenProjects_TwoProjectsInOpenSolution_ReturnsTwoProjects()
{
CreateHost();
fakeProjectService.AddFakeProject(ProjectHelper.CreateTestProject("A"));
fakeProjectService.AddFakeProject(ProjectHelper.CreateTestProject("B"));
var projects = host.GetOpenProjects();
var expectedProjects = fakeProjectService.FakeOpenProjects;
CollectionAssert.AreEqual(expectedProjects, projects);
}
[Test] [Test]
public void ActivePackageSource_ConsoleHostCreated_ReturnsRegisteredPackageSourcesActivePackageSource() public void ActivePackageSource_ConsoleHostCreated_ReturnsRegisteredPackageSourcesActivePackageSource()
{ {

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

@ -25,7 +25,6 @@ namespace PackageManagement.Tests.Scripting
void CreateConsoleHost() void CreateConsoleHost()
{ {
consoleHost = new FakePackageManagementConsoleHost(); consoleHost = new FakePackageManagementConsoleHost();
projectService = consoleHost.FakeProjectService;
} }
void CreateViewModel() void CreateViewModel()
@ -37,11 +36,18 @@ namespace PackageManagement.Tests.Scripting
void CreateViewModel(IPackageManagementConsoleHost consoleHost) void CreateViewModel(IPackageManagementConsoleHost consoleHost)
{ {
viewModel = new TestablePackageManagementConsoleViewModel(consoleHost); viewModel = new TestablePackageManagementConsoleViewModel(consoleHost);
projectService = viewModel.FakeProjectService;
} }
void CreateViewModel(IEnumerable<PackageSource> packageSources, IPackageManagementConsoleHost consoleHost) void CreateViewModel(IEnumerable<PackageSource> packageSources, IPackageManagementConsoleHost consoleHost)
{ {
viewModel = new TestablePackageManagementConsoleViewModel(packageSources, consoleHost); viewModel = new TestablePackageManagementConsoleViewModel(packageSources, consoleHost);
projectService = viewModel.FakeProjectService;
}
void CreateViewModel(IPackageManagementConsoleHost consoleHost, FakePackageManagementProjectService projectService)
{
viewModel = new TestablePackageManagementConsoleViewModel(consoleHost, projectService);
} }
void CreateViewModelWithOneRegisteredPackageSource() void CreateViewModelWithOneRegisteredPackageSource()
@ -80,8 +86,9 @@ namespace PackageManagement.Tests.Scripting
{ {
CreateConsoleHost(); CreateConsoleHost();
Solution solution = CreateSolutionWithOneProject(); Solution solution = CreateSolutionWithOneProject();
projectService = new FakePackageManagementProjectService();
projectService.OpenSolution = solution; projectService.OpenSolution = solution;
CreateViewModel(consoleHost); CreateViewModel(consoleHost, projectService);
return solution; return solution;
} }
@ -126,18 +133,13 @@ namespace PackageManagement.Tests.Scripting
viewModel.PropertyChanged += (sender, e) => propertiesChanged.Add(e.PropertyName); viewModel.PropertyChanged += (sender, e) => propertiesChanged.Add(e.PropertyName);
} }
Solution CreateConsoleHostWithEmptySolutionOpen() Solution CreateViewModelWithEmptySolutionOpen()
{ {
CreateConsoleHost(); CreateConsoleHost();
var solution = new Solution(); var solution = new Solution();
projectService = new FakePackageManagementProjectService();
projectService.OpenSolution = solution; projectService.OpenSolution = solution;
return solution; CreateViewModel(consoleHost, projectService);
}
Solution CreateViewModelWithEmptySolutionOpen()
{
var solution = CreateConsoleHostWithEmptySolutionOpen();
CreateViewModel(consoleHost);
return solution; return solution;
} }
@ -293,10 +295,14 @@ namespace PackageManagement.Tests.Scripting
} }
[Test] [Test]
public void Constructor_EmptySolutionOpenWhenConsoleCreated_DoesNotThrowException() public void Constructor_EmptySolutionOpenWhenConsoleViewModelCreated_DoesNotThrowException()
{ {
CreateConsoleHostWithEmptySolutionOpen(); CreateConsoleHost();
Assert.DoesNotThrow(() => CreateViewModel(consoleHost)); projectService = new FakePackageManagementProjectService();
var solution = new Solution();
projectService.OpenSolution = solution;
Assert.DoesNotThrow(() => CreateViewModel(consoleHost, projectService));
} }
[Test] [Test]

Loading…
Cancel
Save