Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs =================================================================== diff -u -re17e5b2635c772e29fb45610f10a3b4021ab7eaa -re19ddb72551e30d7d485a4374a3ca802f3140ff0 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs) (revision e17e5b2635c772e29fb45610f10a3b4021ab7eaa) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs) (revision e19ddb72551e30d7d485a4374a3ca802f3140ff0) @@ -121,9 +121,9 @@ Assert.IsNotNull(commentContext); Assert.AreSame(calculationContext.WrappedData, commentContext.CommentContainer); - var heightStructuresInputContext = children[1] as GrassCoverErosionInwardsInputContext; - Assert.IsNotNull(heightStructuresInputContext); - Assert.AreSame(calculationContext.WrappedData.InputParameters, heightStructuresInputContext.WrappedData); + var grassCoverErosionInwardsInputContext = children[1] as GrassCoverErosionInwardsInputContext; + Assert.IsNotNull(grassCoverErosionInwardsInputContext); + Assert.AreSame(calculationContext.WrappedData.InputParameters, grassCoverErosionInwardsInputContext.WrappedData); var emptyOutput = children[2] as EmptyGrassCoverErosionInwardsOutput; Assert.IsNotNull(emptyOutput); @@ -154,9 +154,9 @@ Assert.IsNotNull(commentContext); Assert.AreSame(calculationContext.WrappedData, commentContext.CommentContainer); - var heightStructuresInputContext = children[1] as GrassCoverErosionInwardsInputContext; - Assert.IsNotNull(heightStructuresInputContext); - Assert.AreSame(calculationContext.WrappedData.InputParameters, heightStructuresInputContext.WrappedData); + var grassCoverErosionInwardsInputContext = children[1] as GrassCoverErosionInwardsInputContext; + Assert.IsNotNull(grassCoverErosionInwardsInputContext); + Assert.AreSame(calculationContext.WrappedData.InputParameters, grassCoverErosionInwardsInputContext.WrappedData); var output = children[2] as GrassCoverErosionInwardsOutput; Assert.IsNotNull(output); @@ -170,8 +170,13 @@ // Setup var guiMock = mocks.StrictMock(); var treeViewControlMock = mocks.StrictMock(); - + var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); + var assessmentSectionMock = mocks.StrictMock(); + var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), + new GeneralNormProbabilityInput()); + var nodeData = new GrassCoverErosionInwardsCalculationContext(calculation, failureMechanism, assessmentSectionMock); var menuBuilderMock = mocks.Stub(); + menuBuilderMock.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilderMock); menuBuilderMock.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilderMock); menuBuilderMock.Expect(mb => mb.AddSeparator()).Return(menuBuilderMock); @@ -186,25 +191,66 @@ menuBuilderMock.Expect(mb => mb.AddSeparator()).Return(menuBuilderMock); menuBuilderMock.Expect(mb => mb.AddPropertiesItem()).Return(menuBuilderMock); menuBuilderMock.Expect(mb => mb.Build()).Return(null); + guiMock.Expect(cmp => cmp.Get(nodeData, treeViewControlMock)).Return(menuBuilderMock); + mocks.ReplayAll(); + + plugin.Gui = guiMock; + + // Call + info.ContextMenuStrip(nodeData, null, treeViewControlMock); + + // Assert + mocks.VerifyAll(); // Expect no calls on arguments + } + + [Test] + public void ContextMenuStrip_Always_AddCustomItems() + { + // Setup + var guiMock = mocks.StrictMock(); + var treeViewControlMock = mocks.StrictMock(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); var assessmentSectionMock = mocks.StrictMock(); var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), new GeneralNormProbabilityInput()); - var nodeData = new GrassCoverErosionInwardsCalculationContext(calculation, failureMechanism, assessmentSectionMock); + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + string validFilePath = Path.Combine(testDataPath, "complete.sqlite"); - guiMock.Expect(cmp => cmp.Get(nodeData, treeViewControlMock)).Return(menuBuilderMock); + guiMock.Expect(cmp => cmp.Get(nodeData, treeViewControlMock)).Return(menuBuilder); + assessmentSectionMock.Stub(asm => asm.HydraulicBoundaryDatabase).Return(new HydraulicBoundaryDatabase + { + FilePath = validFilePath, + Version = "random" + }); mocks.ReplayAll(); plugin.Gui = guiMock; + failureMechanism.AddSection(new FailureMechanismSection("test", new[] + { + new Point2D(0, 0) + })); // Call - info.ContextMenuStrip(nodeData, null, treeViewControlMock); + var menu = info.ContextMenuStrip(nodeData, assessmentSectionMock, treeViewControlMock); // Assert - mocks.VerifyAll(); // Expect no calls on arguments + Assert.AreEqual(6, menu.Items.Count); + + TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuCalculateIndex, + RingtoetsCommonFormsResources.Calculate, + RingtoetsCommonFormsResources.Calculate_ToolTip, + RingtoetsCommonFormsResources.CalculateIcon); + + TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuClearIndex, + RingtoetsCommonFormsResources.Clear_output, + RingtoetsCommonFormsResources.ClearOutput_No_output_to_clear, + RingtoetsCommonFormsResources.ClearIcon, + false); + + mocks.VerifyAll(); } [Test] @@ -485,5 +531,8 @@ mocks.VerifyAll(); } + + private const int contextMenuCalculateIndex = 0; + private const int contextMenuClearIndex = 1; } } \ No newline at end of file Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/TreeNodeInfos/HeightStructuresCalculationContextTreeNodeInfoTest.cs =================================================================== diff -u -re17e5b2635c772e29fb45610f10a3b4021ab7eaa -re19ddb72551e30d7d485a4374a3ca802f3140ff0 --- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/TreeNodeInfos/HeightStructuresCalculationContextTreeNodeInfoTest.cs (.../HeightStructuresCalculationContextTreeNodeInfoTest.cs) (revision e17e5b2635c772e29fb45610f10a3b4021ab7eaa) +++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/TreeNodeInfos/HeightStructuresCalculationContextTreeNodeInfoTest.cs (.../HeightStructuresCalculationContextTreeNodeInfoTest.cs) (revision e19ddb72551e30d7d485a4374a3ca802f3140ff0) @@ -21,6 +21,9 @@ using System.Linq; using Core.Common.Controls.TreeView; +using Core.Common.Gui; +using Core.Common.Gui.ContextMenu; +using Core.Common.Gui.TestUtil.ContextMenu; using Core.Common.TestUtil; using NUnit.Framework; using Rhino.Mocks; @@ -146,5 +149,85 @@ mocks.VerifyAll(); } + + [Test] + public void ContextMenuStrip_Always_CallsContextMenuBuilderMethods() + { + // Setup + var guiMock = mocks.StrictMock(); + var treeViewControlMock = mocks.StrictMock(); + var failureMechanism = new HeightStructuresFailureMechanism(); + var assessmentSectionMock = mocks.StrictMock(); + var calculation = new HeightStructuresCalculation(); + var nodeData = new HeightStructuresCalculationContext(calculation, failureMechanism, assessmentSectionMock); + var menuBuilderMock = mocks.StrictMock(); + + menuBuilderMock.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilderMock); + menuBuilderMock.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilderMock); + menuBuilderMock.Expect(mb => mb.AddSeparator()).Return(menuBuilderMock); + menuBuilderMock.Expect(mb => mb.AddRenameItem()).Return(menuBuilderMock); + menuBuilderMock.Expect(mb => mb.AddDeleteItem()).Return(menuBuilderMock); + menuBuilderMock.Expect(mb => mb.AddSeparator()).Return(menuBuilderMock); + menuBuilderMock.Expect(mb => mb.AddImportItem()).Return(menuBuilderMock); + menuBuilderMock.Expect(mb => mb.AddExportItem()).Return(menuBuilderMock); + menuBuilderMock.Expect(mb => mb.AddSeparator()).Return(menuBuilderMock); + menuBuilderMock.Expect(mb => mb.AddExpandAllItem()).Return(menuBuilderMock); + menuBuilderMock.Expect(mb => mb.AddCollapseAllItem()).Return(menuBuilderMock); + menuBuilderMock.Expect(mb => mb.AddSeparator()).Return(menuBuilderMock); + menuBuilderMock.Expect(mb => mb.AddPropertiesItem()).Return(menuBuilderMock); + menuBuilderMock.Expect(mb => mb.Build()).Return(null); + guiMock.Expect(cmp => cmp.Get(nodeData, treeViewControlMock)).Return(menuBuilderMock); + + mocks.ReplayAll(); + + plugin.Gui = guiMock; + + // Call + info.ContextMenuStrip(nodeData, null, treeViewControlMock); + + // Assert + mocks.VerifyAll(); // Expect no calls on arguments + } + + [Test] + public void ContextMenuStrip_Always_AddCustomItems() + { + // Setup + var guiMock = mocks.StrictMock(); + var treeViewControlMock = mocks.StrictMock(); + var failureMechanism = new HeightStructuresFailureMechanism(); + var assessmentSectionMock = mocks.StrictMock(); + var calculation = new HeightStructuresCalculation(); + var nodeData = new HeightStructuresCalculationContext(calculation, failureMechanism, assessmentSectionMock); + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + guiMock.Expect(cmp => cmp.Get(nodeData, treeViewControlMock)).Return(menuBuilder); + + mocks.ReplayAll(); + + plugin.Gui = guiMock; + + // Call + var menu = info.ContextMenuStrip(nodeData, assessmentSectionMock, treeViewControlMock); + + // Assert + Assert.AreEqual(6, menu.Items.Count); + + TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuCalculateIndex, + RingtoetsCommonFormsResources.Calculate, + RingtoetsCommonFormsResources.Calculate_ToolTip, + RingtoetsCommonFormsResources.CalculateIcon); + + TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuClearIndex, + RingtoetsCommonFormsResources.Clear_output, + RingtoetsCommonFormsResources.ClearOutput_No_output_to_clear, + RingtoetsCommonFormsResources.ClearIcon, + false); + + mocks.VerifyAll(); + } + + private const int contextMenuCalculateIndex = 0; + private const int contextMenuClearIndex = 1; } -} +} \ No newline at end of file