From 0b4e6b3ae323bf9f54ca211a5185166343468080 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Mon, 18 Jul 2011 21:55:03 +0100 Subject: [PATCH] Fix Manage button not being enabled in Manage Packages dialog after installing packages into solution which initially had no NuGet packages. --- .../Src/PackageManagementSelectedProjects.cs | 10 +- .../Src/Helpers/TestablePackageViewModel.cs | 1 - .../TestableUpdatedPackageViewModel.cs | 6 - .../PackageManagementSelectedProjectsTests.cs | 108 +++++++++++++----- .../Test/Src/PackageViewModelTests.cs | 21 +++- ...lectedProjectsForInstalledPackagesTests.cs | 14 ++- .../Test/Src/UpdatedPackageViewModelTests.cs | 19 ++- 7 files changed, 132 insertions(+), 47 deletions(-) diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSelectedProjects.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSelectedProjects.cs index 2fadb967fc..e58d69b98d 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSelectedProjects.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSelectedProjects.cs @@ -20,6 +20,7 @@ namespace ICSharpCode.PackageManagement public PackageManagementSelectedProjects(IPackageManagementSolution solution) { this.solution = solution; + GetHasSingleProjectSelected(); } public IEnumerable GetProjects(IPackageFromRepository package) @@ -36,12 +37,17 @@ namespace ICSharpCode.PackageManagement public bool HasSingleProjectSelected() { if (!singleProjectSelected.HasValue) { - singleMSBuildProjectSelected = solution.GetActiveMSBuildProject(); - singleProjectSelected = singleMSBuildProjectSelected != null; + GetHasSingleProjectSelected(); } return singleProjectSelected.Value; } + void GetHasSingleProjectSelected() + { + singleMSBuildProjectSelected = solution.GetActiveMSBuildProject(); + singleProjectSelected = singleMSBuildProjectSelected != null; + } + IEnumerable GetOpenProjects() { return solution.GetMSBuildProjects(); diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs index e7ab57aeda..dcb344338f 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs @@ -25,7 +25,6 @@ namespace PackageManagement.Tests.Helpers new FakeLogger()) { this.FakeSolution = solution; - solution.FakeActiveMSBuildProject = ProjectHelper.CreateTestProject(); } public TestablePackageViewModel( diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs index 1648310a62..5b9ecc8f4b 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs @@ -18,11 +18,6 @@ namespace PackageManagement.Tests.Helpers public ILogger LoggerUsedWhenCreatingPackageResolver; public FakePackageActionRunner FakeActionRunner; - public TestableUpdatedPackageViewModel() - : this(new FakePackageManagementSolution()) - { - } - public TestableUpdatedPackageViewModel(FakePackageManagementSolution solution) : this( new FakePackage(), @@ -32,7 +27,6 @@ namespace PackageManagement.Tests.Helpers new FakeLogger()) { this.FakeSolution = solution; - solution.FakeActiveMSBuildProject = ProjectHelper.CreateTestProject("MyProject"); } public TestableUpdatedPackageViewModel( diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSelectedProjectsTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSelectedProjectsTests.cs index 34c5c105d0..c24a03d3cd 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSelectedProjectsTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSelectedProjectsTests.cs @@ -22,9 +22,13 @@ namespace PackageManagement.Tests void CreateSelectedProjects() { - fakeSolution = new FakePackageManagementSolution(); selectedProjects = new PackageManagementSelectedProjects(fakeSolution); } + + void CreateFakeSolution() + { + fakeSolution = new FakePackageManagementSolution(); + } List AddSolutionWithOneProjectToProjectService() { @@ -56,13 +60,14 @@ namespace PackageManagement.Tests [Test] public void GetProjects_SolutionHasTwoProjectsAndOneProjectSelectedInProjectsBrowser_ReturnsProjectSelectedInProjects() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); IProject project = projectsAddedToSolution[1]; project.Name = "MyProject"; fakeSolution.FakeActiveMSBuildProject = project; var fakeProject = fakeSolution.AddFakeProjectToReturnFromGetProject("MyProject"); + CreateSelectedProjects(); var fakePackage = new FakePackage(); var projects = new List(); @@ -78,13 +83,14 @@ namespace PackageManagement.Tests [Test] public void GetProjects_SolutionHasTwoProjectsAndOneProjectSelectedInitiallyAndGetProjectsCalledAgainAfterNoProjectsAreSelected_ReturnsProjectSelectedInProjects() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); IProject project = projectsAddedToSolution[1]; project.Name = "MyProject"; fakeSolution.FakeActiveMSBuildProject = project; var fakeProject = fakeSolution.AddFakeProjectToReturnFromGetProject("MyProject"); + CreateSelectedProjects(); var fakePackage = new FakePackage(); var projects = new List(); @@ -105,10 +111,11 @@ namespace PackageManagement.Tests [Test] public void HasMultipleProjects_SolutionHasTwoProjectsAndOneProjectSelectedInProjectsBrowser_ReturnsFalse() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); IProject expectedProject = projectsAddedToSolution[1]; fakeSolution.FakeActiveMSBuildProject = expectedProject; + CreateSelectedProjects(); bool hasMultipleProjects = selectedProjects.HasMultipleProjects(); @@ -118,7 +125,7 @@ namespace PackageManagement.Tests [Test] public void GetProjects_SolutionHasTwoProjectsAndNoProjectSelectedInProjectsBrowser_ReturnsAllProjectsInSolutionForPackage() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); projectsAddedToSolution[0].Name = "Project A"; projectsAddedToSolution[1].Name = "Project B"; @@ -126,6 +133,7 @@ namespace PackageManagement.Tests fakeSolution.AddFakeProjectToReturnFromGetProject("Project A"); fakeSolution.AddFakeProjectToReturnFromGetProject("Project B"); + CreateSelectedProjects(); var fakePackage = new FakePackage(); var projects = new List(); @@ -141,9 +149,10 @@ namespace PackageManagement.Tests [Test] public void HasMultipleProjects_SolutionHasTwoProjectsAndNoProjectSelectedInProjectsBrowser_ReturnsTrue() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); fakeSolution.FakeActiveProject = null; + CreateSelectedProjects(); bool hasMultipleProjects = selectedProjects.HasMultipleProjects(); @@ -153,9 +162,10 @@ namespace PackageManagement.Tests [Test] public void HasMultipleProjects_SolutionHasOneProjectAndNoProjectSelectedInProjectsBrowser_ReturnsFalse() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithOneProjectToProjectService(); fakeSolution.FakeActiveProject = null; + CreateSelectedProjects(); bool hasMultipleProjects = selectedProjects.HasMultipleProjects(); @@ -165,10 +175,11 @@ namespace PackageManagement.Tests [Test] public void SelectionName_SolutionHasOneProject_ReturnsProjectNameWithoutFileExtension() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithOneProjectToProjectService(); projectsAddedToSolution[0].Name = "MyProject"; fakeSolution.FakeActiveMSBuildProject = projectsAddedToSolution[0]; + CreateSelectedProjects(); string name = selectedProjects.SelectionName; @@ -178,10 +189,11 @@ namespace PackageManagement.Tests [Test] public void SelectionName_SolutionHasTwoProjectsAndNoProjectSelected_ReturnsSolutionFileNameWithoutFullPath() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); NoProjectsSelected(); fakeSolution.FileName = @"d:\projects\MyProject\MySolution.sln"; + CreateSelectedProjects(); string name = selectedProjects.SelectionName; @@ -191,12 +203,13 @@ namespace PackageManagement.Tests [Test] public void IsPackageInstalled_PackageInstalledInSolutionWithTwoProjectsAndNoProjectSelected_ReturnsTrue() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); NoProjectsSelected(); var package = new FakePackage("Test"); fakeSolution.FakeInstalledPackages.Add(package); + CreateSelectedProjects(); bool installed = selectedProjects.IsPackageInstalled(package); @@ -206,9 +219,10 @@ namespace PackageManagement.Tests [Test] public void IsPackageInstalled_PackageIsInstalledInSolutionWithTwoProjectsAndNoProjectSelected_ReturnsFalse() { - CreateSelectedProjects(); + CreateFakeSolution(); AddSolutionWithTwoProjectsToProjectService(); NoProjectsSelected(); + CreateSelectedProjects(); var package = new FakePackage("Test"); bool installed = selectedProjects.IsPackageInstalled(package); @@ -219,12 +233,13 @@ namespace PackageManagement.Tests [Test] public void IsPackageInstalled_PackageIsInstalledInProjectAndProjectSelected_ReturnsTrue() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); fakeSolution.FakeActiveMSBuildProject = projectsAddedToSolution[0]; var package = new FakePackage("Test"); fakeSolution.FakeProjectToReturnFromGetProject.FakePackages.Add(package); + CreateSelectedProjects(); bool installed = selectedProjects.IsPackageInstalled(package); @@ -234,9 +249,10 @@ namespace PackageManagement.Tests [Test] public void IsPackageInstalled_PackageIsNotInstalledInProjectAndProjectSelected_ReturnsFalse() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); fakeSolution.FakeActiveMSBuildProject = projectsAddedToSolution[0]; + CreateSelectedProjects(); var package = new FakePackage("Test"); bool installed = selectedProjects.IsPackageInstalled(package); @@ -247,9 +263,10 @@ namespace PackageManagement.Tests [Test] public void IsPackageInstalled_PackagePackageIsNotInstalledInProjectAndProjectSelected_ProjectCreatedUsingPackageRepository() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); fakeSolution.FakeActiveMSBuildProject = projectsAddedToSolution[0]; + CreateSelectedProjects(); var package = new FakePackage("Test"); bool installed = selectedProjects.IsPackageInstalled(package); @@ -263,12 +280,13 @@ namespace PackageManagement.Tests [Test] public void IsPackageInstalledInSolution_PackageInstalledInSolutionWithTwoProjectsAndOneProjectSelected_ReturnsTrue() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); fakeSolution.FakeActiveMSBuildProject = projectsAddedToSolution[0]; var package = new FakePackage("Test"); fakeSolution.FakeInstalledPackages.Add(package); + CreateSelectedProjects(); bool installed = selectedProjects.IsPackageInstalledInSolution(package); @@ -278,9 +296,10 @@ namespace PackageManagement.Tests [Test] public void IsPackageInstalledInSolution_PackageNotInstalledInSolutionWithTwoProjectsAndOneProjectSelected_ReturnsFalse() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); fakeSolution.FakeActiveMSBuildProject = projectsAddedToSolution[0]; + CreateSelectedProjects(); var package = new FakePackage("Test"); @@ -292,12 +311,13 @@ namespace PackageManagement.Tests [Test] public void GetPackagesInstalledInSolution_PackageInstalledInSolutionAndProjectNotSelected_ReturnsPackageInstalledInSolution() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); NoProjectsSelected(); var package = new FakePackage("Test"); fakeSolution.FakeInstalledPackages.Add(package); + CreateSelectedProjects(); IQueryable packages = selectedProjects.GetPackagesInstalledInSolution(); @@ -311,9 +331,10 @@ namespace PackageManagement.Tests [Test] public void GetSingleProjectSelected_ProjectSelected_ReturnsProject() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); fakeSolution.FakeActiveMSBuildProject = projectsAddedToSolution[0]; + CreateSelectedProjects(); var repository = new FakePackageRepository(); IPackageManagementProject project = selectedProjects.GetSingleProjectSelected(repository); @@ -326,9 +347,10 @@ namespace PackageManagement.Tests [Test] public void GetSingleProjectSelected_ProjectSelectedAndRepositoryPassed_ReturnsProjectCreatedWithRepository() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); fakeSolution.FakeActiveMSBuildProject = projectsAddedToSolution[0]; + CreateSelectedProjects(); var repository = new FakePackageRepository(); IPackageManagementProject project = selectedProjects.GetSingleProjectSelected(repository); @@ -339,9 +361,10 @@ namespace PackageManagement.Tests [Test] public void GetSingleProjectSelected_NoProjectSelectedAndRepositoryPassed_ReturnsProjectCreatedWithRepository() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); fakeSolution.FakeActiveMSBuildProject = projectsAddedToSolution[0]; + CreateSelectedProjects(); var repository = new FakePackageRepository(); IPackageManagementProject project = selectedProjects.GetSingleProjectSelected(repository); @@ -352,10 +375,11 @@ namespace PackageManagement.Tests [Test] public void HasSingleProjectSelected_SolutionHasTwoProjectsAndOneProjectSelectedInProjectsBrowser_ReturnsTrue() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); IProject expectedProject = projectsAddedToSolution[1]; fakeSolution.FakeActiveMSBuildProject = expectedProject; + CreateSelectedProjects(); bool singleProjectSelected = selectedProjects.HasSingleProjectSelected(); @@ -365,9 +389,10 @@ namespace PackageManagement.Tests [Test] public void HasSingleProjectSelected_SolutionHasTwoProjectsAndNoProjectsSelectedInProjectsBrowser_ReturnsFalse() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); NoProjectsSelected(); + CreateSelectedProjects(); bool singleProjectSelected = selectedProjects.HasSingleProjectSelected(); @@ -377,9 +402,10 @@ namespace PackageManagement.Tests [Test] public void HasSingleProjectSelected_NoProjectsInitiallySelectedAndProjectSelectedAfterInitialCall_IsUnchangedAndReturnsFalse() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); NoProjectsSelected(); + CreateSelectedProjects(); bool singleProjectSelected = selectedProjects.HasSingleProjectSelected(); fakeSolution.FakeActiveMSBuildProject = fakeSolution.FakeMSBuildProjects[0]; @@ -391,12 +417,13 @@ namespace PackageManagement.Tests [Test] public void GetInstalledPackages_PackageInstalledInSolutionAndProjectNotSelected_ReturnsPackageInstalledInSolution() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); NoProjectsSelected(); var package = new FakePackage("Test"); fakeSolution.FakeInstalledPackages.Add(package); + CreateSelectedProjects(); var repository = new FakePackageRepository(); IQueryable packages = selectedProjects.GetInstalledPackages(repository); @@ -411,7 +438,7 @@ namespace PackageManagement.Tests [Test] public void GetInstalledPackages_PackageInstalledInProjectAndProjectIsSelected_ReturnsPackageInstalledInProject() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); fakeSolution.FakeActiveMSBuildProject = projectsAddedToSolution[0]; fakeSolution.FakeActiveMSBuildProject.Name = "MyProject"; @@ -420,6 +447,7 @@ namespace PackageManagement.Tests var project = new FakePackageManagementProject("MyProject"); project.FakePackages.Add(package); fakeSolution.FakeProjectsToReturnFromGetProject.Add("MyProject", project); + CreateSelectedProjects(); var repository = new FakePackageRepository(); IQueryable packages = selectedProjects.GetInstalledPackages(repository); @@ -434,9 +462,10 @@ namespace PackageManagement.Tests [Test] public void GetInstalledPackages_PackageInstalledInProjectAndProjectIsSelected_CreatesProjectUsingRepository() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); fakeSolution.FakeActiveMSBuildProject = projectsAddedToSolution[0]; + CreateSelectedProjects(); var expectedRepository = new FakePackageRepository(); IQueryable packages = selectedProjects.GetInstalledPackages(expectedRepository); @@ -449,14 +478,39 @@ namespace PackageManagement.Tests [Test] public void GetSingleProjectSelected_NoProjectSelected_ReturnsNull() { - CreateSelectedProjects(); + CreateFakeSolution(); AddSolutionWithTwoProjectsToProjectService(); NoProjectsSelected(); + CreateSelectedProjects(); var repository = new FakePackageRepository(); IPackageManagementProject project = selectedProjects.GetSingleProjectSelected(repository); Assert.IsNull(project); } + + [Test] + public void GetProjects_SolutionHasTwoProjectsAndOneProjectSelectedInitiallyAndActiveProjectChangedInSolutionAfterInstanceCreated_ReturnsProjectSelectedInProjects() + { + CreateFakeSolution(); + List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); + IProject project = projectsAddedToSolution[1]; + project.Name = "MyProject"; + fakeSolution.FakeActiveMSBuildProject = project; + var fakeProject = fakeSolution.AddFakeProjectToReturnFromGetProject("MyProject"); + CreateSelectedProjects(); + + NoProjectsSelected(); + + var fakePackage = new FakePackage(); + var projects = new List(); + projects.AddRange(selectedProjects.GetProjects(fakePackage)); + + var expectedProject = new FakeSelectedProject("MyProject"); + var expectedProjects = new List(); + expectedProjects.Add(expectedProject); + + SelectedProjectCollectionAssert.AreEqual(expectedProjects, projects); + } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs index 30bfe65aa4..29534934e9 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs @@ -28,15 +28,22 @@ namespace PackageManagement.Tests FakePackageActionRunner fakeActionRunner; List fakeSelectedProjects; - void CreateViewModel() + void CreateFakeSolution() { fakeSolution = new FakePackageManagementSolution(); + fakeSolution.FakeActiveMSBuildProject = ProjectHelper.CreateTestProject(); + } + + void CreateViewModel() + { + CreateFakeSolution(); CreateViewModel(fakeSolution); } void CreateViewModelWithExceptionThrowingSolution() { exceptionThrowingSolution = new ExceptionThrowingPackageManagementSolution(); + exceptionThrowingSolution.FakeActiveMSBuildProject = ProjectHelper.CreateTestProject(); CreateViewModel(exceptionThrowingSolution); } @@ -67,8 +74,9 @@ namespace PackageManagement.Tests void CreateViewModelWithTwoProjectsSelected(string projectName1, string projectName2) { - CreateViewModel(); + CreateFakeSolution(); AddTwoProjectsSelected(projectName1, projectName2); + CreateViewModel(fakeSolution); } void AddTwoProjectsSelected(string projectName1, string projectName2) @@ -707,10 +715,11 @@ namespace PackageManagement.Tests [Test] public void IsAdded_SolutionSelectedContainingOneProjectAndPackageIsInstalledInSolutionSharedRepository_ReturnsTrue() { - CreateViewModel(); + CreateFakeSolution(); AddProjectToSolution(); fakeSolution.NoProjectsSelected(); fakeSolution.FakeInstalledPackages.Add(fakePackage); + CreateViewModel(fakeSolution); bool added = viewModel.IsAdded; @@ -732,10 +741,11 @@ namespace PackageManagement.Tests [Test] public void IsManaged_SolutionSelectedContainingTwoProjects_ReturnsTrue() { - CreateViewModel(); + CreateFakeSolution(); AddProjectToSolution(); AddProjectToSolution(); fakeSolution.NoProjectsSelected(); + CreateViewModel(fakeSolution); bool managed = viewModel.IsManaged; @@ -745,9 +755,10 @@ namespace PackageManagement.Tests [Test] public void IsManaged_SolutionWithOneProjectSelected_ReturnsFalse() { - CreateViewModel(); + CreateFakeSolution(); AddProjectToSolution(); fakeSolution.FakeActiveMSBuildProject = fakeSolution.FakeMSBuildProjects[0]; + CreateViewModel(fakeSolution); bool managed = viewModel.IsManaged; diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/SelectedProjectsForInstalledPackagesTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/SelectedProjectsForInstalledPackagesTests.cs index b32b2abf55..0943691f89 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/SelectedProjectsForInstalledPackagesTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/SelectedProjectsForInstalledPackagesTests.cs @@ -16,10 +16,14 @@ namespace PackageManagement.Tests { SelectedProjectsForInstalledPackages selectedProjects; FakePackageManagementSolution fakeSolution; + + void CreateFakeSolution() + { + fakeSolution = new FakePackageManagementSolution(); + } void CreateSelectedProjects() { - fakeSolution = new FakePackageManagementSolution(); selectedProjects = new SelectedProjectsForInstalledPackages(fakeSolution); } @@ -40,7 +44,7 @@ namespace PackageManagement.Tests [Test] public void GetProjects_SolutionHasTwoProjectsAndOneProjectSelectedInProjectsBrowserAndPackageIsInstalledInProject_ReturnsProjectAndIsSelectedIsTrue() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); projectsAddedToSolution[0].Name = "Aaa"; IProject msbuildProject = projectsAddedToSolution[1]; @@ -52,6 +56,8 @@ namespace PackageManagement.Tests fakeProject.FakePackages.Add(fakePackage); fakeSolution.AddFakeProjectToReturnFromGetProject("Aaa"); + CreateSelectedProjects(); + var projects = new List(); projects.AddRange(selectedProjects.GetProjects(fakePackage)); @@ -67,7 +73,7 @@ namespace PackageManagement.Tests [Test] public void GetProjects_SolutionHasTwoProjectsAndNoProjectSelectedInProjectsBrowserAndPackageIsInstalledInFirstProject_ReturnsAllProjectsInSolutionWithIsSelectedIsTrue() { - CreateSelectedProjects(); + CreateFakeSolution(); List projectsAddedToSolution = AddSolutionWithTwoProjectsToProjectService(); projectsAddedToSolution[0].Name = "Project A"; projectsAddedToSolution[1].Name = "Project B"; @@ -78,6 +84,8 @@ namespace PackageManagement.Tests fakeProject.FakePackages.Add(fakePackage); fakeSolution.AddFakeProjectToReturnFromGetProject("Project B"); + CreateSelectedProjects(); + var projects = new List(); projects.AddRange(selectedProjects.GetProjects(fakePackage)); diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackageViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackageViewModelTests.cs index b46682100e..ff607e63aa 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackageViewModelTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackageViewModelTests.cs @@ -24,14 +24,25 @@ namespace PackageManagement.Tests void CreateViewModel() { - viewModel = new TestableUpdatedPackageViewModel(); - fakeSolution = viewModel.FakeSolution; + CreateFakeSolution(); + CreateViewModel(fakeSolution); + } + + void CreateViewModel(FakePackageManagementSolution fakeSolution) + { + viewModel = new TestableUpdatedPackageViewModel(fakeSolution); fakeProject = fakeSolution.FakeProjectToReturnFromGetProject; updatePackageAction = fakeProject.FakeUpdatePackageAction; fakeActionRunner = viewModel.FakeActionRunner; fakePackageManagementEvents = viewModel.FakePackageManagementEvents; } + void CreateFakeSolution() + { + fakeSolution = new FakePackageManagementSolution(); + fakeSolution.FakeActiveMSBuildProject = ProjectHelper.CreateTestProject("MyProject"); + } + void AddProjectToSolution() { TestableProject project = ProjectHelper.CreateTestProject(); @@ -40,7 +51,7 @@ namespace PackageManagement.Tests void CreateViewModelWithTwoProjectsSelected(string projectName1, string projectName2) { - CreateViewModel(); + CreateFakeSolution(); AddProjectToSolution(); AddProjectToSolution(); fakeSolution.FakeMSBuildProjects[0].Name = projectName1; @@ -49,6 +60,8 @@ namespace PackageManagement.Tests fakeSolution.AddFakeProjectToReturnFromGetProject(projectName1); fakeSolution.AddFakeProjectToReturnFromGetProject(projectName2); + + CreateViewModel(fakeSolution); } [Test]