Index: Riskeer/DuneErosion/src/Riskeer.DuneErosion.Plugin/DuneErosionPlugin.cs =================================================================== diff -u -rc8325e7bd679e2c5cbdfb919c00d6651d46bafd7 -r08ed675bb4d7ce84ce02be1b010f5f289093081e --- Riskeer/DuneErosion/src/Riskeer.DuneErosion.Plugin/DuneErosionPlugin.cs (.../DuneErosionPlugin.cs) (revision c8325e7bd679e2c5cbdfb919c00d6651d46bafd7) +++ Riskeer/DuneErosion/src/Riskeer.DuneErosion.Plugin/DuneErosionPlugin.cs (.../DuneErosionPlugin.cs) (revision 08ed675bb4d7ce84ce02be1b010f5f289093081e) @@ -444,6 +444,11 @@ nodeData.WrappedData.NotifyObservers(); }); + if (!nodeData.FailureMechanism.DuneLocations.Any()) + { + addTargetProbabilityItem.Enabled = false; + } + return Gui.Get(nodeData, treeViewControl) .AddCustomItem(addTargetProbabilityItem) .AddSeparator() Index: Riskeer/DuneErosion/test/Riskeer.DuneErosion.Plugin.Test/TreeNodeInfos/DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -r3c8b0bc8bb3bad70dc25f55e5261f606ecc3c280 -r08ed675bb4d7ce84ce02be1b010f5f289093081e --- Riskeer/DuneErosion/test/Riskeer.DuneErosion.Plugin.Test/TreeNodeInfos/DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContextTreeNodeInfoTest.cs (.../DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContextTreeNodeInfoTest.cs) (revision 3c8b0bc8bb3bad70dc25f55e5261f606ecc3c280) +++ Riskeer/DuneErosion/test/Riskeer.DuneErosion.Plugin.Test/TreeNodeInfos/DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContextTreeNodeInfoTest.cs (.../DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContextTreeNodeInfoTest.cs) (revision 08ed675bb4d7ce84ce02be1b010f5f289093081e) @@ -260,7 +260,8 @@ TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuAddTargetProbabilityIndex, "Doelkans toevoegen", "Voeg een nieuwe doelkans toe aan deze map.", - RiskeerCommonFormsResources.GenericInputOutputIcon); + RiskeerCommonFormsResources.GenericInputOutputIcon, + false); TestHelper.AssertContextMenuStripContainsItem(menu, contextMenuCalculateAllIndex, "Alles be&rekenen", @@ -276,59 +277,6 @@ } [Test] - public void ContextMenuStrip_ClickOnAddTargetProbabilityItem_CalculationsForTargetProbabilityAddedAndObserversNotified() - { - // Given - var failureMechanism = new DuneErosionFailureMechanism(); - failureMechanism.SetDuneLocations(new[] - { - new TestDuneLocation("Location 1"), - new TestDuneLocation("Location 2") - }); - - var calculations = new ObservableList(); - var context = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext(calculations, - failureMechanism, - new AssessmentSectionStub()); - - var mockRepository = new MockRepository(); - var calculationsObserver = mockRepository.StrictMock(); - calculationsObserver.Expect(o => o.UpdateObserver()); - calculations.Attach(calculationsObserver); - - using (var treeViewControl = new TreeViewControl()) - { - IMainWindow mainWindow = MainWindowTestHelper.CreateMainWindowStub(mockRepository); - - IGui gui = StubFactory.CreateGuiStub(mockRepository); - gui.Stub(g => g.MainWindow).Return(mainWindow); - gui.Stub(cmp => cmp.Get(context, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); - - mockRepository.ReplayAll(); - - using (var plugin = new DuneErosionPlugin()) - { - TreeNodeInfo info = GetInfo(plugin); - plugin.Gui = gui; - plugin.Activate(); - - using (ContextMenuStrip contextMenuAdapter = info.ContextMenuStrip(context, null, treeViewControl)) - { - // When - contextMenuAdapter.Items[contextMenuAddTargetProbabilityIndex].PerformClick(); - - // Then - Assert.AreEqual(1, calculations.Count); - Assert.AreEqual(0.01, calculations[0].TargetProbability); - Assert.AreEqual(2, calculations[0].DuneLocationCalculations.Count); - } - } - } - - mockRepository.VerifyAll(); - } - - [Test] public void ChildNodeObjects_DuneLocationsPresent_ReturnsExpectedChildData() { // Setup @@ -405,6 +353,103 @@ } [Test] + public void ContextMenuStrip_NoDuneLocationsPresent_ContextMenuItemAddTargetProbabilityDisabled() + { + // Setup + var failureMechanism = new DuneErosionFailureMechanism(); + var assessmentSection = new AssessmentSectionStub + { + HydraulicBoundaryDatabase = + { + FilePath = validFilePath + } + }; + HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(assessmentSection.HydraulicBoundaryDatabase); + + var groupContext = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext(new ObservableList(), + failureMechanism, + assessmentSection); + + var mocks = new MockRepository(); + + using (var treeViewControl = new TreeViewControl()) + { + var gui = mocks.Stub(); + gui.Stub(cmp => cmp.Get(groupContext, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); + gui.Stub(g => g.ViewHost).Return(mocks.Stub()); + mocks.ReplayAll(); + + using (var plugin = new DuneErosionPlugin()) + { + TreeNodeInfo info = GetInfo(plugin); + plugin.Gui = gui; + + // Call + using (ContextMenuStrip contextMenu = info.ContextMenuStrip(groupContext, null, treeViewControl)) + { + // Assert + Assert.IsFalse(contextMenu.Items[contextMenuAddTargetProbabilityIndex].Enabled); + } + } + } + + mocks.VerifyAll(); + } + + [Test] + public void ContextMenuStrip_ClickOnAddTargetProbabilityItem_CalculationsForTargetProbabilityAddedAndObserversNotified() + { + // Given + var failureMechanism = new DuneErosionFailureMechanism(); + failureMechanism.SetDuneLocations(new[] + { + new TestDuneLocation("Location 1"), + new TestDuneLocation("Location 2") + }); + + var calculations = new ObservableList(); + var context = new DuneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext(calculations, + failureMechanism, + new AssessmentSectionStub()); + + var mockRepository = new MockRepository(); + var calculationsObserver = mockRepository.StrictMock(); + calculationsObserver.Expect(o => o.UpdateObserver()); + calculations.Attach(calculationsObserver); + + using (var treeViewControl = new TreeViewControl()) + { + IMainWindow mainWindow = MainWindowTestHelper.CreateMainWindowStub(mockRepository); + + IGui gui = StubFactory.CreateGuiStub(mockRepository); + gui.Stub(g => g.MainWindow).Return(mainWindow); + gui.Stub(cmp => cmp.Get(context, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); + + mockRepository.ReplayAll(); + + using (var plugin = new DuneErosionPlugin()) + { + TreeNodeInfo info = GetInfo(plugin); + plugin.Gui = gui; + plugin.Activate(); + + using (ContextMenuStrip contextMenuAdapter = info.ContextMenuStrip(context, null, treeViewControl)) + { + // When + contextMenuAdapter.Items[contextMenuAddTargetProbabilityIndex].PerformClick(); + + // Then + Assert.AreEqual(1, calculations.Count); + Assert.AreEqual(0.01, calculations[0].TargetProbability); + Assert.AreEqual(2, calculations[0].DuneLocationCalculations.Count); + } + } + } + + mockRepository.VerifyAll(); + } + + [Test] public void ContextMenuStrip_HydraulicBoundaryDatabaseNotLinked_ContextMenuItemCalculateAllDisabledAndTooltipSet() { // Setup @@ -441,9 +486,7 @@ // Assert ToolStripItem contextMenuItem = contextMenu.Items[contextMenuCalculateAllIndex]; - Assert.AreEqual("Alles be&rekenen", contextMenuItem.Text); StringAssert.Contains("Er is geen hydraulische belastingendatabase geïmporteerd.", contextMenuItem.ToolTipText); - TestHelper.AssertImagesAreEqual(RiskeerCommonFormsResources.CalculateAllIcon, contextMenuItem.Image); Assert.IsFalse(contextMenuItem.Enabled); } } @@ -490,9 +533,7 @@ // Assert ToolStripItem contextMenuItem = contextMenu.Items[contextMenuCalculateAllIndex]; - Assert.AreEqual("Alles be&rekenen", contextMenuItem.Text); StringAssert.Contains("Geen van de locaties is geschikt voor een hydraulische belastingenberekening.", contextMenuItem.ToolTipText); - TestHelper.AssertImagesAreEqual(RiskeerCommonFormsResources.CalculateAllIcon, contextMenuItem.Image); Assert.IsFalse(contextMenuItem.Enabled); } }