Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs =================================================================== diff -u -rdd8e88b95bba050bd07df08907e03b88673e433c -r22e74c93c1d64ba15968ffd29bfdd6e1e79b84e3 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs) (revision dd8e88b95bba050bd07df08907e03b88673e433c) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs) (revision 22e74c93c1d64ba15968ffd29bfdd6e1e79b84e3) @@ -326,7 +326,7 @@ } [Test] - public void ContextMenuStrip_FailureMechanismSetHydraulicBoundaryDatabaseNotValid_ContextMenuItemPerformCalculationDisabledAndTooltipSet() + public void ContextMenuStrip_FailureMechanismSectionsSetHydraulicBoundaryDatabaseNotValid_ContextMenuItemPerformCalculationDisabledAndTooltipSet() { // Setup var guiMock = mocks.StrictMock(); Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -r4936ea40e490dd8a3ed500e1c5a8f8390ff31491 -r22e74c93c1d64ba15968ffd29bfdd6e1e79b84e3 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs) (revision 4936ea40e490dd8a3ed500e1c5a8f8390ff31491) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs) (revision 22e74c93c1d64ba15968ffd29bfdd6e1e79b84e3) @@ -334,13 +334,13 @@ } [Test] - public void ContextMenuStrip_NoFailureMechanismSections_ReturnContextMenuDisabledAndTooltipSet() + public void ContextMenuStrip_NoFailureMechanismSections_ContextMenuItemCalculateAllDisabledAndTooltipSet() { // Setup var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); var assessmentSectionMock = mocks.StrictMock(); - var group = new CalculationGroup() + var group = new CalculationGroup { Children = { @@ -369,7 +369,7 @@ ContextMenuStrip menu = info.ContextMenuStrip(nodeData, null, treeViewControlMock); // Assert - TestHelper.AssertContextMenuStripContainsItem(menu, 5, + TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuClearAllIndexRootGroup, RingtoetsFormsResources.Calculate_all, Resources.GrassCoverErosionInwardsGuiPlugin_AllDataAvailable_No_failure_mechanism_sections_imported, RingtoetsFormsResources.CalculateAllIcon, @@ -378,10 +378,10 @@ } [Test] - public void ContextMenuStrip_FailureMechanismSectionsSetNoHydraulicBoundaryDatabase_ContextMenuItemDisabledAndTooltipSet() + public void ContextMenuStrip_FailureMechanismSectionsSetNoHydraulicBoundaryDatabase_ContextMenuItemCalculateAllDisabledAndTooltipSet() { // Setup - var group = new CalculationGroup() + var group = new CalculationGroup { Children = { @@ -394,8 +394,9 @@ { new Point2D(0, 0) })); - failureMechanism.CalculationsGroup.Children.Add( - new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), new NormProbabilityInput())); + failureMechanism.CalculationsGroup.Children.Add(new GrassCoverErosionInwardsCalculation( + new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityInput())); var assessmentSectionMock = mocks.StrictMock(); assessmentSectionMock.Stub(asm => asm.HydraulicBoundaryDatabase).Return(null); @@ -421,20 +422,20 @@ var contextMenu = info.ContextMenuStrip(nodeData, null, treeViewControlMock); // Assert - mocks.VerifyAll(); // Expect no calls on arguments - - TestHelper.AssertContextMenuStripContainsItem(contextMenu, 5, + TestHelper.AssertContextMenuStripContainsItem(contextMenu, contextMenuClearAllIndexRootGroup, RingtoetsFormsResources.Calculate_all, Resources.GrassCoverErosionInwardsGuiPlugin_AllDataAvailable_No_hydraulic_boundary_database_imported, RingtoetsFormsResources.CalculateAllIcon, false); + + mocks.VerifyAll(); } [Test] - public void ContextMenuStrip_FailureMechanismSetHydraulicBoundaryDatabaseNotValid_ContextMenuItemDisabledAndTooltipSet() + public void ContextMenuStrip_FailureMechanismSectionsSetHydraulicBoundaryDatabaseNotValid_ContextMenuItemCalculateAllDisabledAndTooltipSet() { // Setup - var group = new CalculationGroup() + var group = new CalculationGroup { Children = { @@ -447,8 +448,9 @@ { new Point2D(0, 0) })); - failureMechanism.CalculationsGroup.Children.Add( - new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), new NormProbabilityInput())); + failureMechanism.CalculationsGroup.Children.Add(new GrassCoverErosionInwardsCalculation( + new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityInput())); var assessmentSectionMock = mocks.StrictMock(); assessmentSectionMock.Stub(asm => asm.HydraulicBoundaryDatabase).Return(new HydraulicBoundaryDatabase()); @@ -474,21 +476,21 @@ ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, null, treeViewControlMock); // Assert - mocks.VerifyAll(); // Expect no calls on arguments + ToolStripItem contextMenuItem = contextMenu.Items[contextMenuClearAllIndexRootGroup]; - ToolStripItem contextMenuItem = contextMenu.Items[5]; - Assert.AreEqual(RingtoetsFormsResources.Calculate_all, contextMenuItem.Text); StringAssert.Contains(string.Format(RingtoetsFormsResources.GuiPlugin_VerifyHydraulicBoundaryDatabasePath_Hydraulic_boundary_database_connection_failed_0_, ""), contextMenuItem.ToolTipText); TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, contextMenuItem.Image); Assert.IsFalse(contextMenuItem.Enabled); + + mocks.VerifyAll(); } [Test] - public void ContextMenuStrip_FailureMechanismSectionsAndHydraulicDatabaseSet_ReturnContextMenuWithCalculateAllEnabled() + public void ContextMenuStrip_FailureMechanismSectionsAndHydraulicDatabaseSet_ContextMenuItemCalculateAllEnabled() { // Setup - var group = new CalculationGroup() + var group = new CalculationGroup { Children = { @@ -509,8 +511,9 @@ { new Point2D(0, 0) })); - failureMechanism.CalculationsGroup.Children.Add( - new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), new NormProbabilityInput())); + failureMechanism.CalculationsGroup.Children.Add(new GrassCoverErosionInwardsCalculation( + new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityInput())); var assessmentSectionMock = mocks.StrictMock(); assessmentSectionMock.Stub(asm => asm.HydraulicBoundaryDatabase).Return(hydraulicBoundaryDatabase); @@ -536,7 +539,7 @@ ContextMenuStrip menu = info.ContextMenuStrip(nodeData, null, treeViewControlMock); // Assert - TestHelper.AssertContextMenuStripContainsItem(menu, 5, + TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuClearAllIndexRootGroup, RingtoetsFormsResources.Calculate_all, RingtoetsFormsResources.CalculationGroup_CalculateAll_ToolTip, RingtoetsFormsResources.CalculateIcon); Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/TreeNodeInfos/HeightStructuresCalculationContextTreeNodeInfoTest.cs =================================================================== diff -u -rdd8e88b95bba050bd07df08907e03b88673e433c -r22e74c93c1d64ba15968ffd29bfdd6e1e79b84e3 --- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/TreeNodeInfos/HeightStructuresCalculationContextTreeNodeInfoTest.cs (.../HeightStructuresCalculationContextTreeNodeInfoTest.cs) (revision dd8e88b95bba050bd07df08907e03b88673e433c) +++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/TreeNodeInfos/HeightStructuresCalculationContextTreeNodeInfoTest.cs (.../HeightStructuresCalculationContextTreeNodeInfoTest.cs) (revision 22e74c93c1d64ba15968ffd29bfdd6e1e79b84e3) @@ -316,7 +316,7 @@ } [Test] - public void ContextMenuStrip_FailureMechanismSetHydraulicBoundaryDatabaseNotValid_ContextMenuItemPerformCalculationDisabledAndTooltipSet() + public void ContextMenuStrip_FailureMechanismSectionsSetHydraulicBoundaryDatabaseNotValid_ContextMenuItemPerformCalculationDisabledAndTooltipSet() { // Setup var guiMock = mocks.StrictMock(); Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/TreeNodeInfos/HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -r7ddd944b70d252ae493bba48ea9b31c01634082d -r22e74c93c1d64ba15968ffd29bfdd6e1e79b84e3 --- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/TreeNodeInfos/HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs (.../HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs) (revision 7ddd944b70d252ae493bba48ea9b31c01634082d) +++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/TreeNodeInfos/HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs (.../HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs) (revision 22e74c93c1d64ba15968ffd29bfdd6e1e79b84e3) @@ -19,21 +19,28 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System.IO; using System.Linq; using System.Windows.Forms; using Core.Common.Base; +using Core.Common.Base.Geometry; using Core.Common.Controls.TreeView; using Core.Common.Gui; +using Core.Common.Gui.Commands; using Core.Common.Gui.ContextMenu; using Core.Common.Gui.TestUtil.ContextMenu; using Core.Common.TestUtil; using NUnit.Framework; using Rhino.Mocks; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; +using Ringtoets.Common.Data.FailureMechanism; +using Ringtoets.Common.Data.Probability; using Ringtoets.HeightStructures.Data; using Ringtoets.HeightStructures.Forms.PresentationObjects; using Ringtoets.HeightStructures.Plugin; +using Ringtoets.HeightStructures.Plugin.Properties; +using Ringtoets.HydraRing.Data; using CoreCommonGuiResources = Core.Common.Gui.Properties.Resources; using RingtoetsFormsResources = Ringtoets.Common.Forms.Properties.Resources; @@ -42,6 +49,8 @@ [TestFixture] public class HeightStructuresCalculationGroupContextTreeNodeInfoTest { + private readonly string testDataPath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.HydraRing.IO, "HydraulicBoundaryLocationReader"); + private IGui guiMock; private TreeNodeInfo info; private MockRepository mocks; @@ -325,6 +334,219 @@ } [Test] + public void ContextMenuStrip_NoFailureMechanismSections_ContextMenuItemCalculateAllDisabledAndTooltipSet() + { + // Setup + var failureMechanism = new HeightStructuresFailureMechanism(); + var assessmentSectionMock = mocks.StrictMock(); + + var group = new CalculationGroup + { + Children = + { + new HeightStructuresCalculation(new GeneralHeightStructuresInput(), new NormProbabilityInput()) + } + }; + + var nodeData = new HeightStructuresCalculationGroupContext(group, + failureMechanism, + assessmentSectionMock); + + var applicationFeatureCommandHandlerStub = mocks.Stub(); + var exportImportHandlerStub = mocks.Stub(); + var viewCommandsHandlerMock = mocks.StrictMock(); + var treeViewControlMock = mocks.StrictMock(); + + var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandlerStub, exportImportHandlerStub, viewCommandsHandlerMock, nodeData, treeViewControlMock); + guiMock.Expect(g => g.Get(nodeData, treeViewControlMock)).Return(menuBuilder); + + treeViewControlMock.Expect(tvc => tvc.CanExpandOrCollapseForData(nodeData)).Repeat.Twice().Return(false); + viewCommandsHandlerMock.Expect(vc => vc.CanOpenViewFor(nodeData)).Return(false); + + mocks.ReplayAll(); + + // Call + ContextMenuStrip menu = info.ContextMenuStrip(nodeData, null, treeViewControlMock); + + // Assert + TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuClearAllIndexRootGroup, + RingtoetsFormsResources.Calculate_all, + Resources.HeightStructuresGuiPlugin_AllDataAvailable_No_failure_mechanism_sections_imported, + RingtoetsFormsResources.CalculateAllIcon, + false); + mocks.VerifyAll(); + } + + [Test] + public void ContextMenuStrip_FailureMechanismSectionsSetNoHydraulicBoundaryDatabase_ContextMenuItemCalculateAllDisabledAndTooltipSet() + { + // Setup + var group = new CalculationGroup + { + Children = + { + new HeightStructuresCalculation(new GeneralHeightStructuresInput(), new NormProbabilityInput()) + } + }; + + var failureMechanism = new HeightStructuresFailureMechanism(); + failureMechanism.AddSection(new FailureMechanismSection("test", new[] + { + new Point2D(0, 0) + })); + failureMechanism.CalculationsGroup.Children.Add(new HeightStructuresCalculation( + new GeneralHeightStructuresInput(), + new NormProbabilityInput())); + + var assessmentSectionMock = mocks.StrictMock(); + assessmentSectionMock.Stub(asm => asm.HydraulicBoundaryDatabase).Return(null); + + var nodeData = new HeightStructuresCalculationGroupContext(group, + failureMechanism, + assessmentSectionMock); + + var applicationFeatureCommandHandlerStub = mocks.Stub(); + var exportImportHandlerStub = mocks.Stub(); + var viewCommandsHandlerMock = mocks.StrictMock(); + var treeViewControlMock = mocks.StrictMock(); + + var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandlerStub, exportImportHandlerStub, viewCommandsHandlerMock, nodeData, treeViewControlMock); + guiMock.Expect(g => g.Get(nodeData, treeViewControlMock)).Return(menuBuilder); + + treeViewControlMock.Expect(tvc => tvc.CanExpandOrCollapseForData(nodeData)).Repeat.Twice().Return(false); + viewCommandsHandlerMock.Expect(vc => vc.CanOpenViewFor(nodeData)).Return(false); + + mocks.ReplayAll(); + + // Call + var contextMenu = info.ContextMenuStrip(nodeData, null, treeViewControlMock); + + // Assert + TestHelper.AssertContextMenuStripContainsItem(contextMenu, contextMenuClearAllIndexRootGroup, + RingtoetsFormsResources.Calculate_all, + Resources.HeightStructuresGuiPlugin_AllDataAvailable_No_hydraulic_boundary_database_imported, + RingtoetsFormsResources.CalculateAllIcon, + false); + + mocks.VerifyAll(); + } + + [Test] + public void ContextMenuStrip_FailureMechanismSectionsSetHydraulicBoundaryDatabaseNotValid_ContextMenuItemCalculateAllDisabledAndTooltipSet() + { + // Setup + var group = new CalculationGroup + { + Children = + { + new HeightStructuresCalculation(new GeneralHeightStructuresInput(), new NormProbabilityInput()) + } + }; + + var failureMechanism = new HeightStructuresFailureMechanism(); + failureMechanism.AddSection(new FailureMechanismSection("test", new[] + { + new Point2D(0, 0) + })); + failureMechanism.CalculationsGroup.Children.Add(new HeightStructuresCalculation( + new GeneralHeightStructuresInput(), + new NormProbabilityInput())); + + var assessmentSectionMock = mocks.StrictMock(); + assessmentSectionMock.Stub(asm => asm.HydraulicBoundaryDatabase).Return(new HydraulicBoundaryDatabase()); + + var nodeData = new HeightStructuresCalculationGroupContext(group, + failureMechanism, + assessmentSectionMock); + + var applicationFeatureCommandHandlerStub = mocks.Stub(); + var exportImportHandlerStub = mocks.Stub(); + var viewCommandsHandlerMock = mocks.StrictMock(); + var treeViewControlMock = mocks.StrictMock(); + + var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandlerStub, exportImportHandlerStub, viewCommandsHandlerMock, nodeData, treeViewControlMock); + guiMock.Expect(g => g.Get(nodeData, treeViewControlMock)).Return(menuBuilder); + + treeViewControlMock.Expect(tvc => tvc.CanExpandOrCollapseForData(nodeData)).Repeat.Twice().Return(false); + viewCommandsHandlerMock.Expect(vc => vc.CanOpenViewFor(nodeData)).Return(false); + + mocks.ReplayAll(); + + // Call + ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, null, treeViewControlMock); + + // Assert + ToolStripItem contextMenuItem = contextMenu.Items[contextMenuClearAllIndexRootGroup]; + + Assert.AreEqual(RingtoetsFormsResources.Calculate_all, contextMenuItem.Text); + StringAssert.Contains(string.Format(RingtoetsFormsResources.GuiPlugin_VerifyHydraulicBoundaryDatabasePath_Hydraulic_boundary_database_connection_failed_0_, ""), contextMenuItem.ToolTipText); + TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, contextMenuItem.Image); + Assert.IsFalse(contextMenuItem.Enabled); + + mocks.VerifyAll(); + } + + [Test] + public void ContextMenuStrip_FailureMechanismSectionsAndHydraulicDatabaseSet_ContextMenuItemCalculateAllEnabled() + { + // Setup + var group = new CalculationGroup + { + Children = + { + new HeightStructuresCalculation(new GeneralHeightStructuresInput(), new NormProbabilityInput()) + } + }; + + string validFilePath = Path.Combine(testDataPath, "complete.sqlite"); + + var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase + { + FilePath = validFilePath, + Version = "1.0" + }; + + var failureMechanism = new HeightStructuresFailureMechanism(); + failureMechanism.AddSection(new FailureMechanismSection("test", new[] + { + new Point2D(0, 0) + })); + failureMechanism.CalculationsGroup.Children.Add(new HeightStructuresCalculation( + new GeneralHeightStructuresInput(), + new NormProbabilityInput())); + + var assessmentSectionMock = mocks.StrictMock(); + assessmentSectionMock.Stub(asm => asm.HydraulicBoundaryDatabase).Return(hydraulicBoundaryDatabase); + + var nodeData = new HeightStructuresCalculationGroupContext(group, + failureMechanism, + assessmentSectionMock); + + var applicationFeatureCommandHandlerStub = mocks.Stub(); + var exportImportHandlerStub = mocks.Stub(); + var viewCommandsHandlerMock = mocks.StrictMock(); + var treeViewControlMock = mocks.StrictMock(); + + var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandlerStub, exportImportHandlerStub, viewCommandsHandlerMock, nodeData, treeViewControlMock); + guiMock.Expect(g => g.Get(nodeData, treeViewControlMock)).Return(menuBuilder); + + treeViewControlMock.Expect(tvc => tvc.CanExpandOrCollapseForData(nodeData)).Repeat.Twice().Return(false); + viewCommandsHandlerMock.Expect(vc => vc.CanOpenViewFor(nodeData)).Return(false); + + mocks.ReplayAll(); + + // Call + ContextMenuStrip menu = info.ContextMenuStrip(nodeData, null, treeViewControlMock); + + // Assert + TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuClearAllIndexRootGroup, + RingtoetsFormsResources.Calculate_all, + RingtoetsFormsResources.CalculationGroup_CalculateAll_ToolTip, + RingtoetsFormsResources.CalculateIcon); + mocks.VerifyAll(); + } + + [Test] public void ContextMenuStrip_ClickOnAddGroupItem_AddGroupToCalculationGroupAndNotifyObservers() { // Setup