Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsFailureMechanismContextTreeNodeInfoTest.cs =================================================================== diff -u -r33efdf255d012f47a045c7f3181487e0453cf5e2 -rb4bb9d9f038ead7c2720a2ffc39c8522c9f9c028 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsFailureMechanismContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsFailureMechanismContextTreeNodeInfoTest.cs) (revision 33efdf255d012f47a045c7f3181487e0453cf5e2) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsFailureMechanismContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsFailureMechanismContextTreeNodeInfoTest.cs) (revision b4bb9d9f038ead7c2720a2ffc39c8522c9f9c028) @@ -22,7 +22,6 @@ 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; @@ -75,7 +74,11 @@ { // Assert Assert.AreEqual(typeof(GrassCoverErosionInwardsFailureMechanismContext), info.TagType); + Assert.IsNotNull(info.Text); Assert.IsNotNull(info.ForeColor); + Assert.IsNotNull(info.Image); + Assert.IsNotNull(info.ChildNodeObjects); + Assert.IsNotNull(info.ContextMenuStrip); Assert.IsNull(info.EnsureVisibleOnCreate); Assert.IsNull(info.CanRename); Assert.IsNull(info.OnNodeRenamed); @@ -91,89 +94,59 @@ } [Test] - public void Text_Always_ReturnsName() - { - // Setup - var assessmentSection = mocksRepository.Stub(); - mocksRepository.ReplayAll(); - - var mechanism = new GrassCoverErosionInwardsFailureMechanism(); - var mechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(mechanism, assessmentSection); - - // Call - var text = info.Text(mechanismContext); - - // Assert - const string expectedName = "Dijken en dammen - Grasbekleding erosie kruin en binnentalud"; - Assert.AreEqual(expectedName, text); - mocksRepository.VerifyAll(); - } - - [Test] - public void Image_Always_ReturnsFailureMechanismIcon() - { - // Call - var image = info.Image(null); - - // Assert - TestHelper.AssertImagesAreEqual(RingtoetsCommonFormsResources.FailureMechanismIcon, image); - } - - [Test] public void ChildNodeObjects_FailureMechanismIsRelevant_ReturnChildDataNodes() { // Setup - var assessmentSection = mocksRepository.Stub(); + var assessmentSectionMock = mocksRepository.StrictMock(); mocksRepository.ReplayAll(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); - var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSection); + var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSectionMock); // Call var children = info.ChildNodeObjects(failureMechanismContext).ToArray(); // Assert Assert.AreEqual(3, children.Length); + var inputsFolder = (CategoryTreeFolder) children[0]; Assert.AreEqual("Invoer", inputsFolder.Name); Assert.AreEqual(TreeFolderCategory.Input, inputsFolder.Category); - Assert.AreEqual(2, inputsFolder.Contents.Count); var failureMechanismSectionsContext = (FailureMechanismSectionsContext) inputsFolder.Contents[0]; CollectionAssert.AreEqual(failureMechanism.Sections, failureMechanismSectionsContext.WrappedData); Assert.AreSame(failureMechanism, failureMechanismSectionsContext.ParentFailureMechanism); - Assert.AreSame(assessmentSection, failureMechanismSectionsContext.ParentAssessmentSection); - + Assert.AreSame(assessmentSectionMock, failureMechanismSectionsContext.ParentAssessmentSection); var commentContext = (CommentContext) inputsFolder.Contents[1]; Assert.AreSame(failureMechanism, commentContext.CommentContainer); var calculationsFolder = (GrassCoverErosionInwardsCalculationGroupContext) children[1]; Assert.AreEqual("Berekeningen", calculationsFolder.WrappedData.Name); - CollectionAssert.AreEqual(failureMechanism.CalculationsGroup.Children, calculationsFolder.WrappedData.Children); + Assert.AreSame(failureMechanism.CalculationsGroup, calculationsFolder.WrappedData); Assert.AreSame(failureMechanism, calculationsFolder.FailureMechanism); var outputsFolder = (CategoryTreeFolder) children[2]; Assert.AreEqual("Uitvoer", outputsFolder.Name); Assert.AreEqual(TreeFolderCategory.Output, outputsFolder.Category); - var failureMechanismResultsContext = (FailureMechanismSectionResultContext) outputsFolder.Contents[0]; Assert.AreSame(failureMechanism, failureMechanismResultsContext.FailureMechanism); Assert.AreSame(failureMechanism.SectionResults, failureMechanismResultsContext.SectionResults); + mocksRepository.VerifyAll(); } [Test] public void ChildNodeObjects_FailureMechanismIsNotRelevant_ReturnOnlyFailureMechanismComments() { // Setup - var assessmentSection = mocksRepository.Stub(); + var assessmentSectionMock = mocksRepository.StrictMock(); mocksRepository.ReplayAll(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism { IsRelevant = false }; - var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSection); + var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSectionMock); // Call var children = info.ChildNodeObjects(failureMechanismContext).ToArray(); @@ -191,9 +164,8 @@ { // Setup var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); - var assessmentSection = mocksRepository.Stub(); - var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSection); - + var assessmentSectionMock = mocksRepository.StrictMock(); + var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSectionMock); var guiMock = mocksRepository.StrictMock(); var treeViewControlMock = mocksRepository.StrictMock(); var menuBuilderMock = mocksRepository.StrictMock(); @@ -213,8 +185,8 @@ 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(failureMechanismContext, treeViewControlMock)).Return(menuBuilderMock); + mocksRepository.ReplayAll(); plugin.Gui = guiMock; @@ -234,9 +206,8 @@ { IsRelevant = false }; - var assessmentSection = mocksRepository.Stub(); - var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSection); - + var assessmentSectionMock = mocksRepository.StrictMock(); + var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSectionMock); var guiMock = mocksRepository.StrictMock(); var treeViewControlMock = mocksRepository.StrictMock(); var menuBuilderMock = mocksRepository.StrictMock(); @@ -246,8 +217,8 @@ menuBuilderMock.Expect(mb => mb.AddExpandAllItem()).Return(menuBuilderMock); menuBuilderMock.Expect(mb => mb.AddCollapseAllItem()).Return(menuBuilderMock); menuBuilderMock.Expect(mb => mb.Build()).Return(null); - guiMock.Expect(cmp => cmp.Get(failureMechanismContext, treeViewControlMock)).Return(menuBuilderMock); + mocksRepository.ReplayAll(); plugin.Gui = guiMock; @@ -260,122 +231,155 @@ } [Test] - public void ContextMenuStrip_FailureMechanismIsRelevant_IsRelevantEnabledAddCalculationGroupAddCalculationItemDisabled() + public void ContextMenuStrip_FailureMechanismIsRelevant_AddCustomItems() { // Setup using (var treeView = new TreeViewControl()) { - var assessmentSection = mocksRepository.Stub(); + var assessmentSectionMock = mocksRepository.StrictMock(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); - var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSection); - + var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSectionMock); var menuBuilderMock = new CustomItemsOnlyContextMenuBuilder(); + var guiMock = mocksRepository.StrictMock(); - var gui = mocksRepository.StrictMock(); - gui.Expect(cmp => cmp.Get(failureMechanismContext, treeView)).Return(menuBuilderMock); - gui.Stub(g => g.ProjectOpened += null).IgnoreArguments(); - gui.Stub(g => g.ProjectOpened -= null).IgnoreArguments(); + guiMock.Expect(cmp => cmp.Get(failureMechanismContext, treeView)).Return(menuBuilderMock); + guiMock.Stub(g => g.ProjectOpened += null).IgnoreArguments(); + guiMock.Stub(g => g.ProjectOpened -= null).IgnoreArguments(); mocksRepository.ReplayAll(); - plugin.Gui = gui; + plugin.Gui = guiMock; // Call - var menu = info.ContextMenuStrip(failureMechanismContext, assessmentSection, treeView); + var menu = info.ContextMenuStrip(failureMechanismContext, assessmentSectionMock, treeView); // Assert + Assert.AreEqual(8, menu.Items.Count); + TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuRelevancyIndexWhenRelevant, RingtoetsCommonFormsResources.FailureMechanismContextMenuStrip_Is_relevant, RingtoetsCommonFormsResources.FailureMechanismContextMenuStrip_Is_relevant_Tooltip, RingtoetsCommonFormsResources.Checkbox_ticked); + TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuCalculateAllIndex, + RingtoetsCommonFormsResources.Calculate_all, + RingtoetsCommonFormsResources.FailureMechanism_CreateCalculateAllItem_No_calculations_to_run, + RingtoetsCommonFormsResources.CalculateAllIcon, + false); + + TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuClearAllIndex, + RingtoetsCommonFormsResources.Clear_all_output, + RingtoetsCommonFormsResources.CalculationGroup_ClearOutput_No_calculation_with_output_to_clear, + RingtoetsCommonFormsResources.ClearIcon, + false); + mocksRepository.VerifyAll(); } } [Test] - public void ContextMenuStrip_FailureMechanismIsRelevantAndClickOnIsRelevantItem_MakeFailureMechanismNotRelevant() + public void ContextMenuStrip_FailureMechanismIsNotRelevant_AddCustomItems() { // Setup - var failureMechanismObserver = mocksRepository.Stub(); - failureMechanismObserver.Expect(o => o.UpdateObserver()); - - var failureMechanism = new GrassCoverErosionInwardsFailureMechanism + using (var treeView = new TreeViewControl()) { - IsRelevant = true - }; - failureMechanism.Attach(failureMechanismObserver); + var assessmentSectionMock = mocksRepository.StrictMock(); + var failureMechanism = new GrassCoverErosionInwardsFailureMechanism + { + IsRelevant = false + }; + var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSectionMock); + var menuBuilderMock = new CustomItemsOnlyContextMenuBuilder(); + var guiMock = mocksRepository.StrictMock(); - var assessmentSection = mocksRepository.Stub(); - var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSection); + guiMock.Expect(cmp => cmp.Get(failureMechanismContext, treeView)).Return(menuBuilderMock); + guiMock.Stub(g => g.ProjectOpened += null).IgnoreArguments(); + guiMock.Stub(g => g.ProjectOpened -= null).IgnoreArguments(); - var viewCommands = mocksRepository.StrictMock(); - viewCommands.Expect(vs => vs.RemoveAllViewsForItem(failureMechanismContext)); + mocksRepository.ReplayAll(); - var treeViewControl = mocksRepository.StrictMock(); + plugin.Gui = guiMock; + + // Call + var menu = info.ContextMenuStrip(failureMechanismContext, assessmentSectionMock, treeView); + + // Assert + Assert.AreEqual(2, menu.Items.Count); + + TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuRelevancyIndexWhenNotRelevant, + RingtoetsCommonFormsResources.FailureMechanismContextMenuStrip_Is_relevant, + RingtoetsCommonFormsResources.FailureMechanismContextMenuStrip_Is_relevant_Tooltip, + RingtoetsCommonFormsResources.Checkbox_ticked); + + mocksRepository.VerifyAll(); + } + } + + [Test] + public void ContextMenuStrip_FailureMechanismIsRelevantAndClickOnIsRelevantItem_OnChangeActionRemovesAllViewsForItem() + { + // Setup + var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); + var assessmentSectionMock = mocksRepository.StrictMock(); + var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSectionMock); + var viewCommandsMock = mocksRepository.StrictMock(); + var treeViewControlMock = mocksRepository.StrictMock(); var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + var guiMock = mocksRepository.StrictMock(); - var gui = mocksRepository.StrictMock(); - gui.Stub(g => g.ViewCommands).Return(viewCommands); - gui.Expect(g => g.Get(failureMechanismContext, treeViewControl)).Return(menuBuilder); + viewCommandsMock.Expect(vs => vs.RemoveAllViewsForItem(failureMechanismContext)); + guiMock.Stub(g => g.ViewCommands).Return(viewCommandsMock); + guiMock.Expect(g => g.Get(failureMechanismContext, treeViewControlMock)).Return(menuBuilder); mocksRepository.ReplayAll(); - plugin.Gui = gui; + plugin.Gui = guiMock; - var contextMenu = info.ContextMenuStrip(failureMechanismContext, null, treeViewControl); + var contextMenu = info.ContextMenuStrip(failureMechanismContext, null, treeViewControlMock); // Call contextMenu.Items[contextMenuRelevancyIndexWhenRelevant].PerformClick(); // Assert - Assert.IsFalse(failureMechanism.IsRelevant); mocksRepository.VerifyAll(); } [Test] public void ContextMenuStrip_FailureMechanismIsNotRelevantAndClickOnIsRelevantItem_MakeFailureMechanismRelevant() { // Setup - var failureMechanismObserver = mocksRepository.Stub(); - failureMechanismObserver.Expect(o => o.UpdateObserver()); - var failureMechanism = new GrassCoverErosionInwardsFailureMechanism { IsRelevant = false }; - failureMechanism.Attach(failureMechanismObserver); - - var assessmentSection = mocksRepository.Stub(); - var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSection); - - var treeViewControl = mocksRepository.StrictMock(); + var assessmentSectionMock = mocksRepository.StrictMock(); + var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSectionMock); + var treeViewControlMock = mocksRepository.StrictMock(); var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + var guiMock = mocksRepository.StrictMock(); - var gui = mocksRepository.StrictMock(); - gui.Expect(g => g.Get(failureMechanismContext, treeViewControl)).Return(menuBuilder); + guiMock.Expect(g => g.Get(failureMechanismContext, treeViewControlMock)).Return(menuBuilder); mocksRepository.ReplayAll(); - plugin.Gui = gui; + plugin.Gui = guiMock; - var contextMenu = info.ContextMenuStrip(failureMechanismContext, null, treeViewControl); + var contextMenu = info.ContextMenuStrip(failureMechanismContext, null, treeViewControlMock); // Call contextMenu.Items[contextMenuRelevancyIndexWhenNotRelevant].PerformClick(); // Assert - Assert.IsTrue(failureMechanism.IsRelevant); mocksRepository.VerifyAll(); } [Test] public void ContextMenuStrip_ClickOnCalculateAllItem_ScheduleAllChildCalculations() { // Setup - var gui = mocksRepository.StrictMock(); - var mainWindow = mocksRepository.Stub(); - var treeViewControl = mocksRepository.StrictMock(); + var guiMock = mocksRepository.StrictMock(); + var mainWindowStub = mocksRepository.Stub(); + var treeViewControlMock = mocksRepository.StrictMock(); var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); @@ -397,18 +401,18 @@ string validFilePath = Path.Combine(testDataPath, "complete.sqlite"); var assessmentSection = new AssessmentSection( AssessmentSectionComposition.Dike ); - var hydraulicBoundaryDatabase = mocksRepository.Stub(); - hydraulicBoundaryDatabase.FilePath = validFilePath; - assessmentSection.HydraulicBoundaryDatabase = hydraulicBoundaryDatabase; + var hydraulicBoundaryDatabaseStub = mocksRepository.Stub(); + hydraulicBoundaryDatabaseStub.FilePath = validFilePath; + assessmentSection.HydraulicBoundaryDatabase = hydraulicBoundaryDatabaseStub; var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSection); - gui.Expect(g => g.Get(failureMechanismContext, treeViewControl)).Return(menuBuilder); - gui.Expect(g => g.MainWindow).Return(mainWindow); + guiMock.Expect(g => g.Get(failureMechanismContext, treeViewControlMock)).Return(menuBuilder); + guiMock.Expect(g => g.MainWindow).Return(mainWindowStub); mocksRepository.ReplayAll(); - plugin.Gui = gui; - var contextMenu = info.ContextMenuStrip(failureMechanismContext, null, treeViewControl); + plugin.Gui = guiMock; + var contextMenu = info.ContextMenuStrip(failureMechanismContext, null, treeViewControlMock); DialogBoxHandler = (name, wnd) => { @@ -426,30 +430,30 @@ public void ContextMenuStrip_NoFailureMechanismSections_ReturnContextMenuItemDisabledAndTooltipSet() { // Setup - var gui = mocksRepository.StrictMock(); + var guiMock = mocksRepository.StrictMock(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); failureMechanism.CalculationsGroup.Children.Add(new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), new GeneralNormProbabilityInput())); var assessmentSectionMock = mocksRepository.StrictMock(); var nodeData = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSectionMock); - var applicationFeatureCommandHandler = mocksRepository.Stub(); - var exportImportHandler = mocksRepository.Stub(); - var viewCommandsHandler = mocksRepository.StrictMock(); - var treeViewControl = mocksRepository.StrictMock(); + var applicationFeatureCommandHandlerStub = mocksRepository.Stub(); + var exportImportHandlerStub = mocksRepository.Stub(); + var viewCommandsHandlerMock = mocksRepository.StrictMock(); + var treeViewControlMock = mocksRepository.StrictMock(); - var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandler, exportImportHandler, viewCommandsHandler, nodeData, treeViewControl); - gui.Expect(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); + var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandlerStub, exportImportHandlerStub, viewCommandsHandlerMock, nodeData, treeViewControlMock); + guiMock.Expect(g => g.Get(nodeData, treeViewControlMock)).Return(menuBuilder); - treeViewControl.Expect(tvc => tvc.CanExpandOrCollapseForData(nodeData)).Repeat.Twice().Return(false); - viewCommandsHandler.Expect(vc => vc.CanOpenViewFor(nodeData)).Return(false); + treeViewControlMock.Expect(tvc => tvc.CanExpandOrCollapseForData(nodeData)).Repeat.Twice().Return(false); + viewCommandsHandlerMock.Expect(vc => vc.CanOpenViewFor(nodeData)).Return(false); mocksRepository.ReplayAll(); - plugin.Gui = gui; + plugin.Gui = guiMock; // Call - ContextMenuStrip menu = info.ContextMenuStrip(nodeData, null, treeViewControl); + ContextMenuStrip menu = info.ContextMenuStrip(nodeData, null, treeViewControlMock); // Assert TestHelper.AssertContextMenuStripContainsItem(menu, 4, @@ -464,7 +468,7 @@ public void ContextMenuStrip_FailureMechanismSectionsSetNoHydraulicBoundaryDatabase_ContextMenuItemDisabledAndTooltipSet() { // Setup - var gui = mocksRepository.StrictMock(); + var guiMock = mocksRepository.StrictMock(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); failureMechanism.AddSection(new FailureMechanismSection("test", new[] { new Point2D(0, 0) })); failureMechanism.CalculationsGroup.Children.Add(new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), @@ -475,22 +479,22 @@ var nodeData = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSectionMock); - var applicationFeatureCommandHandler = mocksRepository.Stub(); - var exportImportHandler = mocksRepository.Stub(); - var viewCommandsHandler = mocksRepository.StrictMock(); - var treeViewControl = mocksRepository.StrictMock(); + var applicationFeatureCommandHandlerStub = mocksRepository.Stub(); + var exportImportHandlerStub = mocksRepository.Stub(); + var viewCommandsHandlerMock = mocksRepository.StrictMock(); + var treeViewControlMock = mocksRepository.StrictMock(); - var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandler, exportImportHandler, viewCommandsHandler, nodeData, treeViewControl); - gui.Expect(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); + var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandlerStub, exportImportHandlerStub, viewCommandsHandlerMock, nodeData, treeViewControlMock); + guiMock.Expect(g => g.Get(nodeData, treeViewControlMock)).Return(menuBuilder); - treeViewControl.Expect(tvc => tvc.CanExpandOrCollapseForData(nodeData)).Repeat.Twice().Return(false); - viewCommandsHandler.Expect(vc => vc.CanOpenViewFor(nodeData)).Return(false); + treeViewControlMock.Expect(tvc => tvc.CanExpandOrCollapseForData(nodeData)).Repeat.Twice().Return(false); + viewCommandsHandlerMock.Expect(vc => vc.CanOpenViewFor(nodeData)).Return(false); mocksRepository.ReplayAll(); - plugin.Gui = gui; + plugin.Gui = guiMock; // Call - var contextMenu = info.ContextMenuStrip(nodeData, null, treeViewControl); + var contextMenu = info.ContextMenuStrip(nodeData, null, treeViewControlMock); // Assert mocksRepository.VerifyAll(); // Expect no calls on arguments @@ -506,7 +510,7 @@ public void ContextMenuStrip_FailureMechanismSetHydraulicBoundaryDatabaseNotValid_ContextMenuItemDisabledAndTooltipSet() { // Setup - var gui = mocksRepository.StrictMock(); + var guiMock = mocksRepository.StrictMock(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); failureMechanism.AddSection(new FailureMechanismSection("test", new[] { new Point2D(0, 0) })); failureMechanism.CalculationsGroup.Children.Add(new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), @@ -517,22 +521,22 @@ var nodeData = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSectionMock); - var applicationFeatureCommandHandler = mocksRepository.Stub(); - var exportImportHandler = mocksRepository.Stub(); - var viewCommandsHandler = mocksRepository.StrictMock(); - var treeViewControl = mocksRepository.StrictMock(); + var applicationFeatureCommandHandlerStub = mocksRepository.Stub(); + var exportImportHandlerStub = mocksRepository.Stub(); + var viewCommandsHandlerMock = mocksRepository.StrictMock(); + var treeViewControlMock = mocksRepository.StrictMock(); - var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandler, exportImportHandler, viewCommandsHandler, nodeData, treeViewControl); - gui.Expect(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); + var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandlerStub, exportImportHandlerStub, viewCommandsHandlerMock, nodeData, treeViewControlMock); + guiMock.Expect(g => g.Get(nodeData, treeViewControlMock)).Return(menuBuilder); - treeViewControl.Expect(tvc => tvc.CanExpandOrCollapseForData(nodeData)).Repeat.Twice().Return(false); - viewCommandsHandler.Expect(vc => vc.CanOpenViewFor(nodeData)).Return(false); + treeViewControlMock.Expect(tvc => tvc.CanExpandOrCollapseForData(nodeData)).Repeat.Twice().Return(false); + viewCommandsHandlerMock.Expect(vc => vc.CanOpenViewFor(nodeData)).Return(false); mocksRepository.ReplayAll(); - plugin.Gui = gui; + plugin.Gui = guiMock; // Call - ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, null, treeViewControl); + ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, null, treeViewControlMock); // Assert mocksRepository.VerifyAll(); // Expect no calls on arguments @@ -549,7 +553,7 @@ public void ContextMenuStrip_FailureMechanismSectionsAndHydraulicDatabaseSet_ReturnContextMenuWithCalculateAllEnabled() { // Setup - var gui = mocksRepository.StrictMock(); + var guiMock = mocksRepository.StrictMock(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); failureMechanism.AddSection(new FailureMechanismSection("test", new[] { new Point2D(0, 0) })); failureMechanism.CalculationsGroup.Children.Add(new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), @@ -568,22 +572,22 @@ var nodeData = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSectionMock); - var applicationFeatureCommandHandler = mocksRepository.Stub(); - var exportImportHandler = mocksRepository.Stub(); - var viewCommandsHandler = mocksRepository.StrictMock(); - var treeViewControl = mocksRepository.StrictMock(); + var applicationFeatureCommandHandlerStub = mocksRepository.Stub(); + var exportImportHandlerStub = mocksRepository.Stub(); + var viewCommandsHandlerMock = mocksRepository.StrictMock(); + var treeViewControlMock = mocksRepository.StrictMock(); - var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandler, exportImportHandler, viewCommandsHandler, nodeData, treeViewControl); - gui.Expect(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); + var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandlerStub, exportImportHandlerStub, viewCommandsHandlerMock, nodeData, treeViewControlMock); + guiMock.Expect(g => g.Get(nodeData, treeViewControlMock)).Return(menuBuilder); - treeViewControl.Expect(tvc => tvc.CanExpandOrCollapseForData(nodeData)).Repeat.Twice().Return(false); - viewCommandsHandler.Expect(vc => vc.CanOpenViewFor(nodeData)).Return(false); + treeViewControlMock.Expect(tvc => tvc.CanExpandOrCollapseForData(nodeData)).Repeat.Twice().Return(false); + viewCommandsHandlerMock.Expect(vc => vc.CanOpenViewFor(nodeData)).Return(false); mocksRepository.ReplayAll(); - plugin.Gui = gui; + plugin.Gui = guiMock; // Call - ContextMenuStrip menu = info.ContextMenuStrip(nodeData, null, treeViewControl); + ContextMenuStrip menu = info.ContextMenuStrip(nodeData, null, treeViewControlMock); // Assert TestHelper.AssertContextMenuStripContainsItem(menu, 4, @@ -597,28 +601,28 @@ public void ContextMenuStrip_NoCalculationsInFailureMechanism_ContextMenuItemDisabled() { // Setup - var gui = mocksRepository.StrictMock(); + var guiMock = mocksRepository.StrictMock(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); var assessmentSectionMock = mocksRepository.StrictMock(); var nodeData = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSectionMock); - var applicationFeatureCommandHandler = mocksRepository.Stub(); - var exportImportHandler = mocksRepository.Stub(); - var viewCommandsHandler = mocksRepository.StrictMock(); - var treeViewControl = mocksRepository.StrictMock(); + var applicationFeatureCommandHandlerStub = mocksRepository.Stub(); + var exportImportHandlerStub = mocksRepository.Stub(); + var viewCommandsHandlerMock = mocksRepository.StrictMock(); + var treeViewControlMock = mocksRepository.StrictMock(); - var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandler, exportImportHandler, viewCommandsHandler, nodeData, treeViewControl); - gui.Expect(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); + var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandlerStub, exportImportHandlerStub, viewCommandsHandlerMock, nodeData, treeViewControlMock); + guiMock.Expect(g => g.Get(nodeData, treeViewControlMock)).Return(menuBuilder); - treeViewControl.Expect(tvc => tvc.CanExpandOrCollapseForData(nodeData)).Repeat.Twice().Return(false); - viewCommandsHandler.Expect(vc => vc.CanOpenViewFor(nodeData)).Return(false); + treeViewControlMock.Expect(tvc => tvc.CanExpandOrCollapseForData(nodeData)).Repeat.Twice().Return(false); + viewCommandsHandlerMock.Expect(vc => vc.CanOpenViewFor(nodeData)).Return(false); mocksRepository.ReplayAll(); - plugin.Gui = gui; + plugin.Gui = guiMock; // Call - ContextMenuStrip menu = info.ContextMenuStrip(nodeData, null, treeViewControl); + ContextMenuStrip menu = info.ContextMenuStrip(nodeData, null, treeViewControlMock); // Assert TestHelper.AssertContextMenuStripContainsItem(menu, 4, @@ -629,72 +633,6 @@ mocksRepository.VerifyAll(); } - [Test] - [TestCase(true)] - [TestCase(false)] - public void GivenCalculationsWithOutput_WhenClearing_ThenCalculationsClearedAndNotified(bool confirm) - { - // Given - var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); - var assessmentSection = mocksRepository.Stub(); - var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSection); - - var validCalculation = GrassCoverErosionInwardsCalculationFactory.CreateCalculationWithValidInput(); - validCalculation.Name = "A"; - var invalidCalculation = GrassCoverErosionInwardsCalculationFactory.CreateCalculationWithInvalidData(); - invalidCalculation.Name = "B"; - failureMechanism.CalculationsGroup.Children.Add(validCalculation); - failureMechanism.CalculationsGroup.Children.Add(invalidCalculation); - - var gui = mocksRepository.DynamicMock(); - var observerMock = mocksRepository.StrictMock(); - var treeViewControlMock = mocksRepository.StrictMock(); - gui.Expect(cmp => cmp.Get(failureMechanismContext, treeViewControlMock)).Return(new CustomItemsOnlyContextMenuBuilder()); - - if (confirm) - { - observerMock.Expect(o => o.UpdateObserver()).Repeat.Twice(); - } - mocksRepository.ReplayAll(); - - plugin.Gui = gui; - - validCalculation.Output = new GrassCoverErosionInwardsOutput(0, 0, 0, 0, 0); - validCalculation.Attach(observerMock); - invalidCalculation.Output = new GrassCoverErosionInwardsOutput(0, 0, 0, 0, 0); - invalidCalculation.Attach(observerMock); - - var contextMenuAdapter = info.ContextMenuStrip(failureMechanismContext, null, treeViewControlMock); - - string messageBoxText = null, messageBoxTitle = null; - DialogBoxHandler = (name, wnd) => - { - var messageBox = new MessageBoxTester(wnd); - messageBoxText = messageBox.Text; - messageBoxTitle = messageBox.Title; - if (confirm) - { - messageBox.ClickOk(); - } - else - { - messageBox.ClickCancel(); - } - }; - - // When - contextMenuAdapter.Items[contextMenuClearAllIndex].PerformClick(); - - // Then - foreach (var calculation in failureMechanism.CalculationsGroup.Children.OfType()) - { - Assert.AreNotEqual(confirm, calculation.HasOutput); - } - Assert.AreEqual("Bevestigen", messageBoxTitle); - Assert.AreEqual("Weet u zeker dat u alle uitvoer wilt wissen?", messageBoxText); - mocksRepository.VerifyAll(); - } - private const int contextMenuRelevancyIndexWhenRelevant = 1; private const int contextMenuRelevancyIndexWhenNotRelevant = 0; private const int contextMenuCalculateAllIndex = 3; Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/Ringtoets.HeightStructures.Forms.Test.csproj =================================================================== diff -u -r9c97b82cdd55ddd5fbe5143110bbbbf576bda162 -rb4bb9d9f038ead7c2720a2ffc39c8522c9f9c028 --- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/Ringtoets.HeightStructures.Forms.Test.csproj (.../Ringtoets.HeightStructures.Forms.Test.csproj) (revision 9c97b82cdd55ddd5fbe5143110bbbbf576bda162) +++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Forms.Test/Ringtoets.HeightStructures.Forms.Test.csproj (.../Ringtoets.HeightStructures.Forms.Test.csproj) (revision b4bb9d9f038ead7c2720a2ffc39c8522c9f9c028) @@ -47,12 +47,15 @@ + + + @@ -65,10 +68,22 @@ {3bbfd65b-b277-4e50-ae6d-bd24c3434609} Core.Common.Base + + {1D27F91F-4E62-4EAF-A0A8-A32708B9A9B1} + Core.Common.Controls.TreeView + {9a2d67e6-26ac-4d17-b11a-2b4372f2f572} Core.Common.Controls + + {30e4c2ae-719e-4d70-9fa9-668a9767fbfa} + Core.Common.Gui + + + {26214BD0-DAFB-4CFC-8EB2-80C5D53C859E} + Core.Common.Gui.TestUtil + {D749EE4C-CE50-4C17-BF01-9A953028C126} Core.Common.TestUtil @@ -89,6 +104,10 @@ {F0BCF06A-3D01-4D65-A249-E2A14AEC6EFD} Ringtoets.HeightStructures.Forms + + {9AF85B2B-8D78-43C5-9542-FBB3A14EAB36} + Ringtoets.HeightStructures.Plugin +