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 OnTextViewOpened_ForNonRazorTextBuffer_DoesNothing() { // Arrange var editorFactoryService = new Mock <RazorEditorFactoryService>(MockBehavior.Strict); var documentManager = new DefaultRazorDocumentManager(Dispatcher, JoinableTaskContext, editorFactoryService.Object); var textView = Mock.Of <ITextView>(MockBehavior.Strict); var buffers = new Collection <ITextBuffer>() { Mock.Of <ITextBuffer>(b => b.ContentType == NonRazorCoreContentType && b.Properties == new PropertyCollection(), MockBehavior.Strict), }; // Act & Assert await documentManager.OnTextViewOpenedAsync(textView, buffers); }
public void OnTextViewOpened_ForNonRazorTextBuffer_DoesNothing() { // Arrange var editorFactoryService = new Mock <RazorEditorFactoryService>(MockBehavior.Strict); var documentManager = new DefaultRazorDocumentManager(Dispatcher, editorFactoryService.Object, SupportedProjectService); var textView = Mock.Of <ITextView>(); var buffers = new Collection <ITextBuffer>() { Mock.Of <ITextBuffer>(b => b.ContentType == NonRazorContentType && b.Properties == new PropertyCollection()), }; // Act & Assert documentManager.OnTextViewOpened(textView, buffers); }
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 void OnTextViewClosed_TextViewWithoutDocumentTracker_DoesNothing() { // Arrange var documentManager = new DefaultRazorDocumentManager(Dispatcher, Mock.Of <RazorEditorFactoryService>(), SupportedProjectService); var textView = Mock.Of <ITextView>(); var buffers = new Collection <ITextBuffer>() { Mock.Of <ITextBuffer>(b => b.ContentType == RazorContentType && b.Properties == new PropertyCollection()), }; // Act documentManager.OnTextViewClosed(textView, buffers); // Assert Assert.False(buffers[0].Properties.ContainsProperty(typeof(VisualStudioDocumentTracker))); }
public void OnTextViewOpened_ForRazorTextBuffer_AddsTextViewToTracker() { // Arrange var textView = Mock.Of <ITextView>(); var buffers = new Collection <ITextBuffer>() { Mock.Of <ITextBuffer>(b => b.ContentType == RazorCoreContentType && b.Properties == new PropertyCollection()), }; var documentTracker = new DefaultVisualStudioDocumentTracker(Dispatcher, FilePath, ProjectPath, ProjectManager, WorkspaceEditorSettings, Workspace, buffers[0], ImportDocumentManager) as VisualStudioDocumentTracker; var editorFactoryService = Mock.Of <RazorEditorFactoryService>(factoryService => factoryService.TryGetDocumentTracker(It.IsAny <ITextBuffer>(), out documentTracker) == true); var documentManager = new DefaultRazorDocumentManager(Dispatcher, editorFactoryService); // Act documentManager.OnTextViewOpened(textView, buffers); // Assert Assert.Collection(documentTracker.TextViews, v => Assert.Same(v, textView)); }
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)); }
public void OnTextViewOpened_SubscribesAfterFirstTextViewOpened() { // Arrange var textView = Mock.Of <ITextView>(); var buffers = new Collection <ITextBuffer>() { Mock.Of <ITextBuffer>(b => b.ContentType == RazorCoreContentType && b.Properties == new PropertyCollection()), Mock.Of <ITextBuffer>(b => b.ContentType == NonRazorCoreContentType && b.Properties == new PropertyCollection()), }; var documentTracker = new DefaultVisualStudioDocumentTracker(Dispatcher, FilePath, ProjectPath, ProjectManager, WorkspaceEditorSettings, Workspace, buffers[0], ImportDocumentManager) as VisualStudioDocumentTracker; var editorFactoryService = Mock.Of <RazorEditorFactoryService>(f => f.TryGetDocumentTracker(It.IsAny <ITextBuffer>(), out documentTracker) == true); var documentManager = new DefaultRazorDocumentManager(Dispatcher, editorFactoryService); // Assert 1 Assert.False(documentTracker.IsSupportedProject); // Act documentManager.OnTextViewOpened(textView, buffers); // Assert 2 Assert.True(documentTracker.IsSupportedProject); }