Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/GrassCoverErosionOutwardsFailureMechanismPropertyChangeHandlerTest.cs =================================================================== diff -u -r545b105a213ed85564861b4bcf6d2d6425dbde50 -re2f91813f3aae8eb2daef6ff1ffac61d197148a8 --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/GrassCoverErosionOutwardsFailureMechanismPropertyChangeHandlerTest.cs (.../GrassCoverErosionOutwardsFailureMechanismPropertyChangeHandlerTest.cs) (revision 545b105a213ed85564861b4bcf6d2d6425dbde50) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/GrassCoverErosionOutwardsFailureMechanismPropertyChangeHandlerTest.cs (.../GrassCoverErosionOutwardsFailureMechanismPropertyChangeHandlerTest.cs) (revision e2f91813f3aae8eb2daef6ff1ffac61d197148a8) @@ -7,7 +7,6 @@ using NUnit.Framework; using Ringtoets.Common.Data.Hydraulics; using Ringtoets.Common.Data.TestUtil; -using Ringtoets.Common.Forms.TestUtil; using Ringtoets.GrassCoverErosionOutwards.Data; using Ringtoets.Revetment.Data; @@ -17,101 +16,140 @@ public class GrassCoverErosionOutwardsFailureMechanismPropertyChangeHandlerTest : NUnitFormTest { [Test] - public void ConfirmPropertyChange_Always_ShowMessageBox() + public void SetPropertyValueAfterConfirmation_WithoutFailureMechanism_ThrowsArgumentNullException() { // Setup - string title = ""; - string message = ""; - DialogBoxHandler = (name, wnd) => - { - var tester = new MessageBoxTester(wnd); - title = tester.Title; - message = tester.Text; + var changeHandler = new GrassCoverErosionOutwardsFailureMechanismPropertyChangeHandler(); - tester.ClickOk(); - }; - - var handler = new GrassCoverErosionOutwardsFailureMechanismPropertyChangeHandler(); - // Call - handler.ConfirmPropertyChange(); + TestDelegate test = () => changeHandler.SetPropertyValueAfterConfirmation( + null, + 3, + (f, v) => { }); // Assert - Assert.AreEqual("Bevestigen", title); - string expectedMessage = "Als u een parameter in een toetsspoor wijzigt, zal de uitvoer van alle randvoorwaarden locaties en berekeningen in dit toetsspoor verwijderd worden." + Environment.NewLine + - Environment.NewLine + - "Weet u zeker dat u wilt doorgaan?"; - Assert.AreEqual(expectedMessage, message); + var paramName = Assert.Throws(test).ParamName; + Assert.AreEqual("failureMechanism", paramName); } [Test] - public void ConfirmPropertyChange_MessageBoxOk_ReturnTrue() + public void SetPropertyValueAfterConfirmation_WithoutValue_ThrowsArgumentNullException() { - DialogBoxHandler = (name, wnd) => - { - var tester = new MessageBoxTester(wnd); - tester.ClickOk(); - }; + // Setup + var changeHandler = new GrassCoverErosionOutwardsFailureMechanismPropertyChangeHandler(); - var handler = new GrassCoverErosionOutwardsFailureMechanismPropertyChangeHandler(); - // Call - bool result = handler.ConfirmPropertyChange(); + TestDelegate test = () => changeHandler.SetPropertyValueAfterConfirmation( + new GrassCoverErosionOutwardsFailureMechanism(), + null, + (f, v) => { }); // Assert - Assert.IsTrue(result); + var paramName = Assert.Throws(test).ParamName; + Assert.AreEqual("value", paramName); } [Test] - public void ConfirmPropertyChange_MessageBoxCancel_ReturnFalse() + public void SetPropertyValueAfterConfirmation_WithoutSetProperty_ThrowsArgumentNullException() { - DialogBoxHandler = (name, wnd) => - { - var tester = new MessageBoxTester(wnd); - tester.ClickCancel(); - }; + // Setup + var changeHandler = new GrassCoverErosionOutwardsFailureMechanismPropertyChangeHandler(); - var handler = new GrassCoverErosionOutwardsFailureMechanismPropertyChangeHandler(); - // Call - bool result = handler.ConfirmPropertyChange(); + TestDelegate test = () => changeHandler.SetPropertyValueAfterConfirmation( + new GrassCoverErosionOutwardsFailureMechanism(), + 3, + null); // Assert - Assert.IsFalse(result); + var paramName = Assert.Throws(test).ParamName; + Assert.AreEqual("setValue", paramName); } [Test] - public void ChangeComposition_WithoutFailureMechanism_ThrowsArgumentNullException() + [TestCaseSource(nameof(ChangePropertyTestCases))] + public void SetPropertyValueAfterConfirmation_IfConfirmationRequiredThenGiven_MessageDialogShownSetValueCalledAffectedObjectsReturned(ChangePropertyTestCase testCase) { // Setup - var handler = new GrassCoverErosionOutwardsFailureMechanismPropertyChangeHandler(); + var dialogBoxWillBeShown = testCase.ExpectedAffectedCalculations.Any() || testCase.ExpectedAffectedLocations.Any(); + string title = ""; + string message = ""; + if (dialogBoxWillBeShown) + { + DialogBoxHandler = (name, wnd) => + { + var tester = new MessageBoxTester(wnd); + title = tester.Title; + message = tester.Text; + + tester.ClickOk(); + }; + } + + var failureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); + foreach (var calculation in testCase.Calculations) + { + failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation); + } + failureMechanism.HydraulicBoundaryLocations.AddRange(testCase.Locations); + + var propertySet = 0; + + var changeHandler = new GrassCoverErosionOutwardsFailureMechanismPropertyChangeHandler(); + // Call - TestDelegate test = () => handler.PropertyChanged(null); + var affectedObjects = changeHandler.SetPropertyValueAfterConfirmation( + failureMechanism, + 3, + (f, v) => propertySet++); // Assert - string paramName = Assert.Throws(test).ParamName; - Assert.AreEqual("failureMechanism", paramName); + if (dialogBoxWillBeShown) + { + Assert.AreEqual("Bevestigen", title); + string expectedMessage = "Als u een parameter in een toetsspoor wijzigt, zal de uitvoer van alle randvoorwaarden locaties en berekeningen in dit toetsspoor verwijderd worden." + Environment.NewLine + + Environment.NewLine + + "Weet u zeker dat u wilt doorgaan?"; + Assert.AreEqual(expectedMessage, message); + } + Assert.AreEqual(1, propertySet); + var expectedAffectedObjects = new List(testCase.ExpectedAffectedLocations); + expectedAffectedObjects.AddRange(testCase.ExpectedAffectedCalculations); + expectedAffectedObjects.Add(failureMechanism); + CollectionAssert.AreEqual(expectedAffectedObjects, affectedObjects); } [Test] - [TestCaseSource("ChangePropertyTestCases")] - public void ChangeComposition_FailureMechanismWithDifferentCalculationCollections_ReturnsCalculationsWhichHadOutput(ChangePropertyTestCase testCase) + public void SetPropertyValueAfterConfirmation_ConfirmationRequiredButNotGiven_SetValueNotCalledNoAffectedObjectsReturned() { // Setup - var handler = new GrassCoverErosionOutwardsFailureMechanismPropertyChangeHandler(); - var failureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); - foreach (var calculation in testCase.Calculations) + DialogBoxHandler = (name, wnd) => { - failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation); - } - failureMechanism.HydraulicBoundaryLocations.AddRange(testCase.Locations); + var tester = new MessageBoxTester(wnd); + tester.ClickCancel(); + }; + var calculationWithOutput = CreateCalculationWithOutput(); + var calculationWithoutOutput = CreateCalculationWithoutOutput(); + + var failureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); + failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculationWithOutput); + failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculationWithoutOutput); + + var propertySet = 0; + + var changeHandler = new GrassCoverErosionOutwardsFailureMechanismPropertyChangeHandler(); + // Call - IEnumerable result = handler.PropertyChanged(failureMechanism); + var affectedObjects = changeHandler.SetPropertyValueAfterConfirmation( + failureMechanism, + 3, + (f, v) => propertySet++); // Assert - CollectionAssert.AreEquivalent(testCase.ExpectedAffectedCalculations.Concat(testCase.ExpectedAffectedLocations), result); + Assert.AreEqual(0, propertySet); + CollectionAssert.IsEmpty(affectedObjects); } public class ChangePropertyTestCase