public void GetMiscellaneousProject_ProjectNotLoaded_CreatesProjectAndReturnsCreatedProject() { // Arrange DefaultProjectResolver projectResolver = null; var projects = new List <ProjectSnapshot>(); var filePathNormalizer = new FilePathNormalizer(); var snapshotManager = new Mock <ProjectSnapshotManagerBase>(MockBehavior.Strict); snapshotManager.Setup(manager => manager.Projects) .Returns(() => projects); snapshotManager.Setup(manager => manager.GetLoadedProject(It.IsAny <string>())) .Returns <string>(filePath => projects.FirstOrDefault(p => p.FilePath == filePath)); snapshotManager.Setup(manager => manager.ProjectAdded(It.IsAny <HostProject>())) .Callback <HostProject>(hostProject => projects.Add(Mock.Of <ProjectSnapshot>(p => p.FilePath == hostProject.FilePath, MockBehavior.Strict))); var snapshotManagerAccessor = Mock.Of <ProjectSnapshotManagerAccessor>(accessor => accessor.Instance == snapshotManager.Object, MockBehavior.Strict); projectResolver = new DefaultProjectResolver(Dispatcher, filePathNormalizer, snapshotManagerAccessor); // Act var project = projectResolver.GetMiscellaneousProject(); // Assert Assert.Single(projects); Assert.Equal(projectResolver._miscellaneousHostProject.FilePath, project.FilePath); }
private DefaultProjectResolver CreateProjectResolver(Func <ProjectSnapshot[]> projectFactory) { var filePathNormalizer = new FilePathNormalizer(); var snapshotManager = new Mock <ProjectSnapshotManagerBase>(MockBehavior.Strict); snapshotManager.Setup(manager => manager.Projects) .Returns(projectFactory); snapshotManager.Setup(manager => manager.GetLoadedProject(It.IsAny <string>())) .Returns <string>(filePath => projectFactory().FirstOrDefault(project => project.FilePath == filePath)); var snapshotManagerAccessor = Mock.Of <ProjectSnapshotManagerAccessor>(accessor => accessor.Instance == snapshotManager.Object, MockBehavior.Strict); var projectResolver = new DefaultProjectResolver(Dispatcher, filePathNormalizer, snapshotManagerAccessor); return(projectResolver); }
public void GetMiscellaneousProject_ProjectLoaded_ReturnsExistingProject() { // Arrange DefaultProjectResolver projectResolver = null; var miscProject = new Mock <ProjectSnapshot>(MockBehavior.Strict); miscProject.Setup(p => p.FilePath) .Returns(() => projectResolver._miscellaneousHostProject.FilePath); var expectedProject = miscProject.Object; projectResolver = CreateProjectResolver(() => new[] { expectedProject }); // Act var project = projectResolver.GetMiscellaneousProject(); // Assert Assert.Same(expectedProject, project); }
public void TryResolvePotentialProject_OnlyMiscellaneousProject_ReturnsFalse() { // Arrange var documentFilePath = "C:/path/to/document.cshtml"; DefaultProjectResolver projectResolver = null; var miscProject = new Mock <ProjectSnapshot>(); miscProject.Setup(p => p.FilePath) .Returns(() => projectResolver._miscellaneousHostProject.FilePath); projectResolver = CreateProjectResolver(() => new[] { miscProject.Object }); // Act var result = projectResolver.TryResolvePotentialProject(documentFilePath, out var project); // Assert Assert.False(result); Assert.Null(project); }
public void TryResolveProject_OnlyMiscellaneousProjectContainsDocument_ReturnsTrue() { // Arrange var documentFilePath = "C:/path/to/document.cshtml"; DefaultProjectResolver projectResolver = null; var miscProject = new Mock <ProjectSnapshot>(MockBehavior.Strict); miscProject.Setup(p => p.FilePath) .Returns(() => projectResolver._miscellaneousHostProject.FilePath); miscProject.Setup(p => p.GetDocument(documentFilePath)).Returns(Mock.Of <DocumentSnapshot>(MockBehavior.Strict)); projectResolver = CreateProjectResolver(() => new[] { miscProject.Object }); // Act var result = projectResolver.TryResolveProject(documentFilePath, out var project); // Assert Assert.True(result); Assert.Equal(miscProject.Object, project); }
public void TryResolveProject_MiscellaneousOwnerProjectWithOthers_EnforceDocumentFalse_ReturnsTrue() { // Arrange var documentFilePath = "C:/path/to/document.cshtml"; DefaultProjectResolver projectResolver = null; var miscProject = new Mock <ProjectSnapshot>(MockBehavior.Strict); miscProject.Setup(p => p.FilePath) .Returns(() => projectResolver._miscellaneousHostProject.FilePath); miscProject.Setup(p => p.GetDocument(documentFilePath)).Returns(Mock.Of <DocumentSnapshot>(MockBehavior.Strict)); var ownerProject = Mock.Of <ProjectSnapshot>( p => p.FilePath == "C:/path/to/project.csproj" && p.GetDocument(documentFilePath) == null, MockBehavior.Strict); projectResolver = CreateProjectResolver(() => new[] { miscProject.Object, ownerProject }); // Act var result = projectResolver.TryResolveProject(documentFilePath, out var project, enforceDocumentInProject: false); // Assert Assert.True(result); Assert.Same(ownerProject, project); }