Index: Riskeer/Common/src/Riskeer.Common.Forms/TreeNodeInfos/RiskeerContextMenuBuilder.cs =================================================================== diff -u -r65dd8ecad3666fb01a8dbe1b03091ddc08eead7d -r1df72aab255f14ed757bf592b38148985b9bc524 --- Riskeer/Common/src/Riskeer.Common.Forms/TreeNodeInfos/RiskeerContextMenuBuilder.cs (.../RiskeerContextMenuBuilder.cs) (revision 65dd8ecad3666fb01a8dbe1b03091ddc08eead7d) +++ Riskeer/Common/src/Riskeer.Common.Forms/TreeNodeInfos/RiskeerContextMenuBuilder.cs (.../RiskeerContextMenuBuilder.cs) (revision 1df72aab255f14ed757bf592b38148985b9bc524) @@ -198,11 +198,14 @@ /// /// Adds an item to the , which clears the output of a calculation. /// - /// The calculation 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 AddClearCalculationOutputItem(ICalculation calculation) + public RiskeerContextMenuBuilder AddClearCalculationOutputItem( + Func isContextItemEnabledFunc, IClearCalculationOutputChangeHandler changeHandler) { - contextMenuBuilder.AddCustomItem(RiskeerContextMenuItemFactory.CreateClearCalculationOutputItem(calculation)); + contextMenuBuilder.AddCustomItem(RiskeerContextMenuItemFactory.CreateClearCalculationOutputItem( + isContextItemEnabledFunc, changeHandler)); return this; } Index: Riskeer/Common/test/Riskeer.Common.Forms.Test/TreeNodeInfos/RiskeerContextMenuBuilderTest.cs =================================================================== diff -u -r65dd8ecad3666fb01a8dbe1b03091ddc08eead7d -r1df72aab255f14ed757bf592b38148985b9bc524 --- Riskeer/Common/test/Riskeer.Common.Forms.Test/TreeNodeInfos/RiskeerContextMenuBuilderTest.cs (.../RiskeerContextMenuBuilderTest.cs) (revision 65dd8ecad3666fb01a8dbe1b03091ddc08eead7d) +++ Riskeer/Common/test/Riskeer.Common.Forms.Test/TreeNodeInfos/RiskeerContextMenuBuilderTest.cs (.../RiskeerContextMenuBuilderTest.cs) (revision 1df72aab255f14ed757bf592b38148985b9bc524) @@ -246,89 +246,35 @@ } [Test] - public void AddClearCalculationOutputItem_WhenBuildWithCalculationWithOutput_ItemAddedToContextMenuEnabled() + [TestCase(true)] + [TestCase(false)] + public void AddClearCalculationOutputItem_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 deze berekening." + : "Deze berekening heeft geen uitvoer om te wissen."; - calculationWithOutput.Expect(c => c.HasOutput).Return(true); - - mocks.ReplayAll(); - - using (var treeViewControl = new TreeViewControl()) - { - var contextMenuBuilder = new ContextMenuBuilder(applicationFeatureCommands, - importCommandHandler, - exportCommandHandler, - updateCommandHandler, - viewCommands, - calculationWithOutput, - treeViewControl); - var riskeerContextMenuBuilder = new RiskeerContextMenuBuilder(contextMenuBuilder); - - // Call - ContextMenuStrip result = riskeerContextMenuBuilder.AddClearCalculationOutputItem(calculationWithOutput).Build(); - - // Assert - Assert.IsInstanceOf(result); - Assert.AreEqual(1, result.Items.Count); - - TestHelper.AssertContextMenuStripContainsItem(result, 0, - "&Wis uitvoer...", - "Wis de uitvoer van deze berekening.", - RiskeerFormsResources.ClearIcon); - } - - mocks.VerifyAll(); - } - - [Test] - public void AddClearCalculationOutputItem_WhenBuildWithCalculationWithoutOutput_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 calculationWithoutOutput = mocks.StrictMock(); - - calculationWithoutOutput.Expect(c => c.HasOutput).Return(false); - + 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 uitvoer...", contextMenuItem.Text); + Assert.AreEqual(expectedToolTipMessage, contextMenuItem.ToolTipText); + Assert.AreEqual(isEnabled, contextMenuItem.Enabled); + }); mocks.ReplayAll(); - using (var treeViewControl = new TreeViewControl()) - { - var contextMenuBuilder = new ContextMenuBuilder(applicationFeatureCommands, - importCommandHandler, - exportCommandHandler, - updateCommandHandler, - viewCommands, - calculationWithoutOutput, - treeViewControl); - var riskeerContextMenuBuilder = new RiskeerContextMenuBuilder(contextMenuBuilder); + var riskeerContextMenuBuilder = new RiskeerContextMenuBuilder(contextMenuBuilder); - // Call - ContextMenuStrip result = riskeerContextMenuBuilder.AddClearCalculationOutputItem(calculationWithoutOutput).Build(); + // Call + riskeerContextMenuBuilder.AddClearCalculationOutputItem( + () => isEnabled, changeHandler); - // Assert - Assert.IsInstanceOf(result); - Assert.AreEqual(1, result.Items.Count); - - TestHelper.AssertContextMenuStripContainsItem(result, 0, - "&Wis uitvoer...", - "Deze berekening heeft geen uitvoer om te wissen.", - RiskeerFormsResources.ClearIcon, - false); - } - + // Assert mocks.VerifyAll(); }