Index: Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Plugin/ClosingStructuresPlugin.cs =================================================================== diff -u -r25f8991baa582abbd9c4f056afbd2f745b67d6a6 -r87234360c430570d06bfa618b1b9a18a8d2b7219 --- Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Plugin/ClosingStructuresPlugin.cs (.../ClosingStructuresPlugin.cs) (revision 25f8991baa582abbd9c4f056afbd2f745b67d6a6) +++ Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Plugin/ClosingStructuresPlugin.cs (.../ClosingStructuresPlugin.cs) (revision 87234360c430570d06bfa618b1b9a18a8d2b7219) @@ -566,28 +566,27 @@ private StrictContextMenuItem CreateUpdateStructureItem(StructuresCalculation[] calculations) { var contextMenuEnabled = true; - string toolTipText = RingtoetsCommonFormsResources.StructuresPlugin_CreateUpdateStructureItem_Update_all_calculations_with_Structure_Tooltip; - if (!calculations.Any()) + string toolTipMessage = RingtoetsCommonFormsResources.StructuresPlugin_CreateUpdateStructureItem_Update_all_calculations_with_Structure_Tooltip; + IEnumerable> calculationsToUpdate = calculations + .Where(c => c.InputParameters.Structure != null && !c.InputParameters.IsStructureInputSynchronized) + .ToList(); + + if (!calculationsToUpdate.Any()) { contextMenuEnabled = false; - toolTipText = RingtoetsCommonFormsResources.CreateUpdateContextMenuItem_No_calculations_to_update_ToolTip; + toolTipMessage = RingtoetsCommonFormsResources.CreateUpdateContextMenuItem_No_calculations_to_update_ToolTip; } - else if (calculations.All(c => c.InputParameters.Structure == null)) - { - contextMenuEnabled = false; - toolTipText = RingtoetsCommonFormsResources.StructuresPlugin_CreateUpdateStructureItem_No_calculations_with_Structure_Tooltip; - } return new StrictContextMenuItem(RingtoetsCommonFormsResources.StructuresPlugin_CreateUpdateStructureItem_Update_all_Structures, - toolTipText, + toolTipMessage, RingtoetsCommonFormsResources.UpdateItemIcon, - (o, args) => UpdateStructureDependentDataOfCalculation(calculations)) + (o, args) => UpdateStructureDependentDataOfCalculations(calculations)) { Enabled = contextMenuEnabled }; } - private void UpdateStructureDependentDataOfCalculation(IEnumerable> calculations) + private void UpdateStructureDependentDataOfCalculations(IEnumerable> calculations) { string message = RingtoetsCommonFormsResources.StructuresPlugin_VerifyStructureUpdate_Confirm_calculation_outputs_cleared_when_updating_Structure_dependent_data; @@ -789,16 +788,16 @@ private StrictContextMenuItem CreateUpdateStructureItem(ClosingStructuresCalculationContext context) { - var isEnabled = true; + var contextMenuEnabled = true; string toolTipMessage = RingtoetsCommonFormsResources.StructuresPlugin_CreateUpdateStructureItem_Update_calculation_with_Structure_ToolTip; if (context.WrappedData.InputParameters.Structure == null) { - isEnabled = false; + contextMenuEnabled = false; toolTipMessage = RingtoetsCommonFormsResources.StructuresPlugin_CreateUpdateStructureItem_No_Structure_ToolTip; } else if (context.WrappedData.InputParameters.IsStructureInputSynchronized) { - isEnabled = false; + contextMenuEnabled = false; toolTipMessage = RingtoetsCommonFormsResources.CalculationItem_No_changes_to_update_ToolTip; } @@ -808,7 +807,7 @@ RingtoetsCommonFormsResources.UpdateItemIcon, (o, args) => UpdateStructureDependentDataOfCalculation(context.WrappedData)) { - Enabled = isEnabled + Enabled = contextMenuEnabled }; } Index: Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Plugin.Test/TreeNodeInfos/ClosingStructuresCalculationGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -re7238c36a2ce066d7dd6c1e5e195924f0ef96bc8 -r87234360c430570d06bfa618b1b9a18a8d2b7219 --- Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Plugin.Test/TreeNodeInfos/ClosingStructuresCalculationGroupContextTreeNodeInfoTest.cs (.../ClosingStructuresCalculationGroupContextTreeNodeInfoTest.cs) (revision e7238c36a2ce066d7dd6c1e5e195924f0ef96bc8) +++ Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Plugin.Test/TreeNodeInfos/ClosingStructuresCalculationGroupContextTreeNodeInfoTest.cs (.../ClosingStructuresCalculationGroupContextTreeNodeInfoTest.cs) (revision 87234360c430570d06bfa618b1b9a18a8d2b7219) @@ -1083,15 +1083,15 @@ // Assert TestHelper.AssertContextMenuStripContainsItem(contextMenu, contextMenuUpdateStructureAllIndexRootGroup, "&Bijwerken kunstwerken", - "Er zijn geen berekeningen met een kunstwerk.", + "Er zijn geen berekeningen om bij te werken.", RingtoetsCommonFormsResources.UpdateItemIcon, false); } } } [Test] - public void ContextMenuStrip_CalculationGroupWithCalculationWithStructure_ContextMenuItemUpdateStructureAllEnabledAndToolTipSet() + public void ContextMenuStrip_CalculationGroupWithCalculationWithStructureAndInputInSync_ContextMenuItemUpdateStructureAllDisabledAndToolTipSet() { // Setup var group = new CalculationGroup @@ -1126,8 +1126,9 @@ // Assert TestHelper.AssertContextMenuStripContainsItem(contextMenu, contextMenuUpdateStructureAllIndexRootGroup, "&Bijwerken kunstwerken", - "Alle berekeningen bijwerken met het kunstwerk.", - RingtoetsCommonFormsResources.UpdateItemIcon); + "Er zijn geen berekeningen om bij te werken.", + RingtoetsCommonFormsResources.UpdateItemIcon, + false); } } } @@ -1191,10 +1192,11 @@ gui.Stub(g => g.MainWindow).Return(mainWindow); mocks.ReplayAll(); + ChangeStructure(structure); + using (ContextMenuStrip menu = info.ContextMenuStrip(nodeData, assessmentSection, treeViewControl)) { // When - UpdateStructure(structure); menu.Items[contextMenuUpdateStructureAllIndexRootGroup].PerformClick(); // Then @@ -1271,10 +1273,11 @@ gui.Stub(g => g.MainWindow).Return(mainWindow); mocks.ReplayAll(); + ChangeStructure(structure); + using (ContextMenuStrip menu = info.ContextMenuStrip(nodeData, assessmentSection, treeViewControl)) { // When - UpdateStructure(structure); menu.Items[contextMenuUpdateStructureAllIndexRootGroup].PerformClick(); // Then @@ -1294,139 +1297,6 @@ } [Test] - public void GivenCalculationWithStructureWithOutput_WhenStructureHasNoChangeAndUpdateClickedAndContinued_ThenInquiryAndCalculationNotUpdatedAndObserversNotNotified() - { - // Given - var assessmentSection = mocks.Stub(); - - var structure = new TestClosingStructure(); - UpdateStructure(structure); - - var calculation = new StructuresCalculation - { - InputParameters = - { - Structure = structure - }, - Output = new TestStructuresOutput() - }; - - var inputObserver = mocks.StrictMock(); - calculation.InputParameters.Attach(inputObserver); - - var calculationObserver = mocks.StrictMock(); - calculation.Attach(calculationObserver); - - var failureMechanism = new ClosingStructuresFailureMechanism(); - failureMechanism.CalculationsGroup.Children.Add(calculation); - - var nodeData = new ClosingStructuresCalculationGroupContext(failureMechanism.CalculationsGroup, failureMechanism, assessmentSection); - - string textBoxMessage = null; - DialogBoxHandler = (name, wnd) => - { - var helper = new MessageBoxTester(wnd); - textBoxMessage = helper.Text; - helper.ClickOk(); - }; - - using (var treeViewControl = new TreeViewControl()) - { - var mainWindow = mocks.Stub(); - gui.Stub(cmp => cmp.Get(nodeData, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); - gui.Stub(g => g.MainWindow).Return(mainWindow); - mocks.ReplayAll(); - - using (ContextMenuStrip menu = info.ContextMenuStrip(nodeData, assessmentSection, treeViewControl)) - { - // When - menu.Items[contextMenuUpdateStructureAllIndexRootGroup].PerformClick(); - - // Then - Assert.IsTrue(calculation.HasOutput); - - AssertClosingStructuresInput(structure, calculation.InputParameters); - - string expectedMessage = "Wanneer de kunstwerken wijzigen als gevolg van het bijwerken, " + - "zullen de resultaten van berekeningen die deze kunstwerken gebruiken, " + - $"worden verwijderd.{Environment.NewLine}{Environment.NewLine}" + - "Weet u zeker dat u wilt doorgaan?"; - Assert.AreEqual(expectedMessage, textBoxMessage); - - // Note: observer assertions are verified in the TearDown() - } - } - } - - [Test] - public void GivenCalculationWithStructureWithOutput_WhenStructurePartiallyDifferentAndUpdateClicked_ThenInquiryAndUpdatesCalculationAndNotifiesObserver() - { - // Given - var assessmentSection = mocks.Stub(); - - var structure = new TestClosingStructure(); - UpdateStructure(structure); - - var calculation = new StructuresCalculation - { - InputParameters = - { - Structure = structure - }, - Output = new TestStructuresOutput() - }; - - var inputObserver = mocks.StrictMock(); - inputObserver.Expect(obs => obs.UpdateObserver()); - calculation.InputParameters.Attach(inputObserver); - - var calculationObserver = mocks.StrictMock(); - calculationObserver.Expect(obs => obs.UpdateObserver()); - calculation.Attach(calculationObserver); - - var failureMechanism = new ClosingStructuresFailureMechanism(); - failureMechanism.CalculationsGroup.Children.Add(calculation); - - var nodeData = new ClosingStructuresCalculationGroupContext(failureMechanism.CalculationsGroup, failureMechanism, assessmentSection); - - string textBoxMessage = null; - DialogBoxHandler = (name, wnd) => - { - var helper = new MessageBoxTester(wnd); - textBoxMessage = helper.Text; - helper.ClickOk(); - }; - - using (var treeViewControl = new TreeViewControl()) - { - var mainWindow = mocks.Stub(); - gui.Stub(cmp => cmp.Get(nodeData, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); - gui.Stub(g => g.MainWindow).Return(mainWindow); - mocks.ReplayAll(); - - using (ContextMenuStrip menu = info.ContextMenuStrip(nodeData, assessmentSection, treeViewControl)) - { - // When - ClosingStructuresInput inputParameters = calculation.InputParameters; - inputParameters.StructureNormalOrientation = (RoundedDouble) 1.1; - menu.Items[contextMenuUpdateStructureAllIndexRootGroup].PerformClick(); - - // Then - Assert.IsFalse(calculation.HasOutput); - Assert.AreEqual(structure.StructureNormalOrientation, inputParameters.StructureNormalOrientation); - - string expectedMessage = "Wanneer de kunstwerken wijzigen als gevolg van het bijwerken, " + - "zullen de resultaten van berekeningen die deze kunstwerken gebruiken, " + - $"worden verwijderd.{Environment.NewLine}{Environment.NewLine}" + - "Weet u zeker dat u wilt doorgaan?"; - Assert.AreEqual(expectedMessage, textBoxMessage); - - // Note: observer assertions are verified in the TearDown() - } - } - } - - [Test] public void GivenCalculationsViewGenerateScenariosButtonClicked_WhenClosingStructureSelectedAndDialogClosed_ThenCalculationsAddedWithClosingStructureAssigned() { // Given @@ -1719,68 +1589,15 @@ CollectionAssert.DoesNotContain(parentGroup.Children, group); } - private static void UpdateStructure(ClosingStructure structure) + private static void ChangeStructure(ClosingStructure structure) { - var structureToUpdateFrom = new ClosingStructure( - new ClosingStructure.ConstructionProperties - { - Id = structure.Id, - Name = structure.Name, - Location = structure.Location, - StructureNormalOrientation = (RoundedDouble) 1.0, - LevelCrestStructureNotClosing = - { - Mean = (RoundedDouble) 2.0, - StandardDeviation = (RoundedDouble) 3.0 - }, - FlowWidthAtBottomProtection = - { - Mean = (RoundedDouble) 4.0, - StandardDeviation = (RoundedDouble) 5.0 - }, - CriticalOvertoppingDischarge = - { - Mean = (RoundedDouble) 6.0, - CoefficientOfVariation = (RoundedDouble) 7.0 - }, - WidthFlowApertures = - { - Mean = (RoundedDouble) 8.0, - StandardDeviation = (RoundedDouble) 9.0 - }, - StorageStructureArea = - { - Mean = (RoundedDouble) 10.0, - CoefficientOfVariation = (RoundedDouble) 11.0 - }, - AllowedLevelIncreaseStorage = - { - Mean = (RoundedDouble) 12.0, - StandardDeviation = (RoundedDouble) 13.0 - }, - InflowModelType = ClosingStructureInflowModelType.FloodedCulvert, - AreaFlowApertures = - { - Mean = (RoundedDouble) 14.0, - StandardDeviation = (RoundedDouble) 15.0 - }, - FailureProbabilityOpenStructure = 0.16, - FailureProbabilityReparation = 0.17, - IdenticalApertures = 18, - InsideWaterLevel = - { - Mean = (RoundedDouble) 19.0, - StandardDeviation = (RoundedDouble) 20.0 - }, - ProbabilityOrFrequencyOpenStructureBeforeFlooding = 0.21, - ThresholdHeightOpenWeir = - { - Mean = (RoundedDouble) 22.0, - StandardDeviation = (RoundedDouble) 23.0 - } - }); - - structure.CopyProperties(structureToUpdateFrom); + structure.CopyProperties(new ClosingStructure( + new ClosingStructure.ConstructionProperties + { + Id = structure.Id, + Name = structure.Name, + Location = structure.Location + })); } private static void AssertClosingStructuresInput(TestClosingStructure structure, ClosingStructuresInput inputParameters) Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Properties/Resources.Designer.cs =================================================================== diff -u -r25f8991baa582abbd9c4f056afbd2f745b67d6a6 -r87234360c430570d06bfa618b1b9a18a8d2b7219 --- Ringtoets/Common/src/Ringtoets.Common.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 25f8991baa582abbd9c4f056afbd2f745b67d6a6) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 87234360c430570d06bfa618b1b9a18a8d2b7219) @@ -2497,16 +2497,6 @@ } /// - /// Looks up a localized string similar to Er zijn geen berekeningen met een kunstwerk.. - /// - public static string StructuresPlugin_CreateUpdateStructureItem_No_calculations_with_Structure_Tooltip { - get { - return ResourceManager.GetString("StructuresPlugin_CreateUpdateStructureItem_No_calculations_with_Structure_Tooltip" + - "", resourceCulture); - } - } - - /// /// Looks up a localized string similar to Er moet een kunstwerk geselecteerd zijn.. /// public static string StructuresPlugin_CreateUpdateStructureItem_No_Structure_ToolTip { @@ -2516,7 +2506,7 @@ } /// - /// Looks up a localized string similar to Alle berekeningen bijwerken met het kunstwerk.. + /// Looks up a localized string similar to Alle berekeningen met een kunstwerk bijwerken.. /// public static string StructuresPlugin_CreateUpdateStructureItem_Update_all_calculations_with_Structure_Tooltip { get { Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Properties/Resources.resx =================================================================== diff -u -r25f8991baa582abbd9c4f056afbd2f745b67d6a6 -r87234360c430570d06bfa618b1b9a18a8d2b7219 --- Ringtoets/Common/src/Ringtoets.Common.Forms/Properties/Resources.resx (.../Resources.resx) (revision 25f8991baa582abbd9c4f056afbd2f745b67d6a6) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/Properties/Resources.resx (.../Resources.resx) (revision 87234360c430570d06bfa618b1b9a18a8d2b7219) @@ -973,11 +973,8 @@ &Bijwerken kunstwerken - Alle berekeningen bijwerken met het kunstwerk. + Alle berekeningen met een kunstwerk bijwerken. - - Er zijn geen berekeningen met een kunstwerk. - Berekening bijwerken met het voorlandprofiel. Index: Ringtoets/Common/src/Ringtoets.Common.Forms/TreeNodeInfos/RingtoetsContextMenuItemFactory.cs =================================================================== diff -u -r25f8991baa582abbd9c4f056afbd2f745b67d6a6 -r87234360c430570d06bfa618b1b9a18a8d2b7219 --- Ringtoets/Common/src/Ringtoets.Common.Forms/TreeNodeInfos/RingtoetsContextMenuItemFactory.cs (.../RingtoetsContextMenuItemFactory.cs) (revision 25f8991baa582abbd9c4f056afbd2f745b67d6a6) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/TreeNodeInfos/RingtoetsContextMenuItemFactory.cs (.../RingtoetsContextMenuItemFactory.cs) (revision 87234360c430570d06bfa618b1b9a18a8d2b7219) @@ -385,16 +385,16 @@ Action> updateAction) where TCalculationInput : ICalculationInput, IHasForeshoreProfile { - var isEnabled = true; + var contextMenuEnabled = true; string toolTipMessage = Resources.CreateUpdateForeshoreProfileOfCalculationItem_Update_calculation_with_ForeshoreProfile_ToolTip; if (calculation.InputParameters.ForeshoreProfile == null) { - isEnabled = false; + contextMenuEnabled = false; toolTipMessage = Resources.CreateUpdateForeshoreProfileOfCalculationItem_Update_calculation_no_ForeshoreProfile_ToolTip; } else if (calculation.InputParameters.IsForeshoreProfileInputSynchronized) { - isEnabled = false; + contextMenuEnabled = false; toolTipMessage = Resources.CalculationItem_No_changes_to_update_ToolTip; } @@ -415,7 +415,7 @@ updateAction); }) { - Enabled = isEnabled + Enabled = contextMenuEnabled }; return menuItem; Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Plugin/HeightStructuresPlugin.cs =================================================================== diff -u -r25f8991baa582abbd9c4f056afbd2f745b67d6a6 -r87234360c430570d06bfa618b1b9a18a8d2b7219 --- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Plugin/HeightStructuresPlugin.cs (.../HeightStructuresPlugin.cs) (revision 25f8991baa582abbd9c4f056afbd2f745b67d6a6) +++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Plugin/HeightStructuresPlugin.cs (.../HeightStructuresPlugin.cs) (revision 87234360c430570d06bfa618b1b9a18a8d2b7219) @@ -577,28 +577,27 @@ private StrictContextMenuItem CreateUpdateStructureItem(StructuresCalculation[] calculations) { var contextMenuEnabled = true; - string toolTipText = RingtoetsCommonFormsResources.StructuresPlugin_CreateUpdateStructureItem_Update_all_calculations_with_Structure_Tooltip; - if (!calculations.Any()) + string toolTipMessage = RingtoetsCommonFormsResources.StructuresPlugin_CreateUpdateStructureItem_Update_all_calculations_with_Structure_Tooltip; + IEnumerable> calculationsToUpdate = calculations + .Where(c => c.InputParameters.Structure != null && !c.InputParameters.IsStructureInputSynchronized) + .ToList(); + + if (!calculationsToUpdate.Any()) { contextMenuEnabled = false; - toolTipText = RingtoetsCommonFormsResources.CreateUpdateContextMenuItem_No_calculations_to_update_ToolTip; + toolTipMessage = RingtoetsCommonFormsResources.CreateUpdateContextMenuItem_No_calculations_to_update_ToolTip; } - else if (calculations.All(c => c.InputParameters.Structure == null)) - { - contextMenuEnabled = false; - toolTipText = RingtoetsCommonFormsResources.StructuresPlugin_CreateUpdateStructureItem_No_calculations_with_Structure_Tooltip; - } return new StrictContextMenuItem(RingtoetsCommonFormsResources.StructuresPlugin_CreateUpdateStructureItem_Update_all_Structures, - toolTipText, + toolTipMessage, RingtoetsCommonFormsResources.UpdateItemIcon, - (o, args) => UpdateStructureDependentDataOfCalculation(calculations)) + (o, args) => UpdateStructureDependentDataOfCalculations(calculationsToUpdate)) { Enabled = contextMenuEnabled }; } - private void UpdateStructureDependentDataOfCalculation(IEnumerable> calculations) + private void UpdateStructureDependentDataOfCalculations(IEnumerable> calculations) { string message = RingtoetsCommonFormsResources.StructuresPlugin_VerifyStructureUpdate_Confirm_calculation_outputs_cleared_when_updating_Structure_dependent_data; @@ -799,16 +798,16 @@ private StrictContextMenuItem CreateUpdateStructureItem(HeightStructuresCalculationContext context) { - var isEnabled = true; + var contextMenuEnabled = true; string toolTipMessage = RingtoetsCommonFormsResources.StructuresPlugin_CreateUpdateStructureItem_Update_calculation_with_Structure_ToolTip; if (context.WrappedData.InputParameters.Structure == null) { - isEnabled = false; + contextMenuEnabled = false; toolTipMessage = RingtoetsCommonFormsResources.StructuresPlugin_CreateUpdateStructureItem_No_Structure_ToolTip; } else if (context.WrappedData.InputParameters.IsStructureInputSynchronized) { - isEnabled = false; + contextMenuEnabled = false; toolTipMessage = RingtoetsCommonFormsResources.CalculationItem_No_changes_to_update_ToolTip; } @@ -818,7 +817,7 @@ RingtoetsCommonFormsResources.UpdateItemIcon, (o, args) => UpdateStructureDependentDataOfCalculation(context.WrappedData)) { - Enabled = isEnabled + Enabled = contextMenuEnabled }; } Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Plugin.Test/TreeNodeInfos/HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -red6b2e0af7afefaff90c52a3842a21e6078f0836 -r87234360c430570d06bfa618b1b9a18a8d2b7219 --- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Plugin.Test/TreeNodeInfos/HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs (.../HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs) (revision ed6b2e0af7afefaff90c52a3842a21e6078f0836) +++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Plugin.Test/TreeNodeInfos/HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs (.../HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs) (revision 87234360c430570d06bfa618b1b9a18a8d2b7219) @@ -1235,15 +1235,15 @@ // Assert TestHelper.AssertContextMenuStripContainsItem(contextMenu, contextMenuUpdateStructureAllIndexRootGroup, "&Bijwerken kunstwerken", - "Er zijn geen berekeningen met een kunstwerk.", + "Er zijn geen berekeningen om bij te werken.", RingtoetsCommonFormsResources.UpdateItemIcon, false); } } } [Test] - public void ContextMenuStrip_CalculationGroupWithCalculationWithStructure_ContextMenuItemUpdateStructureAllEnabledAndToolTipSet() + public void ContextMenuStrip_CalculationGroupWithCalculationWithStructureAndInputInSync_ContextMenuItemUpdateStructureAllDisabledAndToolTipSet() { // Setup var group = new CalculationGroup @@ -1278,8 +1278,9 @@ // Assert TestHelper.AssertContextMenuStripContainsItem(contextMenu, contextMenuUpdateStructureAllIndexRootGroup, "&Bijwerken kunstwerken", - "Alle berekeningen bijwerken met het kunstwerk.", - RingtoetsCommonFormsResources.UpdateItemIcon); + "Er zijn geen berekeningen om bij te werken.", + RingtoetsCommonFormsResources.UpdateItemIcon, + false); } } } @@ -1316,10 +1317,11 @@ guiStub.Stub(g => g.MainWindow).Return(mainWindow); mocks.ReplayAll(); + ChangeStructure(structure); + using (ContextMenuStrip menu = info.ContextMenuStrip(nodeData, assessmentSection, treeViewControl)) { // When - UpdateStructure(structure); menu.Items[contextMenuUpdateStructureAllIndexRootGroup].PerformClick(); // Then @@ -1393,10 +1395,11 @@ guiStub.Stub(g => g.MainWindow).Return(mainWindow); mocks.ReplayAll(); + ChangeStructure(structure); + using (ContextMenuStrip menu = info.ContextMenuStrip(nodeData, assessmentSection, treeViewControl)) { // When - UpdateStructure(structure); menu.Items[contextMenuUpdateStructureAllIndexRootGroup].PerformClick(); // Then @@ -1466,10 +1469,11 @@ guiStub.Stub(g => g.MainWindow).Return(mainWindow); mocks.ReplayAll(); + ChangeStructure(structure); + using (ContextMenuStrip menu = info.ContextMenuStrip(nodeData, assessmentSection, treeViewControl)) { // When - UpdateStructure(structure); menu.Items[contextMenuUpdateStructureAllIndexRootGroup].PerformClick(); // Then @@ -1499,149 +1503,6 @@ } [Test] - public void GivenCalculationWithStructureWithOutput_WhenStructureHasNoChangeAndUpdateClickedAndContinued_ThenInquiryAndCalculationNotUpdatedAndObserversNotNotified() - { - // Given - var assessmentSection = mocks.Stub(); - - var structure = new TestHeightStructure(); - UpdateStructure(structure); - - var calculation = new StructuresCalculation - { - InputParameters = - { - Structure = structure - }, - Output = new TestStructuresOutput() - }; - - var inputObserver = mocks.StrictMock(); - calculation.InputParameters.Attach(inputObserver); - - var calculationObserver = mocks.StrictMock(); - calculation.Attach(calculationObserver); - - var failureMechanism = new HeightStructuresFailureMechanism(); - failureMechanism.CalculationsGroup.Children.Add(calculation); - - var nodeData = new HeightStructuresCalculationGroupContext(failureMechanism.CalculationsGroup, failureMechanism, assessmentSection); - - string textBoxMessage = null; - DialogBoxHandler = (name, wnd) => - { - var helper = new MessageBoxTester(wnd); - textBoxMessage = helper.Text; - helper.ClickOk(); - }; - - using (var treeViewControl = new TreeViewControl()) - { - var mainWindow = mocks.Stub(); - guiStub.Stub(cmp => cmp.Get(nodeData, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); - guiStub.Stub(g => g.MainWindow).Return(mainWindow); - mocks.ReplayAll(); - - using (ContextMenuStrip menu = info.ContextMenuStrip(nodeData, assessmentSection, treeViewControl)) - { - // When - menu.Items[contextMenuUpdateStructureAllIndexRootGroup].PerformClick(); - - // Then - Assert.IsTrue(calculation.HasOutput); - - HeightStructuresInput inputParameters = calculation.InputParameters; - - Assert.AreSame(structure, inputParameters.Structure); - Assert.AreEqual(structure.StructureNormalOrientation, inputParameters.StructureNormalOrientation); - Assert.AreEqual(structure.LevelCrestStructure, inputParameters.LevelCrestStructure); - Assert.AreEqual(structure.FlowWidthAtBottomProtection, inputParameters.FlowWidthAtBottomProtection); - Assert.AreEqual(structure.CriticalOvertoppingDischarge, inputParameters.CriticalOvertoppingDischarge); - Assert.AreEqual(structure.WidthFlowApertures, inputParameters.WidthFlowApertures); - Assert.AreEqual(structure.FailureProbabilityStructureWithErosion, inputParameters.FailureProbabilityStructureWithErosion); - Assert.AreEqual(structure.StorageStructureArea, inputParameters.StorageStructureArea); - Assert.AreEqual(structure.AllowedLevelIncreaseStorage, inputParameters.AllowedLevelIncreaseStorage); - - string expectedMessage = "Wanneer de kunstwerken wijzigen als gevolg van het bijwerken, " + - "zullen de resultaten van berekeningen die deze kunstwerken gebruiken, " + - $"worden verwijderd.{Environment.NewLine}{Environment.NewLine}" + - "Weet u zeker dat u wilt doorgaan?"; - Assert.AreEqual(expectedMessage, textBoxMessage); - - // Note: observer assertions are verified in the TearDown() - } - } - } - - [Test] - public void GivenCalculationWithStructureWithOutput_WhenStructurePartiallyDifferentAndUpdateClicked_ThenInquiryAndUpdatesCalculationAndNotifiesObserver() - { - // Given - var assessmentSection = mocks.Stub(); - - var structure = new TestHeightStructure(); - UpdateStructure(structure); - - var calculation = new StructuresCalculation - { - InputParameters = - { - Structure = structure - }, - Output = new TestStructuresOutput() - }; - - var inputObserver = mocks.StrictMock(); - inputObserver.Expect(obs => obs.UpdateObserver()); - calculation.InputParameters.Attach(inputObserver); - - var calculationObserver = mocks.StrictMock(); - calculationObserver.Expect(obs => obs.UpdateObserver()); - calculation.Attach(calculationObserver); - - var failureMechanism = new HeightStructuresFailureMechanism(); - failureMechanism.CalculationsGroup.Children.Add(calculation); - - var nodeData = new HeightStructuresCalculationGroupContext(failureMechanism.CalculationsGroup, failureMechanism, assessmentSection); - - string textBoxMessage = null; - DialogBoxHandler = (name, wnd) => - { - var helper = new MessageBoxTester(wnd); - textBoxMessage = helper.Text; - helper.ClickOk(); - }; - - using (var treeViewControl = new TreeViewControl()) - { - var mainWindow = mocks.Stub(); - guiStub.Stub(cmp => cmp.Get(nodeData, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); - guiStub.Stub(g => g.MainWindow).Return(mainWindow); - mocks.ReplayAll(); - - using (ContextMenuStrip menu = info.ContextMenuStrip(nodeData, assessmentSection, treeViewControl)) - { - // When - HeightStructuresInput inputParameters = calculation.InputParameters; - inputParameters.StructureNormalOrientation = (RoundedDouble) 1.1; - menu.Items[contextMenuUpdateStructureAllIndexRootGroup].PerformClick(); - - // Then - Assert.IsFalse(calculation.HasOutput); - Assert.AreEqual(structure.StructureNormalOrientation, inputParameters.StructureNormalOrientation); - - string expectedMessage = "Wanneer de kunstwerken wijzigen als gevolg van het bijwerken, " + - "zullen de resultaten van berekeningen die deze kunstwerken gebruiken, " + - $"worden verwijderd.{Environment.NewLine}{Environment.NewLine}" + - "Weet u zeker dat u wilt doorgaan?"; - Assert.AreEqual(expectedMessage, textBoxMessage); - - // Note: observer assertions are verified in the TearDown() - } - } - } - - [Test] public void GivenCalculationsViewGenerateScenariosButtonClicked_WhenHeightStructureSelectedAndDialogClosed_ThenCalculationsAddedWithHeightStructureAssigned() { // Given @@ -1933,48 +1794,15 @@ CollectionAssert.DoesNotContain(parentGroup.Children, group); } - private static void UpdateStructure(HeightStructure structure) + private static void ChangeStructure(HeightStructure structure) { - var structureToUpdateFrom = new HeightStructure( - new HeightStructure.ConstructionProperties - { - Id = structure.Id, - Name = structure.Name, - Location = structure.Location, - LevelCrestStructure = - { - Mean = (RoundedDouble) 1.0, - StandardDeviation = (RoundedDouble) 2.0 - }, - FlowWidthAtBottomProtection = - { - Mean = (RoundedDouble) 3.0, - StandardDeviation = (RoundedDouble) 4.0 - }, - CriticalOvertoppingDischarge = - { - Mean = (RoundedDouble) 5.0, - CoefficientOfVariation = (RoundedDouble) 6.0 - }, - WidthFlowApertures = - { - Mean = (RoundedDouble) 7.0, - StandardDeviation = (RoundedDouble) 8.0 - }, - StorageStructureArea = - { - Mean = (RoundedDouble) 9.0, - CoefficientOfVariation = (RoundedDouble) 10.0 - }, - AllowedLevelIncreaseStorage = - { - Mean = (RoundedDouble) 11.0, - StandardDeviation = (RoundedDouble) 12.0 - }, - FailureProbabilityStructureWithErosion = 0.13 - }); - - structure.CopyProperties(structureToUpdateFrom); + structure.CopyProperties(new HeightStructure( + new HeightStructure.ConstructionProperties + { + Id = structure.Id, + Name = structure.Name, + Location = structure.Location + })); } public override void TearDown()