Index: Riskeer/Piping/src/Riskeer.Piping.Plugin/PipingPlugin.cs =================================================================== diff -u -r2849eb49b3a91e71c9a1461c7b56b73e620ac2c2 -rb8bbce90a34a6151936f76d2d03bc8e603ab53d8 --- Riskeer/Piping/src/Riskeer.Piping.Plugin/PipingPlugin.cs (.../PipingPlugin.cs) (revision 2849eb49b3a91e71c9a1461c7b56b73e620ac2c2) +++ Riskeer/Piping/src/Riskeer.Piping.Plugin/PipingPlugin.cs (.../PipingPlugin.cs) (revision b8bbce90a34a6151936f76d2d03bc8e603ab53d8) @@ -892,7 +892,7 @@ CreateClearCalculationOutputChangeHandler(calculations, inquiryHelper, viewCommands)) .AddClearIllustrationPointsOfCalculationsInFailureMechanismItem( () => ProbabilisticPipingIllustrationPointsHelper.HasIllustrationPoints(probabilisticCalculations), - CreateIllustrationPointsChangeHandler(inquiryHelper, probabilisticCalculations)) + CreateIllustrationPointsChangeHandler(probabilisticCalculations, inquiryHelper, viewCommands)) .AddSeparator() .AddCollapseAllItem() .AddExpandAllItem() @@ -1057,7 +1057,7 @@ CreateClearCalculationOutputChangeHandler(calculations, inquiryHelper, viewCommands)) .AddClearIllustrationPointsOfCalculationsInGroupItem( () => ProbabilisticPipingIllustrationPointsHelper.HasIllustrationPoints(probabilisticCalculations), - CreateIllustrationPointsChangeHandler(inquiryHelper, probabilisticCalculations)); + CreateIllustrationPointsChangeHandler(probabilisticCalculations, inquiryHelper, viewCommands)); if (isNestedGroup) { @@ -1465,9 +1465,9 @@ } private static ClearIllustrationPointsOfProbabilisticPipingCalculationCollectionChangeHandler CreateIllustrationPointsChangeHandler( - IInquiryHelper inquiryHelper, IEnumerable calculations) + IEnumerable calculations, IInquiryHelper inquiryHelper, IViewCommands viewCommands) { - return new ClearIllustrationPointsOfProbabilisticPipingCalculationCollectionChangeHandler(inquiryHelper, calculations); + return new ClearIllustrationPointsOfProbabilisticPipingCalculationCollectionChangeHandler(calculations, inquiryHelper, viewCommands); } private static ClearPipingCalculationOutputChangeHandler CreateClearCalculationOutputChangeHandler( Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/TreeNodeInfos/PipingCalculationGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -r599caecd3749ba16226a4bd9dc3586d2f75dc3b6 -rb8bbce90a34a6151936f76d2d03bc8e603ab53d8 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/TreeNodeInfos/PipingCalculationGroupContextTreeNodeInfoTest.cs (.../PipingCalculationGroupContextTreeNodeInfoTest.cs) (revision 599caecd3749ba16226a4bd9dc3586d2f75dc3b6) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/TreeNodeInfos/PipingCalculationGroupContextTreeNodeInfoTest.cs (.../PipingCalculationGroupContextTreeNodeInfoTest.cs) (revision b8bbce90a34a6151936f76d2d03bc8e603ab53d8) @@ -863,141 +863,6 @@ } [Test] - public void ContextMenuStrip_CalculationGroupWithoutCalculations_ContextMenuItemClearIllustrationPointsDisabledAndToolTipSet() - { - // Setup - var nodeData = new PipingCalculationGroupContext(new CalculationGroup(), - null, - Enumerable.Empty(), - Enumerable.Empty(), - new PipingFailureMechanism(), - mocks.Stub()); - - using (var treeViewControl = new TreeViewControl()) - { - var gui = mocks.Stub(); - gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - gui.Stub(g => g.ViewCommands).Return(mocks.Stub()); - mocks.ReplayAll(); - - plugin.Gui = gui; - - // Call - using (ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, null, treeViewControl)) - { - // Assert - TestHelper.AssertContextMenuStripContainsItem(contextMenu, - contextMenuClearIllustrationPointsIndexRootGroup, - "Wis alle illustratiepunten...", - "Er zijn geen berekeningen met illustratiepunten om te wissen.", - RiskeerCommonFormsResources.ClearIllustrationPointsIcon, - false); - } - } - } - - [Test] - public void ContextMenuStrip_CalculationGroupCalculationsWithIllustrationPoints_ContextMenuClearIllustrationPointsEnabledAndToolTipSet() - { - // Setup - IPipingCalculationScenario probabilisticCalculation = new ProbabilisticPipingCalculationScenario - { - Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithIllustrationPoints() - }; - - IPipingCalculationScenario semiProbabilisticCalculation = new SemiProbabilisticPipingCalculationScenario(); - - var group = new CalculationGroup - { - Children = - { - probabilisticCalculation, - semiProbabilisticCalculation - } - }; - - var nodeData = new PipingCalculationGroupContext(group, - null, - Enumerable.Empty(), - Enumerable.Empty(), - new TestPipingFailureMechanism(), - mocks.Stub()); - - using (var treeViewControl = new TreeViewControl()) - { - var gui = mocks.Stub(); - gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - gui.Stub(g => g.ViewCommands).Return(mocks.Stub()); - mocks.ReplayAll(); - - plugin.Gui = gui; - - // Call - using (ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, null, treeViewControl)) - { - // Assert - TestHelper.AssertContextMenuStripContainsItem(contextMenu, - contextMenuClearIllustrationPointsIndexRootGroup, - "Wis alle illustratiepunten...", - "Wis alle berekende illustratiepunten binnen deze map met berekeningen.", - RiskeerCommonFormsResources.ClearIllustrationPointsIcon); - } - } - } - - [Test] - public void ContextMenuStrip_CalculationGroupCalculationsWithoutIllustrationPoints_ContextMenuClearIllustrationPointsDisabledAndToolTipSet() - { - // Setup - IPipingCalculationScenario probabilisticCalculation = new ProbabilisticPipingCalculationScenario - { - Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithoutIllustrationPoints() - }; - - IPipingCalculationScenario semiProbabilisticCalculation = new SemiProbabilisticPipingCalculationScenario(); - - var group = new CalculationGroup - { - Children = - { - probabilisticCalculation, - semiProbabilisticCalculation - } - }; - - var nodeData = new PipingCalculationGroupContext(group, - null, - Enumerable.Empty(), - Enumerable.Empty(), - new PipingFailureMechanism(), - mocks.Stub()); - using (var treeViewControl = new TreeViewControl()) - { - var gui = mocks.Stub(); - gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - gui.Stub(g => g.ViewCommands).Return(mocks.Stub()); - mocks.ReplayAll(); - - plugin.Gui = gui; - - // Call - using (ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, null, treeViewControl)) - { - // Assert - TestHelper.AssertContextMenuStripContainsItem(contextMenu, - contextMenuClearIllustrationPointsIndexRootGroup, - "Wis alle illustratiepunten...", - "Er zijn geen berekeningen met illustratiepunten om te wissen.", - RiskeerCommonFormsResources.ClearIllustrationPointsIcon, - false); - } - } - } - - [Test] public void ContextMenuStrip_ClickOnAddGroupItem_AddGroupToCalculationGroupAndNotifyObservers() { // Setup @@ -1891,60 +1756,158 @@ } [Test] - [TestCase(false)] - [TestCase(true)] - public void ContextMenuStrip_ClickOnIllustrationPointsItem_ClearIllustrationPointsChildCalculationsAndNotifyCalculationObservers(bool confirm) + public void ContextMenuStrip_CalculationGroupWithCalculationsContainingIllustrationPoints_ContextMenuItemClearIllustrationPointsEnabled() { // Setup - var calculation1Observer = mocks.StrictMock(); - var calculation2Observer = mocks.StrictMock(); - if (confirm) + var calculationWithIllustrationPoints = new ProbabilisticPipingCalculationScenario { - calculation1Observer.Expect(o => o.UpdateObserver()); - calculation2Observer.Expect(o => o.UpdateObserver()); + Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithIllustrationPoints() + }; + + var calculationWithOutput = new ProbabilisticPipingCalculationScenario + { + Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithoutIllustrationPoints() + }; + + var calculationGroup = new CalculationGroup + { + Children = + { + calculationWithIllustrationPoints, + calculationWithOutput, + new ProbabilisticPipingCalculationScenario() + } + }; + + IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(null, mocks, "invalidFilePath"); + + var nodeData = new PipingCalculationGroupContext(calculationGroup, + null, + Enumerable.Empty(), + Enumerable.Empty(), + new PipingFailureMechanism(), + assessmentSection); + + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + using (var treeViewControl = new TreeViewControl()) + { + var gui = mocks.Stub(); + gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); + gui.Stub(g => g.MainWindow).Return(mocks.Stub()); + gui.Stub(g => g.ViewCommands).Return(mocks.Stub()); + mocks.ReplayAll(); + + plugin.Gui = gui; + + using (ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, null, treeViewControl)) + { + // Call + ToolStripItem toolStripItem = contextMenu.Items[contextMenuClearIllustrationPointsIndexRootGroup]; + + // Assert + Assert.IsTrue(toolStripItem.Enabled); + } } + } - var pipingFailureMechanism = new PipingFailureMechanism(); - var assessmentSection = mocks.Stub(); + [Test] + public void ContextMenuStrip_CalculationGroupWithCalculationsWithoutIllustrationPoints_ContextMenuItemClearIllustrationPointsDisabled() + { + // Setup + var calculationWithOutput = new ProbabilisticPipingCalculationScenario + { + Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithoutIllustrationPoints() + }; - var calculation1 = new ProbabilisticPipingCalculationScenario + var calculationGroup = new CalculationGroup { - Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithIllustrationPoints() + Children = + { + calculationWithOutput, + new ProbabilisticPipingCalculationScenario() + } }; - calculation1.Attach(calculation1Observer); - var calculation2 = new ProbabilisticPipingCalculationScenario + IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(null, mocks, "invalidFilePath"); + + var nodeData = new PipingCalculationGroupContext(calculationGroup, + null, + Enumerable.Empty(), + Enumerable.Empty(), + new PipingFailureMechanism(), + assessmentSection); + + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + using (var treeViewControl = new TreeViewControl()) { + var gui = mocks.Stub(); + gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); + gui.Stub(g => g.MainWindow).Return(mocks.Stub()); + gui.Stub(g => g.ViewCommands).Return(mocks.Stub()); + mocks.ReplayAll(); + + plugin.Gui = gui; + + using (ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, null, treeViewControl)) + { + // Call + ToolStripItem toolStripItem = contextMenu.Items[contextMenuClearIllustrationPointsIndexRootGroup]; + + // Assert + Assert.IsFalse(toolStripItem.Enabled); + } + } + } + + [Test] + public void GivenCalculationsWithIllustrationPoints_WhenClearIllustrationPointsClickedAndAborted_ThenInquiryAndIllustrationPointsNotCleared() + { + // Given + var calculationWithIllustrationPoints = new ProbabilisticPipingCalculationScenario + { Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithIllustrationPoints() }; - calculation2.Attach(calculation2Observer); - var childGroup = new CalculationGroup(); - childGroup.Children.Add(calculation1); + var calculationWithOutput = new ProbabilisticPipingCalculationScenario + { + Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithoutIllustrationPoints() + }; - var emptyChildGroup = new CalculationGroup(); - var group = new CalculationGroup(); - var parentGroup = new CalculationGroup(); + var calculationGroup = new CalculationGroup + { + Children = + { + calculationWithIllustrationPoints, + calculationWithOutput, + new ProbabilisticPipingCalculationScenario() + } + }; - group.Children.Add(childGroup); - group.Children.Add(emptyChildGroup); - group.Children.Add(calculation2); + var calculationObserver = mocks.StrictMock(); + calculationWithIllustrationPoints.Attach(calculationObserver); - var nodeData = new PipingCalculationGroupContext(group, - parentGroup, + IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(null, mocks, "invalidFilePath"); + + var nodeData = new PipingCalculationGroupContext(calculationGroup, + null, Enumerable.Empty(), Enumerable.Empty(), - pipingFailureMechanism, + new PipingFailureMechanism(), assessmentSection); - var parentNodeData = new PipingCalculationGroupContext(parentGroup, - null, - Enumerable.Empty(), - Enumerable.Empty(), - pipingFailureMechanism, - assessmentSection); var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + var messageBoxText = ""; + DialogBoxHandler = (name, wnd) => + { + var helper = new MessageBoxTester(wnd); + messageBoxText = helper.Text; + + helper.ClickCancel(); + }; + using (var treeViewControl = new TreeViewControl()) { var gui = mocks.Stub(); @@ -1955,38 +1918,101 @@ plugin.Gui = gui; - string messageBoxTitle = null, messageBoxText = null; - DialogBoxHandler = (name, wnd) => + using (ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, null, treeViewControl)) { - var messageBox = new MessageBoxTester(wnd); + // When + contextMenu.Items[contextMenuClearIllustrationPointsIndexRootGroup].PerformClick(); - messageBoxText = messageBox.Text; - messageBoxTitle = messageBox.Title; + // Then + Assert.AreEqual("Weet u zeker dat u alle illustratiepunten wilt wissen?", messageBoxText); - if (confirm) - { - messageBox.ClickOk(); - } - else - { - messageBox.ClickCancel(); - } - }; + Assert.IsTrue(calculationWithOutput.HasOutput); + Assert.IsTrue(calculationWithIllustrationPoints.Output.ProfileSpecificOutput.HasGeneralResult); + Assert.IsTrue(calculationWithIllustrationPoints.Output.SectionSpecificOutput.HasGeneralResult); + } + } + } - using (ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, parentNodeData, treeViewControl)) + [Test] + public void GivenCalculationsWithIllustrationPoints_WhenClearIllustrationPointsClickedAndContinued_ThenInquiryAndViewsClosedAndIllustrationPointsCleared() + { + // Given + var calculationWithIllustrationPoints = new ProbabilisticPipingCalculationScenario + { + Output = new ProbabilisticPipingOutput( + PipingTestDataGenerator.GetRandomPartialProbabilisticFaultTreePipingOutput(), + PipingTestDataGenerator.GetRandomPartialProbabilisticFaultTreePipingOutput()) + }; + + var calculationWithOutput = new ProbabilisticPipingCalculationScenario + { + Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithoutIllustrationPoints() + }; + + var calculationGroup = new CalculationGroup + { + Children = { - // Call - contextMenu.Items[contextMenuClearIllustrationPointsIndexNestedGroup].PerformClick(); + calculationWithIllustrationPoints, + calculationWithOutput, + new ProbabilisticPipingCalculationScenario() + } + }; - // Assert - Assert.AreNotEqual(confirm, calculation1.Output.ProfileSpecificOutput.HasGeneralResult); - Assert.AreNotEqual(confirm, calculation1.Output.SectionSpecificOutput.HasGeneralResult); + var affectedCalculationObserver = mocks.StrictMock(); + affectedCalculationObserver.Expect(o => o.UpdateObserver()); + calculationWithIllustrationPoints.Attach(affectedCalculationObserver); - Assert.AreNotEqual(confirm, calculation2.Output.ProfileSpecificOutput.HasGeneralResult); - Assert.AreNotEqual(confirm, calculation2.Output.SectionSpecificOutput.HasGeneralResult); + var unaffectedCalculationObserver = mocks.StrictMock(); + calculationWithOutput.Attach(unaffectedCalculationObserver); - Assert.AreEqual("Bevestigen", messageBoxTitle); + IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(null, mocks, "invalidFilePath"); + + var nodeData = new PipingCalculationGroupContext(calculationGroup, + null, + Enumerable.Empty(), + Enumerable.Empty(), + new PipingFailureMechanism(), + assessmentSection); + + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + var messageBoxText = ""; + DialogBoxHandler = (name, wnd) => + { + var helper = new MessageBoxTester(wnd); + messageBoxText = helper.Text; + + helper.ClickOk(); + }; + + using (var treeViewControl = new TreeViewControl()) + { + var viewCommands = mocks.StrictMock(); + viewCommands.Expect(vc => vc.RemoveAllViewsForItem( + ((PartialProbabilisticFaultTreePipingOutput) calculationWithIllustrationPoints.Output.ProfileSpecificOutput).GeneralResult)); + viewCommands.Expect(vc => vc.RemoveAllViewsForItem( + ((PartialProbabilisticFaultTreePipingOutput) calculationWithIllustrationPoints.Output.SectionSpecificOutput).GeneralResult)); + + var gui = mocks.Stub(); + gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); + gui.Stub(g => g.MainWindow).Return(mocks.Stub()); + gui.Stub(g => g.ViewCommands).Return(viewCommands); + mocks.ReplayAll(); + + plugin.Gui = gui; + + using (ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, null, treeViewControl)) + { + // When + contextMenu.Items[contextMenuClearIllustrationPointsIndexRootGroup].PerformClick(); + + // Then Assert.AreEqual("Weet u zeker dat u alle illustratiepunten wilt wissen?", messageBoxText); + + Assert.IsTrue(calculationWithOutput.HasOutput); + Assert.IsFalse(calculationWithIllustrationPoints.Output.ProfileSpecificOutput.HasGeneralResult); + Assert.IsFalse(calculationWithIllustrationPoints.Output.SectionSpecificOutput.HasGeneralResult); } } } Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/TreeNodeInfos/PipingFailureMechanismContextTreeNodeInfoTest.cs =================================================================== diff -u -re7f5854c33b8287f3e52ff5f15872b2c0812e683 -rb8bbce90a34a6151936f76d2d03bc8e603ab53d8 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/TreeNodeInfos/PipingFailureMechanismContextTreeNodeInfoTest.cs (.../PipingFailureMechanismContextTreeNodeInfoTest.cs) (revision e7f5854c33b8287f3e52ff5f15872b2c0812e683) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/TreeNodeInfos/PipingFailureMechanismContextTreeNodeInfoTest.cs (.../PipingFailureMechanismContextTreeNodeInfoTest.cs) (revision b8bbce90a34a6151936f76d2d03bc8e603ab53d8) @@ -1234,12 +1234,14 @@ } [Test] - public void GivenCalculationsWithIllustrationPoints_WhenClearIllustrationPointsClickedAndContinued_ThenInquiryAndIllustrationPointsCleared() + public void GivenCalculationsWithIllustrationPoints_WhenClearIllustrationPointsClickedAndContinued_ThenInquiryAndViewsClosedAndIllustrationPointsCleared() { // Given var calculationWithIllustrationPoints = new ProbabilisticPipingCalculationScenario { - Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithIllustrationPoints() + Output = new ProbabilisticPipingOutput( + PipingTestDataGenerator.GetRandomPartialProbabilisticFaultTreePipingOutput(), + PipingTestDataGenerator.GetRandomPartialProbabilisticFaultTreePipingOutput()) }; var calculationWithOutput = new ProbabilisticPipingCalculationScenario @@ -1283,10 +1285,16 @@ using (var treeViewControl = new TreeViewControl()) { + var viewCommands = mocks.StrictMock(); + viewCommands.Expect(vc => vc.RemoveAllViewsForItem( + ((PartialProbabilisticFaultTreePipingOutput) calculationWithIllustrationPoints.Output.ProfileSpecificOutput).GeneralResult)); + viewCommands.Expect(vc => vc.RemoveAllViewsForItem( + ((PartialProbabilisticFaultTreePipingOutput) calculationWithIllustrationPoints.Output.SectionSpecificOutput).GeneralResult)); + var gui = mocks.Stub(); gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - gui.Stub(g => g.ViewCommands).Return(mocks.Stub()); + gui.Stub(g => g.ViewCommands).Return(viewCommands); mocks.ReplayAll(); plugin.Gui = gui;