Index: Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Service/DuneErosionBoundaryCalculationActivity.cs =================================================================== diff -u -r628518ea0f08da7e3d5a06e3084d03c757b06e3f -r847c9de88eea68ff8b52d5111f2d09a0199302d8 --- Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Service/DuneErosionBoundaryCalculationActivity.cs (.../DuneErosionBoundaryCalculationActivity.cs) (revision 628518ea0f08da7e3d5a06e3084d03c757b06e3f) +++ Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Service/DuneErosionBoundaryCalculationActivity.cs (.../DuneErosionBoundaryCalculationActivity.cs) (revision 847c9de88eea68ff8b52d5111f2d09a0199302d8) @@ -73,6 +73,12 @@ protected override void PerformCalculation() { + if (duneLocation.Output != null) + { + State = ActivityState.Skipped; + return; + } + calculationService.Calculate(duneLocation, failureMechanism, assessmentSection, Index: Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Integration.Test/DuneErosionBoundaryCalculationActivityIntegrationTest.cs =================================================================== diff -u -r628518ea0f08da7e3d5a06e3084d03c757b06e3f -r847c9de88eea68ff8b52d5111f2d09a0199302d8 --- Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Integration.Test/DuneErosionBoundaryCalculationActivityIntegrationTest.cs (.../DuneErosionBoundaryCalculationActivityIntegrationTest.cs) (revision 628518ea0f08da7e3d5a06e3084d03c757b06e3f) +++ Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Integration.Test/DuneErosionBoundaryCalculationActivityIntegrationTest.cs (.../DuneErosionBoundaryCalculationActivityIntegrationTest.cs) (revision 847c9de88eea68ff8b52d5111f2d09a0199302d8) @@ -27,6 +27,7 @@ using Core.Common.TestUtil; using NUnit.Framework; using Ringtoets.Common.Data.AssessmentSection; +using Ringtoets.Common.Data.Hydraulics; using Ringtoets.Common.IO.FileImporters; using Ringtoets.DuneErosion.Data; using Ringtoets.DuneErosion.Service; @@ -84,7 +85,7 @@ } [Test] - public void Run_FailureMechanismContributionNUll_LogMessageAndActivityStateFailed() + public void Run_FailureMechanismContributionNull_LogMessageAndActivityStateFailed() { // Setup var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike) @@ -153,5 +154,41 @@ Assert.AreEqual(ActivityState.Failed, activity.State); } } + + [Test] + public void Run_CalculationAlreadyPerformed_CalculationNotPerformedAndActivityStateSkipped() + { + // Setup + var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike) + { + Id = "13-1" + }; + + using (var importer = new HydraulicBoundaryDatabaseImporter()) + { + importer.Import(assessmentSection, validFilePath); + } + + var failureMechanism = new DuneErosionFailureMechanism + { + Contribution = 10 + }; + var initialOutput = new DuneLocationOutput(0, 0, 0, 0, 0, 0, 0, CalculationConvergence.CalculatedConverged); + var duneLocation = new DuneLocation(1300001, "test", new Point2D(0, 0), 3, 0, 0, 0.000007) + { + Output = initialOutput + }; + + var activity = new DuneErosionBoundaryCalculationActivity(duneLocation, failureMechanism, assessmentSection); + using (new HydraRingCalculatorFactoryConfig()) + { + // Call + activity.Run(); + + // Assert + Assert.AreEqual(ActivityState.Skipped, activity.State); + Assert.AreSame(initialOutput, duneLocation.Output); + } + } } } \ No newline at end of file