Index: Riskeer/Common/src/Riskeer.Common.Forms/TreeNodeInfos/RiskeerContextMenuBuilder.cs =================================================================== diff -u -rb2d2e3bdec7f5a7a486e6f7175e807d7e251e18d -r65dd8ecad3666fb01a8dbe1b03091ddc08eead7d --- Riskeer/Common/src/Riskeer.Common.Forms/TreeNodeInfos/RiskeerContextMenuBuilder.cs (.../RiskeerContextMenuBuilder.cs) (revision b2d2e3bdec7f5a7a486e6f7175e807d7e251e18d) +++ Riskeer/Common/src/Riskeer.Common.Forms/TreeNodeInfos/RiskeerContextMenuBuilder.cs (.../RiskeerContextMenuBuilder.cs) (revision 65dd8ecad3666fb01a8dbe1b03091ddc08eead7d) @@ -82,11 +82,14 @@ /// /// Adds an item to the , which clears the output of all calculations in a calculation group. /// - /// The calculation group to clear the output for. + /// The function to determine whether the context menu item should be enabled. + /// Object responsible for clearing the calculation output. /// The itself. - public RiskeerContextMenuBuilder AddClearAllCalculationOutputInGroupItem(CalculationGroup calculationGroup) + public RiskeerContextMenuBuilder AddClearAllCalculationOutputInGroupItem( + Func isContextItemEnabledFunc, IClearCalculationOutputChangeHandler changeHandler) { - contextMenuBuilder.AddCustomItem(RiskeerContextMenuItemFactory.CreateClearAllCalculationOutputInGroupItem(calculationGroup)); + contextMenuBuilder.AddCustomItem(RiskeerContextMenuItemFactory.CreateClearAllCalculationOutputInGroupItem( + isContextItemEnabledFunc, changeHandler)); return this; } Index: Riskeer/Common/test/Riskeer.Common.Forms.Test/TreeNodeInfos/RiskeerContextMenuBuilderTest.cs =================================================================== diff -u -rb2d2e3bdec7f5a7a486e6f7175e807d7e251e18d -r65dd8ecad3666fb01a8dbe1b03091ddc08eead7d --- Riskeer/Common/test/Riskeer.Common.Forms.Test/TreeNodeInfos/RiskeerContextMenuBuilderTest.cs (.../RiskeerContextMenuBuilderTest.cs) (revision b2d2e3bdec7f5a7a486e6f7175e807d7e251e18d) +++ Riskeer/Common/test/Riskeer.Common.Forms.Test/TreeNodeInfos/RiskeerContextMenuBuilderTest.cs (.../RiskeerContextMenuBuilderTest.cs) (revision 65dd8ecad3666fb01a8dbe1b03091ddc08eead7d) @@ -135,94 +135,35 @@ } [Test] - public void AddClearAllCalculationOutputInGroupItem_WhenBuildWithCalculationOutput_ItemAddedToContextMenuEnabled() + [TestCase(true)] + [TestCase(false)] + public void AddClearAllCalculationOutputInGroupItem_EnabledSituation_ItemAddedToContextMenuAsExpected(bool isEnabled) { // Setup - var mocks = new MockRepository(); - var applicationFeatureCommands = mocks.StrictMock(); - var importCommandHandler = mocks.StrictMock(); - var exportCommandHandler = mocks.StrictMock(); - var updateCommandHandler = mocks.StrictMock(); - var viewCommands = mocks.StrictMock(); - var calculationWithOutput = mocks.StrictMock(); + string expectedToolTipMessage = isEnabled + ? "Wis de uitvoer van alle berekeningen binnen deze map met berekeningen." + : "Er zijn geen berekeningen met uitvoer om te wissen."; - calculationWithOutput.Expect(c => c.HasOutput).Return(true); - - mocks.ReplayAll(); - - var calculationGroup = new CalculationGroup - { - Children = - { - calculationWithOutput - } - }; - using (var treeViewControl = new TreeViewControl()) - { - var contextMenuBuilder = new ContextMenuBuilder(applicationFeatureCommands, - importCommandHandler, - exportCommandHandler, - updateCommandHandler, - viewCommands, - calculationGroup, treeViewControl); - var riskeerContextMenuBuilder = new RiskeerContextMenuBuilder(contextMenuBuilder); - - // Call - ContextMenuStrip result = riskeerContextMenuBuilder.AddClearAllCalculationOutputInGroupItem(calculationGroup).Build(); - - // Assert - Assert.IsInstanceOf(result); - Assert.AreEqual(1, result.Items.Count); - - TestHelper.AssertContextMenuStripContainsItem(result, 0, - "&Wis alle uitvoer...", - "Wis de uitvoer van alle berekeningen binnen deze map met berekeningen.", - RiskeerFormsResources.ClearIcon); - } - - mocks.VerifyAll(); - } - - [Test] - public void AddClearAllCalculationOutputInGroupItem_WhenBuildWithoutCalculationOutput_ItemAddedToContextMenuDisabled() - { - // Setup var mocks = new MockRepository(); - var applicationFeatureCommands = mocks.StrictMock(); - var importCommandHandler = mocks.StrictMock(); - var exportCommandHandler = mocks.StrictMock(); - var updateCommandHandler = mocks.StrictMock(); - var viewCommands = mocks.StrictMock(); - + var changeHandler = mocks.Stub(); + var contextMenuBuilder = mocks.StrictMock(); + contextMenuBuilder.Expect(cmb => cmb.AddCustomItem(Arg.Is.NotNull)) + .WhenCalled(arg => + { + var contextMenuItem = (StrictContextMenuItem) arg.Arguments[0]; + Assert.AreEqual("&Wis alle uitvoer...", contextMenuItem.Text); + Assert.AreEqual(expectedToolTipMessage, contextMenuItem.ToolTipText); + Assert.AreEqual(isEnabled, contextMenuItem.Enabled); + }); mocks.ReplayAll(); - var calculationGroup = new CalculationGroup(); + var riskeerContextMenuBuilder = new RiskeerContextMenuBuilder(contextMenuBuilder); - using (var treeViewControl = new TreeViewControl()) - { - var contextMenuBuilder = new ContextMenuBuilder(applicationFeatureCommands, - importCommandHandler, - exportCommandHandler, - updateCommandHandler, - viewCommands, - calculationGroup, - treeViewControl); - var riskeerContextMenuBuilder = new RiskeerContextMenuBuilder(contextMenuBuilder); + // Call + riskeerContextMenuBuilder.AddClearAllCalculationOutputInGroupItem( + () => isEnabled, changeHandler); - // Call - ContextMenuStrip result = riskeerContextMenuBuilder.AddClearAllCalculationOutputInGroupItem(calculationGroup).Build(); - - // Assert - Assert.IsInstanceOf(result); - Assert.AreEqual(1, result.Items.Count); - - TestHelper.AssertContextMenuStripContainsItem(result, 0, - "&Wis alle uitvoer...", - "Er zijn geen berekeningen met uitvoer om te wissen.", - RiskeerFormsResources.ClearIcon, - false); - } - + // Assert mocks.VerifyAll(); }