Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/FileImporter/PipingSoilProfilesImporter.cs =================================================================== diff -u -r220a073b3d2066d57af048325e3ba37bb1340d0d -r1ef390986aef1eb1b580ff23adb64f5582b9a35d --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/FileImporter/PipingSoilProfilesImporter.cs (.../PipingSoilProfilesImporter.cs) (revision 220a073b3d2066d57af048325e3ba37bb1340d0d) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/FileImporter/PipingSoilProfilesImporter.cs (.../PipingSoilProfilesImporter.cs) (revision 1ef390986aef1eb1b580ff23adb64f5582b9a35d) @@ -81,10 +81,15 @@ public override ProgressChangedDelegate ProgressChanged { protected get; set; } + public override bool CanImportOn(object targetItem) + { + return base.CanImportOn(targetItem) && IsReferenceLineAvailable(targetItem); + } + public override bool Import(object targetItem, string filePath) { - var surfaceLinesContext = (StochasticSoilModelContext) targetItem; - if (!IsReferenceLineAvailable(surfaceLinesContext)) + var stochasticSoilModelContext = (StochasticSoilModelContext) targetItem; + if (!IsReferenceLineAvailable(stochasticSoilModelContext)) { log.Error(RingtoetsPluginResources.PipingSoilProfilesImporter_Import_Required_referenceline_missing); return false; @@ -124,7 +129,7 @@ return false; } - AddImportedDataToModel(surfaceLinesContext, importStochasticSoilModelResult.ImportedItems); + AddImportedDataToModel(stochasticSoilModelContext, importStochasticSoilModelResult.ImportedItems); return true; } @@ -192,9 +197,9 @@ return true; } - private static bool IsReferenceLineAvailable(StochasticSoilModelContext targetItem) + private static bool IsReferenceLineAvailable(object targetItem) { - return targetItem.AssessmentSection.ReferenceLine != null; + return ((StochasticSoilModelContext) targetItem).AssessmentSection.ReferenceLine != null; } private void HandleException(string path, Exception e) Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/FileImporter/PipingSurfaceLinesCsvImporter.cs =================================================================== diff -u -rd305785c5a4330022a5d01cc62ea793a0ae1c5d8 -r1ef390986aef1eb1b580ff23adb64f5582b9a35d --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/FileImporter/PipingSurfaceLinesCsvImporter.cs (.../PipingSurfaceLinesCsvImporter.cs) (revision d305785c5a4330022a5d01cc62ea793a0ae1c5d8) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/FileImporter/PipingSurfaceLinesCsvImporter.cs (.../PipingSurfaceLinesCsvImporter.cs) (revision 1ef390986aef1eb1b580ff23adb64f5582b9a35d) @@ -143,7 +143,7 @@ private static bool IsReferenceLineAvailable(object targetItem) { - return ((RingtoetsPipingSurfaceLinesContext)targetItem).AssessmentSection.ReferenceLine != null; + return ((RingtoetsPipingSurfaceLinesContext) targetItem).AssessmentSection.ReferenceLine != null; } private ReadResult HandleCriticalReadError(Exception e) Index: Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/FileImporter/PipingSoilProfilesImporterTest.cs =================================================================== diff -u -r220a073b3d2066d57af048325e3ba37bb1340d0d -r1ef390986aef1eb1b580ff23adb64f5582b9a35d --- Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/FileImporter/PipingSoilProfilesImporterTest.cs (.../PipingSoilProfilesImporterTest.cs) (revision 220a073b3d2066d57af048325e3ba37bb1340d0d) +++ Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/FileImporter/PipingSoilProfilesImporterTest.cs (.../PipingSoilProfilesImporterTest.cs) (revision 1ef390986aef1eb1b580ff23adb64f5582b9a35d) @@ -53,6 +53,50 @@ } [Test] + public void CanImportOn_ValidContextWithReferenceLine_ReturnTrue() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + assessmentSection.ReferenceLine = new ReferenceLine(); + var failureMechanism = new PipingFailureMechanism(); + mocks.ReplayAll(); + + var targetContext = new StochasticSoilModelContext(failureMechanism, assessmentSection); + + var importer = new PipingSoilProfilesImporter(); + + // Call + var canImport = importer.CanImportOn(targetContext); + + // Assert + Assert.IsTrue(canImport); + mocks.VerifyAll(); + } + + [Test] + public void CanImportOn_ValidContextWithoutReferenceLine_ReturnFalse() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + assessmentSection.ReferenceLine = null; + var failureMechanism = new PipingFailureMechanism(); + mocks.ReplayAll(); + + var targetContext = new StochasticSoilModelContext(failureMechanism, assessmentSection); + + var importer = new PipingSoilProfilesImporter(); + + // Call + var canImport = importer.CanImportOn(targetContext); + + // Assert + Assert.IsFalse(canImport); + mocks.VerifyAll(); + } + + [Test] public void Import_FromNonExistingFile_LogError() { // Setup