public async Task nTextViewClosed_UnsubscribesAfterLastTextViewClosed() { // Arrange var textView1 = Mock.Of <ITextView>(MockBehavior.Strict); var textView2 = Mock.Of <ITextView>(MockBehavior.Strict); var buffers = new Collection <ITextBuffer>() { Mock.Of <ITextBuffer>(b => b.ContentType == RazorCoreContentType && b.Properties == new PropertyCollection(), MockBehavior.Strict), Mock.Of <ITextBuffer>(b => b.ContentType == NonRazorCoreContentType && b.Properties == new PropertyCollection(), MockBehavior.Strict), }; var documentTracker = new DefaultVisualStudioDocumentTracker( Dispatcher, JoinableTaskContext, FilePath, ProjectPath, ProjectManager, WorkspaceEditorSettings, Workspace, buffers[0], ImportDocumentManager); buffers[0].Properties.AddProperty(typeof(VisualStudioDocumentTracker), documentTracker); var editorFactoryService = Mock.Of <RazorEditorFactoryService>(MockBehavior.Strict); var documentManager = new DefaultRazorDocumentManager(Dispatcher, JoinableTaskContext, editorFactoryService); // Populate the text views documentTracker.Subscribe(); documentTracker.AddTextView(textView1); documentTracker.AddTextView(textView2); // Act 1 await documentManager.OnTextViewClosedAsync(textView2, buffers); // Assert 1 Assert.True(documentTracker.IsSupportedProject); // Act await documentManager.OnTextViewClosedAsync(textView1, buffers); // Assert 2 Assert.False(documentTracker.IsSupportedProject); }
public async Task OnTextViewClosed_TextViewWithoutDocumentTracker_DoesNothing() { // Arrange var documentManager = new DefaultRazorDocumentManager(Dispatcher, JoinableTaskContext, Mock.Of <RazorEditorFactoryService>(MockBehavior.Strict)); var textView = Mock.Of <ITextView>(MockBehavior.Strict); var buffers = new Collection <ITextBuffer>() { Mock.Of <ITextBuffer>(b => b.ContentType == RazorCoreContentType && b.Properties == new PropertyCollection(), MockBehavior.Strict), }; // Act await documentManager.OnTextViewClosedAsync(textView, buffers); // Assert Assert.False(buffers[0].Properties.ContainsProperty(typeof(VisualStudioDocumentTracker))); }
public async Task OnTextViewClosed_ForAnyTextBufferWithTracker_RemovesTextView() { // Arrange var textView1 = Mock.Of <ITextView>(MockBehavior.Strict); var textView2 = Mock.Of <ITextView>(MockBehavior.Strict); var buffers = new Collection <ITextBuffer>() { Mock.Of <ITextBuffer>(b => b.ContentType == RazorCoreContentType && b.Properties == new PropertyCollection(), MockBehavior.Strict), Mock.Of <ITextBuffer>(b => b.ContentType == NonRazorCoreContentType && b.Properties == new PropertyCollection(), MockBehavior.Strict), }; // Preload the buffer's properties with a tracker, so it's like we've already tracked this one. var documentTracker = new DefaultVisualStudioDocumentTracker( Dispatcher, JoinableTaskContext, FilePath, ProjectPath, ProjectManager, WorkspaceEditorSettings, Workspace, buffers[0], ImportDocumentManager); documentTracker.AddTextView(textView1); documentTracker.AddTextView(textView2); buffers[0].Properties.AddProperty(typeof(VisualStudioDocumentTracker), documentTracker); documentTracker = new DefaultVisualStudioDocumentTracker( Dispatcher, JoinableTaskContext, FilePath, ProjectPath, ProjectManager, WorkspaceEditorSettings, Workspace, buffers[1], ImportDocumentManager); documentTracker.AddTextView(textView1); documentTracker.AddTextView(textView2); buffers[1].Properties.AddProperty(typeof(VisualStudioDocumentTracker), documentTracker); var editorFactoryService = Mock.Of <RazorEditorFactoryService>(MockBehavior.Strict); var documentManager = new DefaultRazorDocumentManager(Dispatcher, JoinableTaskContext, editorFactoryService); // Act await documentManager.OnTextViewClosedAsync(textView2, buffers); // Assert documentTracker = buffers[0].Properties.GetProperty <DefaultVisualStudioDocumentTracker>(typeof(VisualStudioDocumentTracker)); Assert.Collection(documentTracker.TextViews, v => Assert.Same(v, textView1)); documentTracker = buffers[1].Properties.GetProperty <DefaultVisualStudioDocumentTracker>(typeof(VisualStudioDocumentTracker)); Assert.Collection(documentTracker.TextViews, v => Assert.Same(v, textView1)); }