Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/HydraulicLocationConfigurationDatabaseUpdateHandler.cs =================================================================== diff -u -rf056196d476bef5661064e738ac04ef25453e9db -r4d7a97b3e1d98dcbadbf3cd53ffd01b5a77c7f1e --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/HydraulicLocationConfigurationDatabaseUpdateHandler.cs (.../HydraulicLocationConfigurationDatabaseUpdateHandler.cs) (revision f056196d476bef5661064e738ac04ef25453e9db) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/HydraulicLocationConfigurationDatabaseUpdateHandler.cs (.../HydraulicLocationConfigurationDatabaseUpdateHandler.cs) (revision 4d7a97b3e1d98dcbadbf3cd53ffd01b5a77c7f1e) @@ -29,6 +29,7 @@ using Ringtoets.Integration.IO.Handlers; using Ringtoets.Integration.Plugin.Helpers; using Ringtoets.Integration.Plugin.Properties; +using Ringtoets.Integration.Service; using CoreCommonBaseResources = Core.Common.Base.Properties.Resources; namespace Ringtoets.Integration.Plugin.Handlers @@ -87,6 +88,8 @@ hydraulicBoundaryDatabase }; + changedObjects.AddRange(RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationCalculationOutput(assessmentSection)); + return changedObjects; } } Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/HydraulicLocationConfigurationDatabaseUpdateHandlerTest.cs =================================================================== diff -u -rf056196d476bef5661064e738ac04ef25453e9db -r4d7a97b3e1d98dcbadbf3cd53ffd01b5a77c7f1e --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/HydraulicLocationConfigurationDatabaseUpdateHandlerTest.cs (.../HydraulicLocationConfigurationDatabaseUpdateHandlerTest.cs) (revision f056196d476bef5661064e738ac04ef25453e9db) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/HydraulicLocationConfigurationDatabaseUpdateHandlerTest.cs (.../HydraulicLocationConfigurationDatabaseUpdateHandlerTest.cs) (revision 4d7a97b3e1d98dcbadbf3cd53ffd01b5a77c7f1e) @@ -21,16 +21,20 @@ using System; using System.Collections.Generic; +using System.Linq; using Core.Common.Base; using NUnit.Extensions.Forms; using NUnit.Framework; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Hydraulics; +using Ringtoets.DuneErosion.Data; +using Ringtoets.GrassCoverErosionOutwards.Data; using Ringtoets.HydraRing.IO.HydraulicLocationConfigurationDatabase; using Ringtoets.HydraRing.IO.TestUtil; using Ringtoets.Integration.Data; using Ringtoets.Integration.IO.Handlers; using Ringtoets.Integration.Plugin.Handlers; +using Ringtoets.Integration.TestUtil; namespace Ringtoets.Integration.Plugin.Test.Handlers { @@ -131,7 +135,7 @@ const string hlcdFilePath = "some/file/path"; var handler = new HydraulicLocationConfigurationDatabaseUpdateHandler(CreateAssessmentSection()); var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase(); - + // Call handler.Update(hydraulicBoundaryDatabase, null, hlcdFilePath); @@ -192,9 +196,75 @@ }, changedObjects); } + [Test] + public void Update_LocationsWithOutput_ClearOutputAndReturnChangedObjects() + { + // Setup + AssessmentSection assessmentSection = TestDataGenerator.GetAssessmentSectionWithAllCalculationConfigurations(); + var handler = new HydraulicLocationConfigurationDatabaseUpdateHandler(assessmentSection); + + IEnumerable locations = GetLocationCalculations(assessmentSection); + IEnumerable duneLocations = GetDuneLocationCalculations(assessmentSection); + + // Precondition + Assert.IsTrue(locations.All(l => l.HasOutput)); + Assert.IsTrue(duneLocations.All(l => l.Output != null)); + + // Call + IEnumerable changedObjects = handler.Update(assessmentSection.HydraulicBoundaryDatabase, null, "some/file/path"); + + // Assert + Assert.IsTrue(locations.All(l => !l.HasOutput)); + Assert.IsTrue(duneLocations.All(l => l.Output == null)); + + IEnumerable expectedChangedObjects = new IObservable[] + { + assessmentSection.HydraulicBoundaryDatabase + }.Concat(locations).Concat(duneLocations); + + CollectionAssert.AreEquivalent(expectedChangedObjects, changedObjects); + } + private static AssessmentSection CreateAssessmentSection() { return new AssessmentSection(AssessmentSectionComposition.Dike); } + + private static IEnumerable GetLocationCalculations(AssessmentSection assessmentSection) + { + var calculations = new List(); + calculations.AddRange(assessmentSection.WaterLevelCalculationsForFactorizedSignalingNorm); + calculations.AddRange(assessmentSection.WaterLevelCalculationsForSignalingNorm); + calculations.AddRange(assessmentSection.WaterLevelCalculationsForLowerLimitNorm); + calculations.AddRange(assessmentSection.WaterLevelCalculationsForFactorizedLowerLimitNorm); + calculations.AddRange(assessmentSection.WaveHeightCalculationsForFactorizedSignalingNorm); + calculations.AddRange(assessmentSection.WaveHeightCalculationsForSignalingNorm); + calculations.AddRange(assessmentSection.WaveHeightCalculationsForLowerLimitNorm); + calculations.AddRange(assessmentSection.WaveHeightCalculationsForFactorizedLowerLimitNorm); + + GrassCoverErosionOutwardsFailureMechanism grassCoverErosionOutwardsFailureMechanism = assessmentSection.GrassCoverErosionOutwards; + calculations.AddRange(grassCoverErosionOutwardsFailureMechanism.WaterLevelCalculationsForMechanismSpecificFactorizedSignalingNorm); + calculations.AddRange(grassCoverErosionOutwardsFailureMechanism.WaterLevelCalculationsForMechanismSpecificSignalingNorm); + calculations.AddRange(grassCoverErosionOutwardsFailureMechanism.WaterLevelCalculationsForMechanismSpecificLowerLimitNorm); + calculations.AddRange(grassCoverErosionOutwardsFailureMechanism.WaveHeightCalculationsForMechanismSpecificFactorizedSignalingNorm); + calculations.AddRange(grassCoverErosionOutwardsFailureMechanism.WaveHeightCalculationsForMechanismSpecificSignalingNorm); + calculations.AddRange(grassCoverErosionOutwardsFailureMechanism.WaveHeightCalculationsForMechanismSpecificLowerLimitNorm); + + return calculations; + } + + private static IEnumerable GetDuneLocationCalculations(AssessmentSection assessmentSection) + { + DuneErosionFailureMechanism duneErosionFailureMechanism = assessmentSection.DuneErosion; + + var calculations = new List(); + calculations.AddRange(duneErosionFailureMechanism.CalculationsForMechanismSpecificFactorizedSignalingNorm); + calculations.AddRange(duneErosionFailureMechanism.CalculationsForMechanismSpecificSignalingNorm); + calculations.AddRange(duneErosionFailureMechanism.CalculationsForMechanismSpecificLowerLimitNorm); + calculations.AddRange(duneErosionFailureMechanism.CalculationsForLowerLimitNorm); + calculations.AddRange(duneErosionFailureMechanism.CalculationsForFactorizedLowerLimitNorm); + + return calculations; + } } } \ No newline at end of file