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);
        }
Ejemplo n.º 3
0
        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)));
        }
Ejemplo n.º 5
0
        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)));
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 8
0
        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);
        }