Index: Riskeer/Integration/src/Riskeer.Integration.Plugin/Handlers/HydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandler.cs =================================================================== diff -u -rdcd28600cb6af69cb49bf311b0fa61f78ad149be -ra38bad10b40fd7ff08f2a928a4baa69311c5728a --- Riskeer/Integration/src/Riskeer.Integration.Plugin/Handlers/HydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandler.cs (.../HydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandler.cs) (revision dcd28600cb6af69cb49bf311b0fa61f78ad149be) +++ Riskeer/Integration/src/Riskeer.Integration.Plugin/Handlers/HydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandler.cs (.../HydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandler.cs) (revision a38bad10b40fd7ff08f2a928a4baa69311c5728a) @@ -98,12 +98,22 @@ return affectedObjects; } - private static bool ConfirmPropertyChange() + private bool ConfirmPropertyChange() { + if (!HasCalculationOutput()) + { + return true; + } + DialogResult result = MessageBox.Show(RiskeerCommonPluginResources.TargetProbabilityChangeHandler_Confirm_change_target_probability_and_clear_dependent_data, CoreCommonBaseResources.Confirm, MessageBoxButtons.OKCancel); return result == DialogResult.OK; } + + private bool HasCalculationOutput() + { + return CalculationsForTargetProbability.HydraulicBoundaryLocationCalculations.Any(calc => calc.HasOutput); + } } } \ No newline at end of file Index: Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/Handlers/HydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandlerTest.cs =================================================================== diff -u -rdcd28600cb6af69cb49bf311b0fa61f78ad149be -ra38bad10b40fd7ff08f2a928a4baa69311c5728a --- Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/Handlers/HydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandlerTest.cs (.../HydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandlerTest.cs) (revision dcd28600cb6af69cb49bf311b0fa61f78ad149be) +++ Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/Handlers/HydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandlerTest.cs (.../HydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandlerTest.cs) (revision a38bad10b40fd7ff08f2a928a4baa69311c5728a) @@ -74,7 +74,7 @@ } [Test] - public void SetPropertyValueAfterConfirmation_Always_ConfirmationRequired() + public void SetPropertyValueAfterConfirmation_CalculationsForTargetProbabilityWithOutput_ConfirmationRequired() { // Setup var title = ""; @@ -89,7 +89,7 @@ }; var handler = new HydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandler( - new HydraulicBoundaryLocationCalculationsForTargetProbability(0.1)); + CreateCalculationsForTargetProbabilityWithAndWithoutOutput()); // Call handler.SetPropertyValueAfterConfirmation(() => {}); @@ -104,6 +104,20 @@ } [Test] + public void SetPropertyValueAfterConfirmation_CalculationsForTargetProbabilityWithoutOutput_NoConfirmationRequired() + { + // Setup + var handler = new HydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandler( + CreateCalculationsForTargetProbabilityWithoutOutput()); + + // Call + handler.SetPropertyValueAfterConfirmation(() => {}); + + // Assert + // No assert as the check is to verify whether a modal dialog is spawned + } + + [Test] public void SetPropertyValueAfterConfirmation_CalculationsForTargetProbabilityWithAndWithoutOutput_AllCalculationOutputClearedAndReturnsAllAffectedObjects() { // Setup @@ -139,23 +153,10 @@ } [Test] - public void SetPropertyValueAfterConfirmation_CalculationsForTargetProbabilityWithoutOutput_ReturnsNoAffectedObjects() + public void SetPropertyValueAfterConfirmation_CalculationsForTargetProbabilityWithoutOutput_ReturnsAffectedObjectsAndDoesNotLog() { // Setup - DialogBoxHandler = (name, wnd) => - { - var tester = new MessageBoxTester(wnd); - tester.ClickOk(); - }; - - var calculationsForTargetProbability = new HydraulicBoundaryLocationCalculationsForTargetProbability(0.1) - { - HydraulicBoundaryLocationCalculations = - { - new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation()) - } - }; - + HydraulicBoundaryLocationCalculationsForTargetProbability calculationsForTargetProbability = CreateCalculationsForTargetProbabilityWithoutOutput(); var handler = new HydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandler( calculationsForTargetProbability); @@ -175,6 +176,22 @@ } [Test] + public void SetPropertyValueAfterConfirmation_ConfirmationNotRequired_HandlerExecuted() + { + // Setup + var handler = new HydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandler( + CreateCalculationsForTargetProbabilityWithoutOutput()); + + var handlerExecuted = false; + + // Call + handler.SetPropertyValueAfterConfirmation(() => handlerExecuted = true); + + // Assert + Assert.IsTrue(handlerExecuted); + } + + [Test] public void SetPropertyValueAfterConfirmation_ConfirmationGiven_HandlerExecuted() { // Setup @@ -185,7 +202,7 @@ }; var handler = new HydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandler( - new HydraulicBoundaryLocationCalculationsForTargetProbability(0.1)); + CreateCalculationsForTargetProbabilityWithAndWithoutOutput()); var handlerExecuted = false; @@ -222,17 +239,11 @@ } [Test] - public void SetPropertyValueAfterConfirmation_ConfirmationGivenExceptionInSetValue_ExceptionBubbled() + public void SetPropertyValueAfterConfirmation_ExceptionInSetValue_ExceptionBubbled() { // Setup - DialogBoxHandler = (name, wnd) => - { - var tester = new MessageBoxTester(wnd); - tester.ClickOk(); - }; - var handler = new HydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandler( - new HydraulicBoundaryLocationCalculationsForTargetProbability(0.1)); + CreateCalculationsForTargetProbabilityWithoutOutput()); var expectedException = new Exception(); @@ -246,29 +257,42 @@ private static HydraulicBoundaryLocationCalculationsForTargetProbability CreateCalculationsForTargetProbabilityWithAndWithoutOutput() { - var random = new Random(21); - - var calculationWithOutput1 = new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation()) + return new HydraulicBoundaryLocationCalculationsForTargetProbability(0.1) { - Output = new TestHydraulicBoundaryLocationCalculationOutput(random.NextDouble()) + HydraulicBoundaryLocationCalculations = + { + CreateCalculation(), + CreateCalculation(true), + CreateCalculation(), + CreateCalculation(true), + CreateCalculation() + } }; + } - var calculationWithOutput2 = new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation()) - { - Output = new TestHydraulicBoundaryLocationCalculationOutput(random.NextDouble()) - }; - + private static HydraulicBoundaryLocationCalculationsForTargetProbability CreateCalculationsForTargetProbabilityWithoutOutput() + { return new HydraulicBoundaryLocationCalculationsForTargetProbability(0.1) { HydraulicBoundaryLocationCalculations = { - new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation()), - calculationWithOutput1, - new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation()), - calculationWithOutput2, - new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation()) + CreateCalculation(), + CreateCalculation(), + CreateCalculation() } }; } + + private static HydraulicBoundaryLocationCalculation CreateCalculation(bool hasOutput = false) + { + var random = new Random(21); + var calculation = new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation()); + if (hasOutput) + { + calculation.Output = new TestHydraulicBoundaryLocationCalculationOutput(random.NextDouble()); + } + + return calculation; + } } } \ No newline at end of file Index: Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/Handlers/WaterLevelHydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandlerTest.cs =================================================================== diff -u -r2512e1d3bbadf2a96761bd456e5eeafbf8c79f2c -ra38bad10b40fd7ff08f2a928a4baa69311c5728a --- Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/Handlers/WaterLevelHydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandlerTest.cs (.../WaterLevelHydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandlerTest.cs) (revision 2512e1d3bbadf2a96761bd456e5eeafbf8c79f2c) +++ Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/Handlers/WaterLevelHydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandlerTest.cs (.../WaterLevelHydraulicBoundaryLocationCalculationsForTargetProbabilityChangeHandlerTest.cs) (revision a38bad10b40fd7ff08f2a928a4baa69311c5728a) @@ -131,12 +131,6 @@ public void SetPropertyValueAfterConfirmation_CalculationsForTargetProbabilityWithoutOutput_ReturnsOnlyCalculationsForTargetProbability() { // Setup - DialogBoxHandler = (name, wnd) => - { - var tester = new MessageBoxTester(wnd); - tester.ClickOk(); - }; - AssessmentSection assessmentSection = TestDataGenerator.GetAssessmentSectionWithAllCalculationConfigurations(); HydraulicBoundaryLocationCalculationsForTargetProbability calculationsForTargetProbability = assessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities