Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }