Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/FileImporters/GrassCoverErosionInwardsDikeProfileUpdateDataStrategy.cs =================================================================== diff -u -ra26ca78511abc3f3e04021c203ed484402c3eba4 -rc533a16802b952fb043c387ffeeada66db7a7740 --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/FileImporters/GrassCoverErosionInwardsDikeProfileUpdateDataStrategy.cs (.../GrassCoverErosionInwardsDikeProfileUpdateDataStrategy.cs) (revision a26ca78511abc3f3e04021c203ed484402c3eba4) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/FileImporters/GrassCoverErosionInwardsDikeProfileUpdateDataStrategy.cs (.../GrassCoverErosionInwardsDikeProfileUpdateDataStrategy.cs) (revision c533a16802b952fb043c387ffeeada66db7a7740) @@ -59,8 +59,15 @@ protected override IEnumerable RemoveObjectAndDependentData(DikeProfile removedObject) { - return GrassCoverErosionInwardsDataSynchronizationService.RemoveDikeProfile(FailureMechanism, - removedObject); + var affectedObjects = new List(); + + affectedObjects.AddRange(GrassCoverErosionInwardsDataSynchronizationService.RemoveDikeProfile(FailureMechanism, + removedObject)); + + affectedObjects.AddRange(GrassCoverErosionInwardsHelper.UpdateCalculationToSectionResultAssignments( + FailureMechanism.SectionResults, + FailureMechanism.Calculations.Cast())); + return affectedObjects; } private IEnumerable GetAffectedCalculationsWithDikeProfile(DikeProfile objectToUpdate) Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Plugin.Test/FileImporters/GrassCoverErosionInwardsDikeProfileUpdateDataStrategyTest.cs =================================================================== diff -u -ra26ca78511abc3f3e04021c203ed484402c3eba4 -rc533a16802b952fb043c387ffeeada66db7a7740 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Plugin.Test/FileImporters/GrassCoverErosionInwardsDikeProfileUpdateDataStrategyTest.cs (.../GrassCoverErosionInwardsDikeProfileUpdateDataStrategyTest.cs) (revision a26ca78511abc3f3e04021c203ed484402c3eba4) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Plugin.Test/FileImporters/GrassCoverErosionInwardsDikeProfileUpdateDataStrategyTest.cs (.../GrassCoverErosionInwardsDikeProfileUpdateDataStrategyTest.cs) (revision c533a16802b952fb043c387ffeeada66db7a7740) @@ -631,9 +631,70 @@ } [Test] - public void UpdateForeshoreProfilesWithImportedData_CalculationWithOutputAndForeshoreProfileUpdatedWithProfileWithoutGeometry_UpdatesCalculation() + public void UpdateDikeProfilesWithImportedData_CalculationWithToBeRemovedDikeProfile_UpdatesSectionResults() { // Setup + const string dikeProfileId = "ID of removed profile"; + + var matchingPoint = new Point2D(0, 0); + var removedProfile = new TestDikeProfile(matchingPoint, dikeProfileId); + var affectedCalculation = new GrassCoverErosionInwardsCalculation + { + InputParameters = + { + DikeProfile = removedProfile + } + }; + + var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); + failureMechanism.CalculationsGroup.Children.Add(affectedCalculation); + + failureMechanism.AddSection(new FailureMechanismSection("Section", new[] + { + matchingPoint, + new Point2D(10, 10) + })); + + GrassCoverErosionInwardsHelper.UpdateCalculationToSectionResultAssignments( + failureMechanism.SectionResults, + failureMechanism.Calculations + .Cast()); + + DikeProfileCollection dikeProfiles = failureMechanism.DikeProfiles; + dikeProfiles.AddRange(new[] + { + removedProfile + }, sourceFilePath); + + // Precondition + GrassCoverErosionInwardsFailureMechanismSectionResult[] sectionResults = failureMechanism.SectionResults + .ToArray(); + Assert.AreEqual(1, sectionResults.Length); + Assert.AreSame(affectedCalculation, sectionResults[0].Calculation); + + var strategy = new GrassCoverErosionInwardsDikeProfileUpdateDataStrategy(failureMechanism); + + // Call + IEnumerable affectedObjects = strategy.UpdateDikeProfilesWithImportedData(dikeProfiles, + Enumerable.Empty(), + sourceFilePath); + // Assert + CollectionAssert.AreEquivalent(new IObservable[] + { + dikeProfiles, + affectedCalculation.InputParameters, + sectionResults[0] + }, affectedObjects); + + sectionResults = failureMechanism.SectionResults.ToArray(); + Assert.AreEqual(1, sectionResults.Length); + Assert.IsNull(sectionResults[0].Calculation); + } + + [Test] + public void UpdateDikeProfilesWithImportedData_CalculationWithOutputAndForeshoreProfileUpdatedWithProfileWithoutGeometry_UpdatesCalculation() + { + // Setup const string id = "profile ID"; IEnumerable geometry = new[] {