Index: Ringtoets/Common/src/Ringtoets.Common.IO/FileImporters/FailureMechanismSectionsImporter.cs =================================================================== diff -u -r7d60f6a0a6d55b4ab28192e3c862c865b762c051 -r256a4e3345f4a19314ffb07778d1746b0a06f838 --- Ringtoets/Common/src/Ringtoets.Common.IO/FileImporters/FailureMechanismSectionsImporter.cs (.../FailureMechanismSectionsImporter.cs) (revision 7d60f6a0a6d55b4ab28192e3c862c865b762c051) +++ Ringtoets/Common/src/Ringtoets.Common.IO/FileImporters/FailureMechanismSectionsImporter.cs (.../FailureMechanismSectionsImporter.cs) (revision 256a4e3345f4a19314ffb07778d1746b0a06f838) @@ -65,13 +65,13 @@ { if (referenceLine == null) { - throw new ArgumentNullException("referenceLine"); + throw new ArgumentNullException(nameof(referenceLine)); } this.referenceLine = referenceLine; } - public override bool Import() + protected override bool OnImport() { NotifyProgress(Resources.FailureMechanismSectionsImporter_ProgressText_Reading_file, 1, 3); ReadResult readResults = ReadFailureMechanismSections(); @@ -103,6 +103,11 @@ return true; } + protected override void LogImportCanceledMessage() + { + log.Info(Resources.FailureMechanismSectionsImporter_Import_cancelled_no_data_read); + } + private ReadResult ReadFailureMechanismSections() { using (FailureMechanismSectionReader reader = CreateFileReader()) Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/FileImporters/FailureMechanismSectionsImporterTest.cs =================================================================== diff -u -r0d16ab05f8d9c06a04e09a9f9d47c20304c2f831 -r256a4e3345f4a19314ffb07778d1746b0a06f838 --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/FileImporters/FailureMechanismSectionsImporterTest.cs (.../FailureMechanismSectionsImporterTest.cs) (revision 0d16ab05f8d9c06a04e09a9f9d47c20304c2f831) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/FileImporters/FailureMechanismSectionsImporterTest.cs (.../FailureMechanismSectionsImporterTest.cs) (revision 256a4e3345f4a19314ffb07778d1746b0a06f838) @@ -429,6 +429,106 @@ } [Test] + public void Import_CancelOfImportWhenReadingFailureMechanismSections_ReturnsFalseAnCancelsImport() + { + // Setup + var referenceLineFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, + Path.Combine("ReferenceLine", "traject_1-1.shp")); + var sectionsFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, + Path.Combine("FailureMechanismSections", "traject_1-1_vakken.shp")); + + ReferenceLine importReferenceLine = ImportReferenceLine(referenceLineFilePath); + + var failureMechanism = new Simple(); + + var importer = new FailureMechanismSectionsImporter(failureMechanism, importReferenceLine, sectionsFilePath); + importer.SetProgressChanged((description, step, steps) => + { + if (description.Contains("Inlezen vakindeling.")) + { + importer.Cancel(); + } + }); + + bool importSuccessful = true; + + // Call + Action call = () => importSuccessful = importer.Import(); + + // Assert + TestHelper.AssertLogMessageIsGenerated(call, "Vakindeling importeren afgebroken. Geen gegevens ingelezen.", 1); + Assert.IsFalse(importSuccessful); + CollectionAssert.IsEmpty(failureMechanism.Sections); + + } + + [Test] + public void Import_CancelOfImportWhenValidatingImportedections_ReturnsFalseAndCancelsImport() + { + // Setup + var referenceLineFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, + Path.Combine("ReferenceLine", "traject_1-1.shp")); + var sectionsFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, + Path.Combine("FailureMechanismSections", "traject_1-1_vakken.shp")); + + ReferenceLine importReferenceLine = ImportReferenceLine(referenceLineFilePath); + + var failureMechanism = new Simple(); + + var importer = new FailureMechanismSectionsImporter(failureMechanism, importReferenceLine, sectionsFilePath); + importer.SetProgressChanged((description, step, steps) => + { + if (description.Contains("Valideren ingelezen vakindeling.")) + { + importer.Cancel(); + } + }); + + bool importSuccessful = true; + + // Call + Action call = () => importSuccessful = importer.Import(); + + // Assert + TestHelper.AssertLogMessageIsGenerated(call, "Vakindeling importeren afgebroken. Geen gegevens ingelezen.", 1); + Assert.IsFalse(importSuccessful); + CollectionAssert.IsEmpty(failureMechanism.Sections); + } + + [Test] + public void Import_CancelOfImportWhenAddingDataToModel_ReturnsTrueAndLogsMessage() + { + // Setup + var referenceLineFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, + Path.Combine("ReferenceLine", "traject_1-1.shp")); + var sectionsFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, + Path.Combine("FailureMechanismSections", "traject_1-1_vakken.shp")); + + ReferenceLine importReferenceLine = ImportReferenceLine(referenceLineFilePath); + + var failureMechanism = new Simple(); + + var importer = new FailureMechanismSectionsImporter(failureMechanism, importReferenceLine, sectionsFilePath); + importer.SetProgressChanged((description, step, steps) => + { + if (description.Contains("Geïmporteerde gegevens toevoegen aan het toetsspoor.")) + { + importer.Cancel(); + } + }); + + bool importSuccessful = true; + + // Call + Action call = () => importSuccessful = importer.Import(); + + // Assert + TestHelper.AssertLogMessageIsGenerated(call, "Huidige actie was niet meer te annuleren en is daarom voortgezet.", 1); + Assert.IsTrue(importSuccessful); + CollectionAssert.IsNotEmpty(failureMechanism.Sections); + } + + [Test] public void Import_ValidFileImportBeingCancelled_CancelImportWithInfoMessage() { // Setup @@ -442,9 +542,10 @@ var failureMechanism = new Simple(); var importer = new FailureMechanismSectionsImporter(failureMechanism, importReferenceLine, sectionsFilePath); + importer.SetProgressChanged((description, step, steps) => importer.Cancel()); - importer.Cancel(); Assert.IsFalse(importer.Import()); + importer.SetProgressChanged(null); // Call var importSuccessful = importer.Import(); Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/FileImporters/StructuresImporterTest.cs =================================================================== diff -u -r86cd32e59fd106e687ab6a965d1f1131ad4c240d -r256a4e3345f4a19314ffb07778d1746b0a06f838 --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/FileImporters/StructuresImporterTest.cs (.../StructuresImporterTest.cs) (revision 86cd32e59fd106e687ab6a965d1f1131ad4c240d) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/FileImporters/StructuresImporterTest.cs (.../StructuresImporterTest.cs) (revision 256a4e3345f4a19314ffb07778d1746b0a06f838) @@ -272,15 +272,14 @@ } }); - Action call = () => - { - // Call - bool importResult = testStructuresImporter.Import(); + bool importResult = true; - // Assert - Assert.IsFalse(importResult); - }; + // Call + Action call = () => testStructuresImporter.Import(); + + // Assert TestHelper.AssertLogMessageIsGenerated(call, "Kunstwerken importeren is afgebroken. Geen gegevens ingelezen."); + Assert.IsFalse(importResult); } [Test] @@ -311,15 +310,14 @@ } }); - Action call = () => - { - // Call - bool importResult = testStructuresImporter.Import(); + bool importResult = true; - // Assert - Assert.IsFalse(importResult); - }; + // Call + Action call = () => testStructuresImporter.Import(); + + // Assert TestHelper.AssertLogMessageIsGenerated(call, "Kunstwerken importeren is afgebroken. Geen gegevens ingelezen."); + Assert.IsFalse(importResult); } [Test]