public void ShouldIncludeSubDirectoryInTargetWhenItsPresentInFileSystem() { MockIVsSolution mockSolution = new MockIVsSolution(); MockVsHierarchy mockTargetVsHierarchy = new MockVsHierarchy(); MockProject sourceProject = new MockProject(@"c:\mockPath1\project1.csproj"); MockProject targetProject = new MockProject(@"c:\mockPath2\project1.csproj"); mockTargetVsHierarchy.GetPropertyProjectValue = targetProject; mockSolution.Hierarchies.Add(mockTargetVsHierarchy); targetProject.ProjectItems.AddFolder("Folder1", Constants.vsProjectItemKindPhysicalFolder); MockProjectItem folder1 = targetProject.ProjectItems.Item(0) as MockProjectItem; folder1.ProjectItems.ThrowOnAddFolder = true; MockHierarchyHelper mockHierarchyHelper = new MockHierarchyHelper(); MockLogger mockLogger = new MockLogger(); ProjectItemsSynchronizer syncher = new ProjectItemsSynchronizer(sourceProject, targetProject, mockLogger, mockSolution, mockHierarchyHelper, new MockProjectItemsFilter()); string directoryToAdd = @"c:\mockPath1\Folder1\Folder2\"; syncher.DirectoryAddedToSource(directoryToAdd); Assert.IsTrue(mockTargetVsHierarchy.AddItemCalled); Assert.AreEqual(VSConstants.VSITEMID_ROOT, mockTargetVsHierarchy.AddItemArgumentItemidLoc); Assert.AreEqual(string.Empty, mockTargetVsHierarchy.AddItemArgumentItemName); Assert.AreEqual <uint>(1, mockTargetVsHierarchy.AddItemArgumentFilesToOpen); Assert.AreEqual(@"c:\mockPath2\Folder1\Folder2", mockTargetVsHierarchy.AddItemArgumentArrayFilesToOpen[0]); Assert.AreEqual(1, mockLogger.MessageLog.Count); StringAssert.Contains(mockLogger.MessageLog[0], "already exists"); StringAssert.Contains(mockLogger.MessageLog[0], "included"); StringAssert.Contains(mockLogger.MessageLog[0], @"Folder2"); StringAssert.Contains(mockLogger.MessageLog[0], targetProject.Name); }
public void ShouldIncludeDirectoryInTargetWhenItsPresentInFileSystem() { MockIVsSolution mockSolution = new MockIVsSolution(); MockVsHierarchy mockTargetVsHierarchy = new MockVsHierarchy(); MockProject sourceProject = new MockProject(@"c:\mockPath1\project1.csproj"); MockProject targetProject = new MockProject(@"c:\mockPath2\project1.csproj"); mockTargetVsHierarchy.GetPropertyProjectValue = targetProject; mockSolution.Hierarchies.Add(mockTargetVsHierarchy); MockHierarchyHelper mockHierarchyHelper = new MockHierarchyHelper(); MockLogger mockLogger = new MockLogger(); ProjectItemsSynchronizer syncher = new ProjectItemsSynchronizer(sourceProject, targetProject, mockLogger, mockSolution, mockHierarchyHelper, new MockProjectItemsFilter()); string directoryToAdd = @"c:\mockPath1\MyFolder\"; targetProject.ProjectItems.ThrowOnAddFolder = true; syncher.DirectoryAddedToSource(directoryToAdd); Assert.IsTrue(mockTargetVsHierarchy.AddItemCalled); Assert.AreEqual(VSConstants.VSITEMID_ROOT, mockTargetVsHierarchy.AddItemArgumentItemidLoc); Assert.AreEqual(string.Empty, mockTargetVsHierarchy.AddItemArgumentItemName); Assert.AreEqual <uint>(1, mockTargetVsHierarchy.AddItemArgumentFilesToOpen); Assert.AreEqual(@"c:\mockPath2\MyFolder", mockTargetVsHierarchy.AddItemArgumentArrayFilesToOpen[0]); }
public void ShouldRestoreLinksOnServiceInitialization() { MockIVsSolution solution = new MockIVsSolution(); MockVsHierarchy sourceHierarchy = new MockVsHierarchy(); MockVsHierarchy targetHierarchy = new MockVsHierarchy(); targetHierarchy.GetPropertyProjectValue.Globals.Dictionary["ProjectLinkReference"] = sourceHierarchy.GetPropertyProjectIdGuidValue.ToString(); solution.Hierarchies.Add(sourceHierarchy); solution.Hierarchies.Add(targetHierarchy); MockSolution dteSolution = new MockSolution(); dteSolution.Projects.List.Add(sourceHierarchy.GetPropertyProjectValue); dteSolution.Projects.List.Add(targetHierarchy.GetPropertyProjectValue); ProjectLinkTracker tracker = new ProjectLinkTracker(new MockDocumentTracker(), solution, new MockLogger(), dteSolution); List <ProjectLink> links = tracker.GetProjectLinks().ToList(); Assert.AreEqual(1, links.Count); Assert.AreEqual(sourceHierarchy.GetPropertyProjectIdGuidValue, links[0].SourceProjectId); Assert.AreEqual(targetHierarchy.GetPropertyProjectIdGuidValue, links[0].TargetProjectId); }
public void ShouldRegisterInSolutionEvents() { MockIVsSolution vsSolution = new MockIVsSolution(); ProjectLinkTracker tracker = new ProjectLinkTracker(new MockDocumentTracker(), vsSolution, null); Assert.IsTrue(vsSolution.AdviseSolutionEventsCalled); }
public void ShouldGetEmptyLinkedProjectList() { MockIVsSolution solution = new MockIVsSolution(); TestableProjectLinkTracker tracker = new TestableProjectLinkTracker(new MockDocumentTracker(), solution); IEnumerable <ProjectLink> projectLinks = tracker.GetProjectLinks(); Assert.IsNotNull(projectLinks); Assert.AreEqual(0, projectLinks.Count()); }
public void ShouldThrowIfAddingSameLink() { MockIVsSolution solution = new MockIVsSolution(); TestableProjectLinkTracker tracker = new TestableProjectLinkTracker(new MockDocumentTracker(), solution); MockVsHierarchy project1VsHierarchy = new MockVsHierarchy(); MockVsHierarchy project2VsHierarchy = new MockVsHierarchy(); solution.Hierarchies.Add(project1VsHierarchy); solution.Hierarchies.Add(project2VsHierarchy); tracker.AddProjectLink(project1VsHierarchy, project2VsHierarchy); tracker.AddProjectLink(project1VsHierarchy, project2VsHierarchy); }
public void AddProjectLinkAddsPersistInfoToTargetProject() { var solution = new MockIVsSolution(); ProjectLinkTracker tracker = new ProjectLinkTracker(new MockDocumentTracker(), solution, null); var sourceHierarchy = new MockVsHierarchy(); var targetHierarchy = new MockVsHierarchy(); tracker.AddProjectLink(sourceHierarchy, targetHierarchy); Assert.IsTrue(targetHierarchy.GetPropertyProjectValue.Globals.Dictionary.ContainsKey("ProjectLinkReference")); Assert.AreEqual(sourceHierarchy.GetPropertyProjectIdGuidValue.ToString(), targetHierarchy.GetPropertyProjectValue.Globals.Dictionary["ProjectLinkReference"]); Assert.IsTrue(targetHierarchy.GetPropertyProjectValue.Globals.set_VariablePersistsCalled); }
public void AddProjectLinkAddsPersistInfoToTargetProject() { MockIVsSolution solution = new MockIVsSolution(); ProjectLinkTracker tracker = new ProjectLinkTracker(new MockDocumentTracker(), solution, null); MockVsHierarchy sourceHierarchy = new MockVsHierarchy(); MockVsHierarchy targetHierarchy = new MockVsHierarchy(); tracker.AddProjectLink(sourceHierarchy, targetHierarchy); Assert.IsTrue(targetHierarchy.GetPropertyProjectValue.Globals.Dictionary.ContainsKey("ProjectLinkReference")); Assert.AreEqual(sourceHierarchy.GetPropertyProjectIdGuidValue.ToString(), targetHierarchy.GetPropertyProjectValue.Globals.Dictionary["ProjectLinkReference"]); Assert.IsTrue(targetHierarchy.GetPropertyProjectValue.Globals.SetVariablePersistsCalled); }
public void ShouldAddNewItemsToSync() { var solution = new MockIVsSolution(); TestableProjectLinkTracker tracker = new TestableProjectLinkTracker(new MockDocumentTracker(), solution); var project1VsHierarchy = new MockVsHierarchy(); var project2VsHierarchy = new MockVsHierarchy(); solution.Hierarchies.Add(project1VsHierarchy); solution.Hierarchies.Add(project2VsHierarchy); tracker.AddProjectLink(project1VsHierarchy.GetPropertyProjectIdGuidValue, project2VsHierarchy.GetPropertyProjectIdGuidValue); Assert.IsTrue(tracker.ProjectsAreLinked(project1VsHierarchy, project2VsHierarchy)); Assert.IsFalse(tracker.ProjectsAreLinked(project2VsHierarchy, project1VsHierarchy)); }
public void ShouldNotLinkIfTargetIsAlreadyASource() { MockIVsSolution solution = new MockIVsSolution(); TestableProjectLinkTracker tracker = new TestableProjectLinkTracker(new MockDocumentTracker(), solution); MockVsHierarchy project1VsHierarchy = new MockVsHierarchy(); MockVsHierarchy project2VsHierarchy = new MockVsHierarchy(); MockVsHierarchy project3VsHierarchy = new MockVsHierarchy(); solution.Hierarchies.Add(project1VsHierarchy); solution.Hierarchies.Add(project2VsHierarchy); solution.Hierarchies.Add(project3VsHierarchy); tracker.AddProjectLink(project1VsHierarchy, project3VsHierarchy); tracker.AddProjectLink(project2VsHierarchy, project1VsHierarchy); }
public void ShouldAddNewItemsToSync() { MockIVsSolution solution = new MockIVsSolution(); TestableProjectLinkTracker tracker = new TestableProjectLinkTracker(new MockDocumentTracker(), solution); MockVsHierarchy project1VsHierarchy = new MockVsHierarchy(); MockVsHierarchy project2VsHierarchy = new MockVsHierarchy(); solution.Hierarchies.Add(project1VsHierarchy); solution.Hierarchies.Add(project2VsHierarchy); tracker.AddProjectLink(project1VsHierarchy.GetPropertyProjectIdGuidValue, project2VsHierarchy.GetPropertyProjectIdGuidValue); Assert.IsTrue(tracker.ProjectsAreLinked(project1VsHierarchy, project2VsHierarchy)); Assert.IsFalse(tracker.ProjectsAreLinked(project2VsHierarchy, project1VsHierarchy)); }
public void ShouldCreateSyncherWhenLoadingLinkedSourceProjectAfterTargetProject() { var solution = new MockIVsSolution(); TestableProjectLinkTracker tracker = new TestableProjectLinkTracker(new MockDocumentTracker(), solution); var sourceHierarchy = new MockVsHierarchy(); var targetHierarchy = new MockVsHierarchy(); targetHierarchy.GetPropertyProjectValue.Globals.Dictionary["ProjectLinkReference"] = sourceHierarchy.GetPropertyProjectIdGuidValue.ToString(); tracker.OnAfterOpenProject(targetHierarchy, 0); Assert.IsFalse(tracker.ProjectsAreLinked(sourceHierarchy, targetHierarchy)); solution.Hierarchies.Add(sourceHierarchy); tracker.OnAfterOpenProject(sourceHierarchy, 0); Assert.IsTrue(tracker.ProjectsAreLinked(sourceHierarchy, targetHierarchy)); }
public void ShouldStopTrackingIfSourceProjectIsClosed() { MockIVsSolution solution = new MockIVsSolution(); TestableProjectLinkTracker tracker = new TestableProjectLinkTracker(new MockDocumentTracker(), solution); MockVsHierarchy sourceHierarchy = new MockVsHierarchy(); MockVsHierarchy targetHierarchy = new MockVsHierarchy(); targetHierarchy.GetPropertyProjectValue.Globals.Dictionary["ProjectLinkReference"] = sourceHierarchy.GetPropertyProjectIdGuidValue.ToString(); solution.Hierarchies.Add(sourceHierarchy); tracker.OnAfterOpenProject(sourceHierarchy, 0); tracker.OnAfterOpenProject(targetHierarchy, 0); Assert.IsTrue(tracker.ProjectsAreLinked(sourceHierarchy, targetHierarchy)); tracker.OnBeforeCloseProject(sourceHierarchy, 0); Assert.IsFalse(tracker.ProjectsAreLinked(sourceHierarchy, targetHierarchy)); }
public void ShouldTrackMultipleProjects() { MockIVsSolution solution = new MockIVsSolution(); TestableProjectLinkTracker tracker = new TestableProjectLinkTracker(new MockDocumentTracker(), solution); MockVsHierarchy project1VsHierarchy = new MockVsHierarchy(); MockVsHierarchy project2VsHierarchy = new MockVsHierarchy(); MockVsHierarchy project3VsHierarchy = new MockVsHierarchy(); solution.Hierarchies.Add(project1VsHierarchy); solution.Hierarchies.Add(project2VsHierarchy); solution.Hierarchies.Add(project3VsHierarchy); tracker.AddProjectLink(project1VsHierarchy, project2VsHierarchy); tracker.AddProjectLink(project1VsHierarchy, project3VsHierarchy); Assert.IsTrue(tracker.ProjectsAreLinked(project1VsHierarchy, project2VsHierarchy)); Assert.IsTrue(tracker.ProjectsAreLinked(project1VsHierarchy, project3VsHierarchy)); }
public void ShouldUnlinkProjects() { MockIVsSolution solution = new MockIVsSolution(); TestableProjectLinkTracker tracker = new TestableProjectLinkTracker(new MockDocumentTracker(), solution); MockVsHierarchy sourceVsHierarchy = new MockVsHierarchy(); MockVsHierarchy targetVsHierarchy = new MockVsHierarchy(); solution.Hierarchies.Add(sourceVsHierarchy); solution.Hierarchies.Add(targetVsHierarchy); tracker.AddProjectLink(sourceVsHierarchy, targetVsHierarchy); targetVsHierarchy.GetPropertyProjectValue.Globals.SetVariablePersistsCalled = false; tracker.UnlinkProjects(sourceVsHierarchy.GetPropertyProjectIdGuidValue, targetVsHierarchy.GetPropertyProjectIdGuidValue); Assert.AreEqual(0, tracker.GetProjectLinks().Count()); Assert.IsTrue(targetVsHierarchy.GetPropertyProjectValue.Globals.SetVariablePersistsCalled); Assert.IsFalse(targetVsHierarchy.GetPropertyProjectValue.Globals.SetVariablePersistsArgumentValue); }
public void ShouldThrowIfComExceptionErrorCodeIsNotTheExpected() { MockIVsSolution mockSolution = new MockIVsSolution(); MockVsHierarchy mockTargetVsHierarchy = new MockVsHierarchy(); mockSolution.Hierarchies.Add(mockTargetVsHierarchy); MockProject sourceProject = new MockProject(@"c:\mockPath1\project1.csproj"); MockProject targetProject = new MockProject(@"c:\mockPath2\project1.csproj"); targetProject.ProjectItems.ThrowOnAddFolder = true; targetProject.ProjectItems.ErrorCode = VSConstants.S_FALSE; MockHierarchyHelper mockHierarchyHelper = new MockHierarchyHelper(); MockLogger mockLogger = new MockLogger(); ProjectItemsSynchronizer syncher = new ProjectItemsSynchronizer(sourceProject, targetProject, mockLogger, mockSolution, mockHierarchyHelper, new MockProjectItemsFilter()); string directoryToAdd = @"c:\mockPath1\MyFolder\"; syncher.DirectoryAddedToSource(directoryToAdd); }
public void ShouldGetLinkedProject() { MockIVsSolution solution = new MockIVsSolution(); TestableProjectLinkTracker tracker = new TestableProjectLinkTracker(new MockDocumentTracker(), solution); MockVsHierarchy project1VsHierarchy = new MockVsHierarchy(); MockVsHierarchy project2VsHierarchy = new MockVsHierarchy(); solution.Hierarchies.Add(project1VsHierarchy); solution.Hierarchies.Add(project2VsHierarchy); tracker.AddProjectLink(project1VsHierarchy, project2VsHierarchy); IEnumerable <ProjectLink> projectLinks = tracker.GetProjectLinks(); Assert.AreEqual(1, projectLinks.Count()); ProjectLink projectLink = projectLinks.ElementAt(0); Assert.AreEqual(project1VsHierarchy.GetPropertyProjectIdGuidValue, projectLink.SourceProjectId); Assert.AreEqual(project2VsHierarchy.GetPropertyProjectIdGuidValue, projectLink.TargetProjectId); }
public void ShouldUnlinkProjects() { var solution = new MockIVsSolution(); TestableProjectLinkTracker tracker = new TestableProjectLinkTracker(new MockDocumentTracker(), solution); var sourceVsHierarchy = new MockVsHierarchy(); var targetVsHierarchy = new MockVsHierarchy(); solution.Hierarchies.Add(sourceVsHierarchy); solution.Hierarchies.Add(targetVsHierarchy); tracker.AddProjectLink(sourceVsHierarchy, targetVsHierarchy); targetVsHierarchy.GetPropertyProjectValue.Globals.set_VariablePersistsCalled = false; tracker.UnlinkProjects(sourceVsHierarchy.GetPropertyProjectIdGuidValue, targetVsHierarchy.GetPropertyProjectIdGuidValue); Assert.AreEqual(0, tracker.GetProjectLinks().Count()); Assert.IsTrue(targetVsHierarchy.GetPropertyProjectValue.Globals.set_VariablePersistsCalled); Assert.IsFalse(targetVsHierarchy.GetPropertyProjectValue.Globals.set_VariablePersistsArgumentValue); }
public void ShouldTrackMultipleProjects() { var solution = new MockIVsSolution(); TestableProjectLinkTracker tracker = new TestableProjectLinkTracker(new MockDocumentTracker(), solution); var project1VsHierarchy = new MockVsHierarchy(); var project2VsHierarchy = new MockVsHierarchy(); var project3VsHierarchy = new MockVsHierarchy(); solution.Hierarchies.Add(project1VsHierarchy); solution.Hierarchies.Add(project2VsHierarchy); solution.Hierarchies.Add(project3VsHierarchy); tracker.AddProjectLink(project1VsHierarchy, project2VsHierarchy); tracker.AddProjectLink(project1VsHierarchy, project3VsHierarchy); Assert.IsTrue(tracker.ProjectsAreLinked(project1VsHierarchy, project2VsHierarchy)); Assert.IsTrue(tracker.ProjectsAreLinked(project1VsHierarchy, project3VsHierarchy)); }
public void ShouldThrowIfAddingSameLink() { var solution = new MockIVsSolution(); TestableProjectLinkTracker tracker = new TestableProjectLinkTracker(new MockDocumentTracker(), solution); var project1VsHierarchy = new MockVsHierarchy(); var project2VsHierarchy = new MockVsHierarchy(); solution.Hierarchies.Add(project1VsHierarchy); solution.Hierarchies.Add(project2VsHierarchy); tracker.AddProjectLink(project1VsHierarchy, project2VsHierarchy); tracker.AddProjectLink(project1VsHierarchy, project2VsHierarchy); }
public void ShouldRestoreLinksOnServiceInitialization() { var solution = new MockIVsSolution(); var sourceHierarchy = new MockVsHierarchy(); var targetHierarchy = new MockVsHierarchy(); targetHierarchy.GetPropertyProjectValue.Globals.Dictionary["ProjectLinkReference"] = sourceHierarchy.GetPropertyProjectIdGuidValue.ToString(); solution.Hierarchies.Add(sourceHierarchy); solution.Hierarchies.Add(targetHierarchy); var dteSolution = new MockSolution(); dteSolution.Projects.List.Add(sourceHierarchy.GetPropertyProjectValue); dteSolution.Projects.List.Add(targetHierarchy.GetPropertyProjectValue); ProjectLinkTracker tracker = new ProjectLinkTracker(new MockDocumentTracker(), solution, new MockLogger(), dteSolution); var links = tracker.GetProjectLinks().ToList(); Assert.AreEqual(1, links.Count); Assert.AreEqual(sourceHierarchy.GetPropertyProjectIdGuidValue, links[0].SourceProjectId); Assert.AreEqual(targetHierarchy.GetPropertyProjectIdGuidValue, links[0].TargetProjectId); }
public void ShouldRegisterInSolutionEvents() { var vsSolution = new MockIVsSolution(); ProjectLinkTracker tracker = new ProjectLinkTracker(new MockDocumentTracker(), vsSolution, null); Assert.IsTrue(vsSolution.AdviseSolutionEventsCalled); }
public void ShouldNotLinkTwiceTheSameTarget() { var solution = new MockIVsSolution(); TestableProjectLinkTracker tracker = new TestableProjectLinkTracker(new MockDocumentTracker(), solution); var project1VsHierarchy = new MockVsHierarchy(); var project2VsHierarchy = new MockVsHierarchy(); var project3VsHierarchy = new MockVsHierarchy(); solution.Hierarchies.Add(project1VsHierarchy); solution.Hierarchies.Add(project2VsHierarchy); solution.Hierarchies.Add(project3VsHierarchy); tracker.AddProjectLink(project1VsHierarchy, project3VsHierarchy); tracker.AddProjectLink(project2VsHierarchy, project3VsHierarchy); }
public void ShouldGetLinkedProject() { var solution = new MockIVsSolution(); TestableProjectLinkTracker tracker = new TestableProjectLinkTracker(new MockDocumentTracker(), solution); var project1VsHierarchy = new MockVsHierarchy(); var project2VsHierarchy = new MockVsHierarchy(); solution.Hierarchies.Add(project1VsHierarchy); solution.Hierarchies.Add(project2VsHierarchy); tracker.AddProjectLink(project1VsHierarchy, project2VsHierarchy); var projectLinks = tracker.GetProjectLinks(); Assert.AreEqual(1, projectLinks.Count()); var projectLink = projectLinks.ElementAt(0); Assert.AreEqual(project1VsHierarchy.GetPropertyProjectIdGuidValue, projectLink.SourceProjectId); Assert.AreEqual(project2VsHierarchy.GetPropertyProjectIdGuidValue, projectLink.TargetProjectId); }
public void ShouldGetEmptyLinkedProjectList() { var solution = new MockIVsSolution(); TestableProjectLinkTracker tracker = new TestableProjectLinkTracker(new MockDocumentTracker(), solution); var projectLinks = tracker.GetProjectLinks(); Assert.IsNotNull(projectLinks); Assert.AreEqual(0, projectLinks.Count()); }
public void ShouldIncludeSubDirectoryInTargetWhenItsPresentInFileSystem() { var mockSolution = new MockIVsSolution(); var mockTargetVsHierarchy = new MockVsHierarchy(); var sourceProject = new MockProject(@"c:\mockPath1\project1.csproj"); var targetProject = new MockProject(@"c:\mockPath2\project1.csproj"); mockTargetVsHierarchy.GetPropertyProjectValue = targetProject; mockSolution.Hierarchies.Add(mockTargetVsHierarchy); targetProject.ProjectItems.AddFolder("Folder1", Constants.vsProjectItemKindPhysicalFolder); MockProjectItem folder1 = targetProject.ProjectItems.Item(0) as MockProjectItem; folder1.ProjectItems.ThrowOnAddFolder = true; var mockHierarchyHelper = new MockHierarchyHelper(); var mockLogger = new MockLogger(); var syncher = new ProjectItemsSynchronizer(sourceProject, targetProject, mockLogger, mockSolution, mockHierarchyHelper, new MockProjectItemsFilter()); string directoryToAdd = @"c:\mockPath1\Folder1\Folder2\"; syncher.DirectoryAddedToSource(directoryToAdd); Assert.IsTrue(mockTargetVsHierarchy.AddItemCalled); Assert.AreEqual(VSConstants.VSITEMID_ROOT, mockTargetVsHierarchy.AddItemArgumentItemidLoc); Assert.AreEqual(string.Empty, mockTargetVsHierarchy.AddItemArgumentItemName); Assert.AreEqual<uint>(1, mockTargetVsHierarchy.AddItemArgumentFilesToOpen); Assert.AreEqual(@"c:\mockPath2\Folder1\Folder2", mockTargetVsHierarchy.AddItemArgumentArrayFilesToOpen[0]); Assert.AreEqual(1, mockLogger.MessageLog.Count); StringAssert.Contains(mockLogger.MessageLog[0], "already exists"); StringAssert.Contains(mockLogger.MessageLog[0], "included"); StringAssert.Contains(mockLogger.MessageLog[0], @"Folder2"); StringAssert.Contains(mockLogger.MessageLog[0], targetProject.Name); }
public void ShouldThrowIfCOMExceptionErrorCodeIsNotTheExpected() { var mockSolution = new MockIVsSolution(); var mockTargetVsHierarchy = new MockVsHierarchy(); mockSolution.Hierarchies.Add(mockTargetVsHierarchy); var sourceProject = new MockProject(@"c:\mockPath1\project1.csproj"); var targetProject = new MockProject(@"c:\mockPath2\project1.csproj"); targetProject.ProjectItems.ThrowOnAddFolder = true; targetProject.ProjectItems.ErrorCode = VSConstants.S_FALSE; var mockHierarchyHelper = new MockHierarchyHelper(); var mockLogger = new MockLogger(); var syncher = new ProjectItemsSynchronizer(sourceProject, targetProject, mockLogger, mockSolution, mockHierarchyHelper, new MockProjectItemsFilter()); string directoryToAdd = @"c:\mockPath1\MyFolder\"; syncher.DirectoryAddedToSource(directoryToAdd); }
public void ShouldIncludeDirectoryInTargetWhenItsPresentInFileSystem() { var mockSolution = new MockIVsSolution(); var mockTargetVsHierarchy = new MockVsHierarchy(); var sourceProject = new MockProject(@"c:\mockPath1\project1.csproj"); var targetProject = new MockProject(@"c:\mockPath2\project1.csproj"); mockTargetVsHierarchy.GetPropertyProjectValue = targetProject; mockSolution.Hierarchies.Add(mockTargetVsHierarchy); var mockHierarchyHelper = new MockHierarchyHelper(); var mockLogger = new MockLogger(); var syncher = new ProjectItemsSynchronizer(sourceProject, targetProject, mockLogger, mockSolution, mockHierarchyHelper, new MockProjectItemsFilter()); string directoryToAdd = @"c:\mockPath1\MyFolder\"; targetProject.ProjectItems.ThrowOnAddFolder = true; syncher.DirectoryAddedToSource(directoryToAdd); Assert.IsTrue(mockTargetVsHierarchy.AddItemCalled); Assert.AreEqual(VSConstants.VSITEMID_ROOT, mockTargetVsHierarchy.AddItemArgumentItemidLoc); Assert.AreEqual(string.Empty, mockTargetVsHierarchy.AddItemArgumentItemName); Assert.AreEqual<uint>(1, mockTargetVsHierarchy.AddItemArgumentFilesToOpen); Assert.AreEqual(@"c:\mockPath2\MyFolder", mockTargetVsHierarchy.AddItemArgumentArrayFilesToOpen[0]); }
public void ShouldNotRestartTrackingIfSourceAndTargetProjectsAreClosedAndSourceGetsReopened() { var solution = new MockIVsSolution(); TestableProjectLinkTracker tracker = new TestableProjectLinkTracker(new MockDocumentTracker(), solution); var sourceHierarchy = new MockVsHierarchy(); var targetHierarchy = new MockVsHierarchy(); targetHierarchy.GetPropertyProjectValue.Globals.Dictionary["ProjectLinkReference"] = sourceHierarchy.GetPropertyProjectIdGuidValue.ToString(); solution.Hierarchies.Add(sourceHierarchy); tracker.OnAfterOpenProject(sourceHierarchy, 0); tracker.OnAfterOpenProject(targetHierarchy, 0); tracker.OnBeforeCloseProject(sourceHierarchy, 0); tracker.OnBeforeCloseProject(targetHierarchy, 0); tracker.OnAfterOpenProject(sourceHierarchy, 0); Assert.IsFalse(tracker.ProjectsAreLinked(sourceHierarchy, targetHierarchy)); }