Exemplo n.º 1
0
        public async Task TryInitializeToolWindowAsync_ViewModelInitializationSucceeds_Async()
        {
            // Arrange
            var project = new SqlProject("a", "b", "c");
            var vsaMock = new Mock <IVisualStudioAccess>();

            vsaMock.Setup(m => m.GetSelectedSqlProject()).Returns(project);
            var loggerMock = Mock.Of <ILogger>();
            var spMock     = Mock.Of <IServiceProvider>();
            var cs         = new OleMenuCommandService(spMock);
            var dr         = new DependencyResolver(vsaMock.Object, loggerMock, cs);
            var twi        = new ToolWindowInitializer(vsaMock.Object, dr);
            var viewMock   = new Mock <IView>();
            var windowMock = new Mock <IVisualStudioToolWindow>();

            windowMock.SetupGet(m => m.Content).Returns(viewMock.Object);

            // Act
            var(success, fullProjectPath) = await twi.TryInitializeToolWindowAsync <ViewModelBaseTestImplementationWithSuccessfulInitialization>(windowMock.Object);

            // Assert
            Assert.IsTrue(success);
            Assert.AreEqual("b", fullProjectPath);
            viewMock.Verify(m => m.SetDataContext(It.Is <IViewModel>(model => model != null && model.GetType() == typeof(ViewModelBaseTestImplementationWithSuccessfulInitialization))));
        }
Exemplo n.º 2
0
        public void TryInitializeToolWindowAsync_ArgumentNullException_Window()
        {
            // Arrange
            var vsaMock    = Mock.Of <IVisualStudioAccess>();
            var loggerMock = Mock.Of <ILogger>();
            var spMock     = Mock.Of <IServiceProvider>();
            var cs         = new OleMenuCommandService(spMock);
            var dr         = new DependencyResolver(vsaMock, loggerMock, cs);
            var twi        = new ToolWindowInitializer(vsaMock, dr);

            // Act & Assert
            // ReSharper disable once AssignNullToNotNullAttribute
            Assert.Throws <ArgumentNullException>(() => twi.TryInitializeToolWindowAsync <ViewModelBaseTestImplementationWithSuccessfulInitialization>(null));
        }
Exemplo n.º 3
0
        public async Task TryInitializeToolWindowAsync_NoProjectSelected_Async()
        {
            // Arrange
            var vsaMock = new Mock <IVisualStudioAccess>();

            vsaMock.Setup(m => m.GetSelectedSqlProject()).Returns(null as SqlProject);
            var loggerMock = Mock.Of <ILogger>();
            var spMock     = Mock.Of <IServiceProvider>();
            var cs         = new OleMenuCommandService(spMock);
            var dr         = new DependencyResolver(vsaMock.Object, loggerMock, cs);
            var twi        = new ToolWindowInitializer(vsaMock.Object, dr);
            var windowMock = Mock.Of <IVisualStudioToolWindow>();

            // Act
            var(success, fullProjectPath) = await twi.TryInitializeToolWindowAsync <ViewModelBaseTestImplementationWithSuccessfulInitialization>(windowMock);

            // Assert
            Assert.IsFalse(success);
            Assert.IsNull(fullProjectPath);
        }
Exemplo n.º 4
0
        public async Task TryInitializeToolWindowAsync_WindowContentIsNoView_Async()
        {
            // Arrange
            var project = new SqlProject("a", "b", "c");
            var vsaMock = new Mock <IVisualStudioAccess>();

            vsaMock.Setup(m => m.GetSelectedSqlProject()).Returns(project);
            var loggerMock = Mock.Of <ILogger>();
            var spMock     = Mock.Of <IServiceProvider>();
            var cs         = new OleMenuCommandService(spMock);
            var dr         = new DependencyResolver(vsaMock.Object, loggerMock, cs);
            var twi        = new ToolWindowInitializer(vsaMock.Object, dr);
            var windowMock = new Mock <IVisualStudioToolWindow>();

            windowMock.SetupGet(m => m.Content).Returns(null as object);

            // Act
            var(success, fullProjectPath) = await twi.TryInitializeToolWindowAsync <ViewModelBaseTestImplementationWithExceptionInitialization>(windowMock.Object);

            // Assert
            Assert.IsTrue(success);
            Assert.AreEqual("b", fullProjectPath);
        }
        protected override void Execute(object sender,
                                        EventArgs e)
        {
            _package.JoinableTaskFactory.RunAsync(async delegate
            {
                if (!(await _package.ShowToolWindowAsync(typeof(TWindow), 0, true, _package.DisposalToken) is TWindow window) ||
                    window.Frame == null)
                {
                    throw new NotSupportedException("Cannot create tool window");
                }

                await _package.JoinableTaskFactory.SwitchToMainThreadAsync();

                var(success, fullProjectPath) = await _toolWindowInitializer.TryInitializeToolWindowAsync <TViewModel>(window);
                if (!success)
                {
                    return;
                }

                // Show the frame
                var windowFrame = (IVsWindowFrame)window.Frame;
                _package.RegisterWindowFrame(fullProjectPath, windowFrame);
                Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(windowFrame.Show());
            });