Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -r4e6c8ac0eb663ddfe4565745fb4829a8432019e2 -rc73100fd8408a2865d6fb32bd17608502686b605 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs) (revision 4e6c8ac0eb663ddfe4565745fb4829a8432019e2) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs) (revision c73100fd8408a2865d6fb32bd17608502686b605) @@ -177,6 +177,7 @@ menuBuilderMock.Expect(mb => mb.AddSeparator()).Return(menuBuilderMock); menuBuilderMock.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilderMock); 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.AddImportItem()).Return(menuBuilderMock); menuBuilderMock.Expect(mb => mb.AddExportItem()).Return(menuBuilderMock); @@ -222,7 +223,7 @@ ContextMenuStrip menu = info.ContextMenuStrip(groupContext, null, treeViewControl); // Assert - Assert.AreEqual(11, menu.Items.Count); + Assert.AreEqual(12, menu.Items.Count); TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuAddCalculationGroupIndexRootGroup, RingtoetsFormsResources.CalculationGroup_Add_CalculationGroup, RingtoetsFormsResources.CalculationGroup_Add_CalculationGroup_Tooltip, @@ -231,6 +232,11 @@ RingtoetsFormsResources.CalculationGroup_Add_Calculation, RingtoetsFormsResources.CalculationGroup_Add_Calculation_Tooltip, RingtoetsFormsResources.FailureMechanismIcon); + TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuValidateAllIndexRootGroup, + RingtoetsFormsResources.Validate_all, + RingtoetsFormsResources.ValidateAll_No_calculations_to_validate, + RingtoetsFormsResources.ValidateIcon, + false); TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuCalculateAllIndexRootGroup, RingtoetsFormsResources.Calculate_all, RingtoetsFormsResources.CalculationGroup_CalculateAll_No_calculations_to_run, @@ -268,6 +274,7 @@ menuBuilderMock.Expect(mb => mb.AddSeparator()).Return(menuBuilderMock); menuBuilderMock.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilderMock); 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); @@ -316,7 +323,7 @@ ContextMenuStrip menu = info.ContextMenuStrip(groupContext, parentGroupContext, treeViewControl); // Assert - Assert.AreEqual(9, menu.Items.Count); + Assert.AreEqual(10, menu.Items.Count); TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuAddCalculationGroupIndexNestedGroup, RingtoetsFormsResources.CalculationGroup_Add_CalculationGroup, @@ -327,6 +334,11 @@ RingtoetsFormsResources.CalculationGroup_Add_Calculation_Tooltip, RingtoetsFormsResources.FailureMechanismIcon); + TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuValidateAllIndexNestedGroup, + RingtoetsFormsResources.Validate_all, + RingtoetsFormsResources.ValidateAll_No_calculations_to_validate, + RingtoetsFormsResources.ValidateAllIcon, + false); TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuCalculateAllIndexNestedGroup, RingtoetsFormsResources.Calculate_all, RingtoetsFormsResources.CalculationGroup_CalculateAll_No_calculations_to_run, @@ -617,6 +629,75 @@ } [Test] + public void ContextMenuStrip_ClickOnCalculateAllItem_ValidateAllChildCalculations() + { + // Setup + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); + + failureMechanism.AddSection(new FailureMechanismSection("A", new[] + { + new Point2D(0, 0) + })); + + failureMechanism.CalculationsGroup.Children.Add(new GrassCoverErosionInwardsCalculation + { + Name = "A", + InputParameters = + { + HydraulicBoundaryLocation = new HydraulicBoundaryLocation(-1, "nonExisting", 1, 2), + DikeProfile = new DikeProfile(new Point2D(0, 0)) + } + }); + + failureMechanism.CalculationsGroup.Children.Add(new GrassCoverErosionInwardsCalculation + { + Name = "B", + InputParameters = + { + HydraulicBoundaryLocation = new HydraulicBoundaryLocation(-1, "nonExisting", 1, 2), + DikeProfile = new DikeProfile(new Point2D(0, 0)) + } + }); + + string validFilePath = Path.Combine(testDataPath, "complete.sqlite"); + + var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); + var hydraulicBoundaryDatabaseStub = mocks.Stub(); + hydraulicBoundaryDatabaseStub.FilePath = validFilePath; + assessmentSection.HydraulicBoundaryDatabase = hydraulicBoundaryDatabaseStub; + + var groupContext = new GrassCoverErosionInwardsCalculationGroupContext(failureMechanism.CalculationsGroup, + failureMechanism, + assessmentSection); + + using (var treeViewControl = new TreeViewControl()) + { + guiMock.Expect(g => g.Get(groupContext, treeViewControl)).Return(menuBuilder); + + mocks.ReplayAll(); + + plugin.Gui = guiMock; + var contextMenu = info.ContextMenuStrip(groupContext, null, treeViewControl); + + // Call + TestHelper.AssertLogMessages(() => contextMenu.Items[contextMenuValidateAllIndexRootGroup].PerformClick(), messages => + { + var messageList = messages.ToList(); + + // Assert + Assert.AreEqual(4, messageList.Count); + StringAssert.StartsWith("Validatie van 'A' gestart om: ", messageList[0]); + StringAssert.StartsWith("Validatie van 'A' beƫindigd om: ", messageList[1]); + StringAssert.StartsWith("Validatie van 'B' gestart om: ", messageList[2]); + StringAssert.StartsWith("Validatie van 'B' beƫindigd om: ", messageList[3]); + }); + } + mocks.VerifyAll(); + } + + [Test] public void ContextMenuStrip_ClickOnCalculateAllItem_ScheduleAllChildCalculations() { // Setup @@ -1062,11 +1143,13 @@ private const int contextMenuGenerateCalculationsIndexRootGroup = 1; private const int contextMenuAddCalculationGroupIndexRootGroup = 3; private const int contextMenuAddCalculationIndexRootGroup = 4; - private const int contextMenuCalculateAllIndexRootGroup = 6; - private const int contextMenuClearAllIndexRootGroup = 7; + private const int contextMenuValidateAllIndexRootGroup = 6; + private const int contextMenuCalculateAllIndexRootGroup = 7; + private const int contextMenuClearAllIndexRootGroup = 8; private const int contextMenuAddCalculationGroupIndexNestedGroup = 0; private const int contextMenuAddCalculationIndexNestedGroup = 1; - private const int contextMenuCalculateAllIndexNestedGroup = 3; - private const int contextMenuClearAllIndexNestedGroup = 4; + private const int contextMenuValidateAllIndexNestedGroup = 3; + private const int contextMenuCalculateAllIndexNestedGroup = 4; + private const int contextMenuClearAllIndexNestedGroup = 5; } } \ No newline at end of file