public void ErrorListInfoBarController_InfoBar_ClickButton_MoreThanOnce() { // Arrange this.SetBindingMode(SonarLintMode.LegacyConnected); var testSubject = new ErrorListInfoBarController(this.host, this.unboundProjectFinder); this.ConfigureLoadedSolution(); int bindCommandExecuted = 0; ConfigurableSectionController section = this.ConfigureActiveSectionWithBindCommand(args => { bindCommandExecuted++; }); this.ConfigureProjectViewModel(section); testSubject.Refresh(); RunAsyncAction(); this.stateManager.SetAndInvokeBusyChanged(true); // Sanity ConfigurableInfoBar infoBar = this.infoBarManager.AssertHasAttachedInfoBar(ErrorListInfoBarController.ErrorListToolWindowGuid); VerifyInfoBar(infoBar); this.teamExplorerController.ShowConnectionsPageCallsCount.Should().Be(0); // Act (command enabled) infoBar.SimulateButtonClickEvent(); // Assert this.teamExplorerController.ShowConnectionsPageCallsCount.Should().Be(1); // Act (click again) infoBar.SimulateButtonClickEvent(); // Assert this.teamExplorerController.ShowConnectionsPageCallsCount.Should().Be(1); this.infoBarManager.AssertHasAttachedInfoBar(ErrorListInfoBarController.ErrorListToolWindowGuid); infoBar.VerifyAllEventsRegistered(); // Should be usable // Act (not busy anymore) this.stateManager.SetAndInvokeBusyChanged(false); // Assert this.teamExplorerController.ShowConnectionsPageCallsCount.Should().Be(1); this.infoBarManager.AssertHasNoAttachedInfoBar(ErrorListInfoBarController.ErrorListToolWindowGuid); infoBar.VerifyAllEventsUnregistered(); bindCommandExecuted.Should().Be(1, "Expecting the command to be executed only once"); }
public void ErrorListInfoBarController_InfoBar_ClickButton_MoreThanOnce() { // Setup this.IsActiveSolutionBound = true; var testSubject = new ErrorListInfoBarController(this.host); this.ConfigureLoadedSolution(); int bindCommandExecuted = 0; ConfigurableSectionController section = this.ConfigureActiveSectionWithBindCommand(vm => { bindCommandExecuted++; }); this.ConfigureProjectViewModel(section); testSubject.Refresh(); RunAsyncAction(); this.stateManager.SetAndInvokeBusyChanged(true); // Sanity ConfigurableInfoBar infoBar = this.infoBarManager.AssertHasAttachedInfoBar(ErrorListInfoBarController.ErrorListToolWindowGuid); VerifyInfoBar(infoBar); this.teamExplorerController.AssertExpectedNumCallsShowConnectionsPage(0); // Act (command enabled) infoBar.SimulateButtonClickEvent(); // Verify this.teamExplorerController.AssertExpectedNumCallsShowConnectionsPage(1); // Act (click again) infoBar.SimulateButtonClickEvent(); // Verify this.teamExplorerController.AssertExpectedNumCallsShowConnectionsPage(1); this.infoBarManager.AssertHasAttachedInfoBar(ErrorListInfoBarController.ErrorListToolWindowGuid); infoBar.VerifyAllEventsRegistered(); // Should be usable // Act (not busy anymore) this.stateManager.SetAndInvokeBusyChanged(false); // Verify this.teamExplorerController.AssertExpectedNumCallsShowConnectionsPage(1); this.infoBarManager.AssertHasNoAttachedInfoBar(ErrorListInfoBarController.ErrorListToolWindowGuid); infoBar.VerifyAllEventsUnregistered(); Assert.AreEqual(1, bindCommandExecuted, "Expecting the command to be executed only once"); }
public void ErrorListInfoBarController_InfoBar_ClickButton_HasActiveSection_WasBusyAndSectionClosed() { // Arrange this.IsActiveSolutionBound = true; var testSubject = new ErrorListInfoBarController(this.host); this.ConfigureLoadedSolution(); int executed = 0; ProjectViewModel project = null; ConfigurableSectionController section = this.ConfigureActiveSectionWithBindCommand(vm => { executed++; vm.Should().Be(project); }); project = this.ConfigureProjectViewModel(section); testSubject.Refresh(); RunAsyncAction(); this.stateManager.SetAndInvokeBusyChanged(true); // Sanity ConfigurableInfoBar infoBar = this.infoBarManager.AssertHasAttachedInfoBar(ErrorListInfoBarController.ErrorListToolWindowGuid); VerifyInfoBar(infoBar); this.teamExplorerController.ShowConnectionsPageCallsCount.Should().Be(0); // Act (command enabled) infoBar.SimulateButtonClickEvent(); // Assert executed.Should().Be(0, "Busy, should not be executed"); // Act (close the current section) this.host.ClearActiveSection(); this.stateManager.SetAndInvokeBusyChanged(false); RunAsyncAction(); // Assert executed.Should().Be(0, "Update was not expected to be executed since there is not ActiveSection"); this.infoBarManager.AssertHasAttachedInfoBar(ErrorListInfoBarController.ErrorListToolWindowGuid); infoBar.VerifyAllEventsRegistered(); // Should be usable }
public void ErrorListInfoBarController_InfoBar_ClickButton_HasDisconnectedActiveSection_ConnectCommandIsBusy() { // Arrange this.SetBindingMode(SonarLintMode.LegacyConnected); var testSubject = new ErrorListInfoBarController(this.host, this.unboundProjectFinder); this.ConfigureLoadedSolution(); int bindingCalled = 0; ProjectViewModel project = null; this.ConfigureActiveSectionWithBindCommand(args => { bindingCalled++; args.ProjectKey.Should().Be(project.Key); args.ProjectName.Should().Be(project.ProjectName); }); int refreshCalled = 0; this.ConfigureActiveSectionWithRefreshCommand(connection => { refreshCalled++; }, connection => false); testSubject.Refresh(); RunAsyncAction(); this.outputWindowPane.Reset(); // Sanity ConfigurableInfoBar infoBar = this.infoBarManager.AssertHasAttachedInfoBar(ErrorListInfoBarController.ErrorListToolWindowGuid); VerifyInfoBar(infoBar); // Act (kick off connection) infoBar.SimulateButtonClickEvent(); // Assert refreshCalled.Should().Be(0, "Expected to connect once"); bindingCalled.Should().Be(0, "Not expected to bind yet"); this.outputWindowPane.AssertOutputStrings(1); infoBar.VerifyAllEventsRegistered(); this.infoBarManager.AssertHasAttachedInfoBar(ErrorListInfoBarController.ErrorListToolWindowGuid); }
public void ErrorListInfoBarController_InfoBar_ClickButton_HasDisconnectedActiveSection_ConnectCommandIsBusy() { // Setup this.IsActiveSolutionBound = true; var testSubject = new ErrorListInfoBarController(this.host); this.ConfigureLoadedSolution(); int bindingCalled = 0; ProjectViewModel project = null; this.ConfigureActiveSectionWithBindCommand(vm => { bindingCalled++; Assert.AreSame(project, vm); }); int refreshCalled = 0; this.ConfigureActiveSectionWithRefreshCommand(connection => { refreshCalled++; }, connection => false); testSubject.Refresh(); RunAsyncAction(); this.outputWindowPane.Reset(); // Sanity ConfigurableInfoBar infoBar = this.infoBarManager.AssertHasAttachedInfoBar(ErrorListInfoBarController.ErrorListToolWindowGuid); VerifyInfoBar(infoBar); // Act (kick off connection) infoBar.SimulateButtonClickEvent(); // Verify Assert.AreEqual(0, refreshCalled, "Expected to connect once"); Assert.AreEqual(0, bindingCalled, "Not expected to bind yet"); this.outputWindowPane.AssertOutputStrings(1); infoBar.VerifyAllEventsRegistered(); this.infoBarManager.AssertHasAttachedInfoBar(ErrorListInfoBarController.ErrorListToolWindowGuid); }