You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
285 lines
8.9 KiB
285 lines
8.9 KiB
// 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.Collections.Generic; |
|
using System.Linq; |
|
|
|
using ICSharpCode.PackageManagement; |
|
using ICSharpCode.PackageManagement.Design; |
|
using ICSharpCode.SharpDevelop.Project; |
|
using NuGet; |
|
using NUnit.Framework; |
|
using PackageManagement.Tests.Helpers; |
|
|
|
namespace PackageManagement.Tests |
|
{ |
|
[TestFixture] |
|
public class PackageManagementSolutionTests |
|
{ |
|
PackageManagementSolution solution; |
|
FakeRegisteredPackageRepositories fakeRegisteredPackageRepositories; |
|
OneRegisteredPackageSourceHelper packageSourcesHelper; |
|
FakePackageManagementProjectService fakeProjectService; |
|
FakePackageManagementProjectFactory fakeProjectFactory; |
|
TestableProject testProject; |
|
|
|
void CreatePackageSources() |
|
{ |
|
packageSourcesHelper = new OneRegisteredPackageSourceHelper(); |
|
} |
|
|
|
void CreateSolution() |
|
{ |
|
CreatePackageSources(); |
|
CreateSolution(packageSourcesHelper.Options); |
|
} |
|
|
|
void CreateSolution(PackageManagementOptions options) |
|
{ |
|
testProject = ProjectHelper.CreateTestProject(); |
|
fakeRegisteredPackageRepositories = new FakeRegisteredPackageRepositories(); |
|
fakeProjectFactory = new FakePackageManagementProjectFactory(); |
|
fakeProjectService = new FakePackageManagementProjectService(); |
|
var packageManagementEvents = new FakePackageManagementEvents(); |
|
|
|
fakeProjectService.CurrentProject = testProject; |
|
solution = |
|
new PackageManagementSolution( |
|
fakeRegisteredPackageRepositories, |
|
packageManagementEvents, |
|
fakeProjectService, |
|
fakeProjectFactory); |
|
} |
|
|
|
TestableProject AddProjectToOpenProjects(string projectName) |
|
{ |
|
var project = ProjectHelper.CreateTestProject(projectName); |
|
fakeProjectService.OpenProjects.Add(project); |
|
return project; |
|
} |
|
|
|
[Test] |
|
public void GetActiveProject_ProjectIsSelected_CreatesProjectUsingCurrentProjectSelectedInSharpDevelop() |
|
{ |
|
CreateSolution(); |
|
|
|
IPackageManagementProject activeProject = solution.GetActiveProject(); |
|
IProject actualProject = fakeProjectFactory.ProjectPassedToCreateProject; |
|
|
|
Assert.AreEqual(testProject, actualProject); |
|
} |
|
|
|
[Test] |
|
public void GetActiveProject_ProjectIsSelected_CreatesProjectUsingCurrentActiveRepository() |
|
{ |
|
CreateSolution(); |
|
|
|
IPackageManagementProject activeProject = solution.GetActiveProject(); |
|
|
|
IPackageRepository repository = fakeProjectFactory.RepositoryPassedToCreateProject; |
|
IPackageRepository expectedRepository = fakeRegisteredPackageRepositories.ActiveRepository; |
|
|
|
Assert.AreEqual(expectedRepository, repository); |
|
} |
|
|
|
[Test] |
|
public void GetActiveProject_ProjectIsSelected_ReturnsProjectCreatedByFactory() |
|
{ |
|
CreateSolution(); |
|
|
|
IPackageManagementProject activeProject = solution.GetActiveProject(); |
|
IPackageManagementProject expectedProject = fakeProjectFactory.FakeProject; |
|
|
|
Assert.AreEqual(expectedProject, activeProject); |
|
} |
|
|
|
[Test] |
|
public void CreateProject_ProjectAndRepositoryPassed_ProjectUsedToCreateProject() |
|
{ |
|
CreateSolution(); |
|
var expectedProject = ProjectHelper.CreateTestProject(); |
|
var repository = new FakePackageRepository(); |
|
solution.CreateProject(repository, expectedProject); |
|
|
|
var actualProject = fakeProjectFactory.ProjectPassedToCreateProject; |
|
|
|
Assert.AreEqual(expectedProject, actualProject); |
|
} |
|
|
|
[Test] |
|
public void CreateProject_ProjectAndRepositoryPassed_CreatesProjectUsingRepository() |
|
{ |
|
CreateSolution(); |
|
var expectedRepository = new FakePackageRepository(); |
|
|
|
solution.CreateProject(expectedRepository, null); |
|
|
|
IPackageRepository actualRepository = fakeProjectFactory.RepositoryPassedToCreateProject; |
|
|
|
Assert.AreEqual(expectedRepository, actualRepository); |
|
} |
|
|
|
[Test] |
|
public void CreateProject_ProjectAndRepositoryPassed_ReturnsProjectCreatedByFactory() |
|
{ |
|
CreateSolution(); |
|
var testProject = ProjectHelper.CreateTestProject(); |
|
var repository = new FakePackageRepository(); |
|
|
|
var project = solution.CreateProject(repository, testProject); |
|
|
|
IPackageManagementProject expectedProject = fakeProjectFactory.FakeProject; |
|
|
|
Assert.AreEqual(expectedProject, project); |
|
} |
|
|
|
[Test] |
|
public void GetActiveProject_RepositoryPassed_CreatesProjectUsingRepository() |
|
{ |
|
CreateSolution(); |
|
var expectedRepository = new FakePackageRepository(); |
|
solution.GetActiveProject(expectedRepository); |
|
|
|
IPackageRepository repository = fakeProjectFactory.RepositoryPassedToCreateProject; |
|
|
|
Assert.AreEqual(expectedRepository, repository); |
|
} |
|
|
|
[Test] |
|
public void GetActiveProject_RepositoryPassed_CreatesProjectUsingCurrentActiveProject() |
|
{ |
|
CreateSolution(); |
|
var expectedRepository = new FakePackageRepository(); |
|
var expectedProject = ProjectHelper.CreateTestProject(); |
|
fakeProjectService.CurrentProject = expectedProject; |
|
|
|
solution.GetActiveProject(expectedRepository); |
|
|
|
var project = fakeProjectFactory.ProjectPassedToCreateProject; |
|
|
|
Assert.AreEqual(expectedProject, project); |
|
} |
|
|
|
[Test] |
|
public void GetActiveProject_RepositoryPassed_ReturnsProjectFromProjectFactory() |
|
{ |
|
CreateSolution(); |
|
var expectedRepository = new FakePackageRepository(); |
|
var project = solution.GetActiveProject(expectedRepository); |
|
|
|
var expectedProject = fakeProjectFactory.FakeProject; |
|
|
|
Assert.AreEqual(expectedProject, project); |
|
} |
|
|
|
[Test] |
|
public void CreateProject_PackagesSourceAndProjectPassed_CreatesProjectUsingCreatedRepository() |
|
{ |
|
CreateSolution(); |
|
var source = new PackageSource("http://sharpdevelop.net"); |
|
var testProject = ProjectHelper.CreateTestProject(); |
|
solution.CreateProject(source, testProject); |
|
|
|
var repository = fakeProjectFactory.RepositoryPassedToCreateProject; |
|
var expectedRepository = fakeRegisteredPackageRepositories.FakePackageRepository; |
|
|
|
Assert.AreEqual(expectedRepository, repository); |
|
} |
|
|
|
[Test] |
|
public void CreateProject_PackagesSourceAndProjectPassed_PackageSourceUsedToCreateRepository() |
|
{ |
|
CreateSolution(); |
|
var expectedSource = new PackageSource("http://sharpdevelop.net"); |
|
var testProject = ProjectHelper.CreateTestProject(); |
|
|
|
solution.CreateProject(expectedSource, testProject); |
|
|
|
var source = fakeRegisteredPackageRepositories.PackageSourcePassedToCreateRepository; |
|
|
|
Assert.AreEqual(expectedSource, source); |
|
} |
|
|
|
[Test] |
|
public void CreateProject_PackagesSourceAndProjectPassed_CreatesProjectUsingProjectPassed() |
|
{ |
|
CreateSolution(); |
|
var source = new PackageSource("http://sharpdevelop.net"); |
|
var expectedProject = ProjectHelper.CreateTestProject(); |
|
|
|
solution.CreateProject(source, expectedProject); |
|
|
|
var project = fakeProjectFactory.ProjectPassedToCreateProject; |
|
|
|
Assert.AreEqual(expectedProject, project); |
|
} |
|
|
|
[Test] |
|
public void CreateProject_PackagesSourceAndProjectPassed_ReturnsProjectFromProjectFactory() |
|
{ |
|
CreateSolution(); |
|
var source = new PackageSource("http://sharpdevelop.net"); |
|
var testProject = ProjectHelper.CreateTestProject(); |
|
var project = solution.CreateProject(source, testProject); |
|
|
|
var expectedProject = fakeProjectFactory.FakeProject; |
|
|
|
Assert.AreEqual(expectedProject, project); |
|
} |
|
|
|
[Test] |
|
public void GetProject_PackagesSourceAndProjectNamePassed_CreatesProjectUsingFoundProjectMatchingName() |
|
{ |
|
CreateSolution(); |
|
var expectedProject = AddProjectToOpenProjects("Test"); |
|
var source = new PackageSource("http://sharpdevelop.net"); |
|
|
|
solution.GetProject(source, "Test"); |
|
|
|
var project = fakeProjectFactory.ProjectPassedToCreateProject; |
|
|
|
Assert.AreEqual(expectedProject, project); |
|
} |
|
|
|
[Test] |
|
public void GetProject_PackagesSourceAndProjectNameWithDifferentCasePassed_CreatesProjectUsingFoundProjectMatchingName() |
|
{ |
|
CreateSolution(); |
|
var expectedProject = AddProjectToOpenProjects("Test"); |
|
var source = new PackageSource("http://sharpdevelop.net"); |
|
|
|
solution.GetProject(source, "TEST"); |
|
|
|
var project = fakeProjectFactory.ProjectPassedToCreateProject; |
|
|
|
Assert.AreEqual(expectedProject, project); |
|
} |
|
|
|
[Test] |
|
public void GetProject_PackagesSourceAndProjectPassed_ReturnsProjectFromProjectFactory() |
|
{ |
|
CreateSolution(); |
|
AddProjectToOpenProjects("Test"); |
|
var source = new PackageSource("http://sharpdevelop.net"); |
|
var project = solution.GetProject(source, "Test"); |
|
|
|
var expectedProject = fakeProjectFactory.FakeProject; |
|
|
|
Assert.AreEqual(expectedProject, project); |
|
} |
|
|
|
[Test] |
|
public void GetProject_PackagesSourceAndProjectPassed_PackageSourceUsedToCreateRepository() |
|
{ |
|
CreateSolution(); |
|
AddProjectToOpenProjects("Test"); |
|
var expectedSource = new PackageSource("http://sharpdevelop.net"); |
|
var project = solution.GetProject(expectedSource, "Test"); |
|
|
|
var actualSource = fakeRegisteredPackageRepositories.PackageSourcePassedToCreateRepository; |
|
|
|
Assert.AreEqual(expectedSource, actualSource); |
|
} |
|
} |
|
}
|
|
|