Index: Riskeer/DuneErosion/src/Riskeer.DuneErosion.Plugin/Handlers/DuneLocationCalculationsForTargetProbabilityChangeHandler.cs =================================================================== diff -u -r57ef55e67931df024753fe19a636c02eaae148c1 -r0a1c91ea21e2c769d7383f49d88d3695e54d7857 --- Riskeer/DuneErosion/src/Riskeer.DuneErosion.Plugin/Handlers/DuneLocationCalculationsForTargetProbabilityChangeHandler.cs (.../DuneLocationCalculationsForTargetProbabilityChangeHandler.cs) (revision 57ef55e67931df024753fe19a636c02eaae148c1) +++ Riskeer/DuneErosion/src/Riskeer.DuneErosion.Plugin/Handlers/DuneLocationCalculationsForTargetProbabilityChangeHandler.cs (.../DuneLocationCalculationsForTargetProbabilityChangeHandler.cs) (revision 0a1c91ea21e2c769d7383f49d88d3695e54d7857) @@ -77,8 +77,13 @@ 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); @@ -98,5 +103,10 @@ return Enumerable.Empty(); } + + private bool HasCalculationOutput() + { + return calculationsForTargetProbability.DuneLocationCalculations.Any(calc => calc.Output != null); + } } } \ No newline at end of file Index: Riskeer/DuneErosion/test/Riskeer.DuneErosion.Plugin.Test/Handlers/DuneLocationCalculationsForTargetProbabilityChangeHandlerTest.cs =================================================================== diff -u -r9453b0efd19b36bd38b1bc4e79e4c29923965fce -r0a1c91ea21e2c769d7383f49d88d3695e54d7857 --- Riskeer/DuneErosion/test/Riskeer.DuneErosion.Plugin.Test/Handlers/DuneLocationCalculationsForTargetProbabilityChangeHandlerTest.cs (.../DuneLocationCalculationsForTargetProbabilityChangeHandlerTest.cs) (revision 9453b0efd19b36bd38b1bc4e79e4c29923965fce) +++ Riskeer/DuneErosion/test/Riskeer.DuneErosion.Plugin.Test/Handlers/DuneLocationCalculationsForTargetProbabilityChangeHandlerTest.cs (.../DuneLocationCalculationsForTargetProbabilityChangeHandlerTest.cs) (revision 0a1c91ea21e2c769d7383f49d88d3695e54d7857) @@ -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 DuneLocationCalculationsForTargetProbabilityChangeHandler( - new DuneLocationCalculationsForTargetProbability(0.1)); + CreateCalculationsForTargetProbabilityWithAndWithoutOutput()); // Call handler.SetPropertyValueAfterConfirmation(() => {}); @@ -104,6 +104,27 @@ } [Test] + public void SetPropertyValueAfterConfirmation_CalculationsForTargetProbabilityWithoutOutput_NoConfirmationRequired() + { + // Setup + var handler = new DuneLocationCalculationsForTargetProbabilityChangeHandler( + new DuneLocationCalculationsForTargetProbability(0.1) + { + DuneLocationCalculations = + { + CreateCalculation(), + CreateCalculation() + } + }); + + // 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 +160,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 DuneLocationCalculationsForTargetProbability(0.1) - { - DuneLocationCalculations = - { - new DuneLocationCalculation(new TestDuneLocation()) - } - }; - + DuneLocationCalculationsForTargetProbability calculationsForTargetProbability = CreateCalculationsForTargetProbabilityWithoutOutput(); var handler = new DuneLocationCalculationsForTargetProbabilityChangeHandler( calculationsForTargetProbability); @@ -175,6 +183,22 @@ } [Test] + public void SetPropertyValueAfterConfirmation_ConfirmationNotRequired_HandlerExecuted() + { + // Setup + var handler = new DuneLocationCalculationsForTargetProbabilityChangeHandler( + CreateCalculationsForTargetProbabilityWithoutOutput()); + + var handlerExecuted = false; + + // Call + handler.SetPropertyValueAfterConfirmation(() => handlerExecuted = true); + + // Assert + Assert.IsTrue(handlerExecuted); + } + + [Test] public void SetPropertyValueAfterConfirmation_ConfirmationGiven_HandlerExecuted() { // Setup @@ -185,7 +209,7 @@ }; var handler = new DuneLocationCalculationsForTargetProbabilityChangeHandler( - new DuneLocationCalculationsForTargetProbability(0.1)); + CreateCalculationsForTargetProbabilityWithAndWithoutOutput()); var handlerExecuted = false; @@ -207,7 +231,6 @@ }; DuneLocationCalculationsForTargetProbability calculationsForTargetProbability = CreateCalculationsForTargetProbabilityWithAndWithoutOutput(); - var handler = new DuneLocationCalculationsForTargetProbabilityChangeHandler(calculationsForTargetProbability); var propertySet = 0; @@ -225,14 +248,8 @@ public void SetPropertyValueAfterConfirmation_ConfirmationGivenExceptionInSetValue_ExceptionBubbled() { // Setup - DialogBoxHandler = (name, wnd) => - { - var tester = new MessageBoxTester(wnd); - tester.ClickOk(); - }; - var handler = new DuneLocationCalculationsForTargetProbabilityChangeHandler( - new DuneLocationCalculationsForTargetProbability(0.1)); + CreateCalculationsForTargetProbabilityWithoutOutput()); var expectedException = new Exception(); @@ -246,27 +263,42 @@ private static DuneLocationCalculationsForTargetProbability CreateCalculationsForTargetProbabilityWithAndWithoutOutput() { - var calculationWithOutput1 = new DuneLocationCalculation(new TestDuneLocation()) + return new DuneLocationCalculationsForTargetProbability(0.1) { - Output = new TestDuneLocationCalculationOutput() + DuneLocationCalculations = + { + CreateCalculation(), + CreateCalculation(true), + CreateCalculation(), + CreateCalculation(true), + CreateCalculation() + } }; - - var calculationWithOutput2 = new DuneLocationCalculation(new TestDuneLocation()) - { - Output = new TestDuneLocationCalculationOutput() - }; - + } + + private static DuneLocationCalculationsForTargetProbability CreateCalculationsForTargetProbabilityWithoutOutput() + { return new DuneLocationCalculationsForTargetProbability(0.1) { DuneLocationCalculations = { - new DuneLocationCalculation(new TestDuneLocation()), - calculationWithOutput1, - new DuneLocationCalculation(new TestDuneLocation()), - calculationWithOutput2, - new DuneLocationCalculation(new TestDuneLocation()) + CreateCalculation(), + CreateCalculation(), + CreateCalculation() } }; } + + private static DuneLocationCalculation CreateCalculation(bool hasOutput = false) + { + var calculation = new DuneLocationCalculation(new TestDuneLocation()); + + if (hasOutput) + { + calculation.Output = new TestDuneLocationCalculationOutput(); + } + + return calculation; + } } } \ No newline at end of file