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 ShouldRegisterInDocumentTracker()
        {
            MockDocumentTracker documentTracker = new MockDocumentTracker();

            ProjectLinkTracker tracker = new ProjectLinkTracker(documentTracker, new MockIVsSolution(), null);

            Assert.IsTrue(documentTracker.AdviseTrackProjectDocumentsEventsCalled);
            Assert.AreSame(tracker, documentTracker.AdviseTrackProjectDocumentsEventsArgumentEventSink);
        }
        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);
        }