Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/ReferenceLines/ReferenceLineImporterTest.cs =================================================================== diff -u -r5fbd116396b2045f6429bcd467a6216e7f84ceaa -r3e64f99c301d02f327d88ce3738dd0c96c273c46 --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/ReferenceLines/ReferenceLineImporterTest.cs (.../ReferenceLineImporterTest.cs) (revision 5fbd116396b2045f6429bcd467a6216e7f84ceaa) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/ReferenceLines/ReferenceLineImporterTest.cs (.../ReferenceLineImporterTest.cs) (revision 3e64f99c301d02f327d88ce3738dd0c96c273c46) @@ -212,7 +212,7 @@ } [Test] - public void Import_CancelImportDuringDialogInteraction_ReturnsFalseAndNoChanges() + public void Import_CancelImportDuringDialogInteraction_GenerateCanceledLogMessageAndReturnsFalse() { // Setup var mocks = new MockRepository(); @@ -224,30 +224,6 @@ var importer = new ReferenceLineImporter(ReferenceLineTestFactory.CreateReferenceLineWithGeometry(), handler, path); - // Call - bool importSuccessful = importer.Import(); - - // Assert - Assert.IsFalse(importSuccessful); - mocks.VerifyAll(); - } - - [Test] - [TestCase(true)] - [TestCase(false)] - public void Import_CancelImportDuringDialogInteraction_GenerateCanceledLogMessageAndReturnsFalse(bool acceptRemovalOfReferenceLineDependentData) - { - // Setup - string path = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, "traject_10-2.shp"); - - var mocks = new MockRepository(); - var handler = mocks.StrictMock(); - var importer = new ReferenceLineImporter(ReferenceLineTestFactory.CreateReferenceLineWithGeometry(), handler, path); - handler.Expect(h => h.ConfirmUpdate()) - .WhenCalled(invocation => importer.Cancel()) - .Return(acceptRemovalOfReferenceLineDependentData); - mocks.ReplayAll(); - var importResult = true; // Call Index: Ringtoets/Integration/src/Ringtoets.Integration.IO/Importers/HydraulicBoundaryDatabaseImporter.cs =================================================================== diff -u -r34853cdf1aa02512f5bfbc8aba5f18e07f0c6f8f -r3e64f99c301d02f327d88ce3738dd0c96c273c46 --- Ringtoets/Integration/src/Ringtoets.Integration.IO/Importers/HydraulicBoundaryDatabaseImporter.cs (.../HydraulicBoundaryDatabaseImporter.cs) (revision 34853cdf1aa02512f5bfbc8aba5f18e07f0c6f8f) +++ Ringtoets/Integration/src/Ringtoets.Integration.IO/Importers/HydraulicBoundaryDatabaseImporter.cs (.../HydraulicBoundaryDatabaseImporter.cs) (revision 3e64f99c301d02f327d88ce3738dd0c96c273c46) @@ -73,6 +73,13 @@ ReadHydraulicBoundaryDatabase readHydraulicBoundaryDatabase = readHydraulicBoundaryDatabaseResult.Items.Single(); + bool clearDependentData = IsClearingDependentDataRequired(readHydraulicBoundaryDatabase); + + if (Canceled) + { + return false; + } + ReadResult readHydraulicLocationConfigurationDatabaseResult = ReadHydraulicLocationConfigurationDatabase( readHydraulicBoundaryDatabase.TrackId); @@ -96,6 +103,25 @@ Log.Info(Resources.HydraulicBoundaryDatabaseImporter_ProgressText_Import_canceled_No_data_changed); } + private bool IsClearingDependentDataRequired(ReadHydraulicBoundaryDatabase readHydraulicBoundaryDatabase) + { + var clearDependentData = false; + + if (updateHandler.IsConfirmationRequired(readHydraulicBoundaryDatabase)) + { + if (!updateHandler.InquireConfirmation()) + { + Cancel(); + } + else + { + clearDependentData = true; + } + } + + return clearDependentData; + } + private ReadResult ReadHydraulicBoundaryDatabase() { NotifyProgress(Resources.HydraulicBoundaryDatabaseImporter_ProgressText_Reading_HRD_file, 1, numberOfSteps); @@ -159,7 +185,8 @@ string settingsFilePath = HydraulicBoundaryDatabaseHelper.GetHydraulicBoundarySettingsDatabase(FilePath); try { - using (new HydraRingSettingsDatabaseReader(settingsFilePath)) { } + using (new HydraRingSettingsDatabaseReader(settingsFilePath)) {} + return true; } catch (CriticalFileReadException e) Index: Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Importers/HydraulicBoundaryDatabaseImporterTest.cs =================================================================== diff -u -r2b256bff1a69859f67e100213eebd150ae5eab8c -r3e64f99c301d02f327d88ce3738dd0c96c273c46 --- Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Importers/HydraulicBoundaryDatabaseImporterTest.cs (.../HydraulicBoundaryDatabaseImporterTest.cs) (revision 2b256bff1a69859f67e100213eebd150ae5eab8c) +++ Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Importers/HydraulicBoundaryDatabaseImporterTest.cs (.../HydraulicBoundaryDatabaseImporterTest.cs) (revision 3e64f99c301d02f327d88ce3738dd0c96c273c46) @@ -27,10 +27,8 @@ using Core.Common.TestUtil; using NUnit.Framework; using Rhino.Mocks; -using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Hydraulics; using Ringtoets.Common.IO.HydraRing; -using Ringtoets.Common.IO.ReferenceLines; using Ringtoets.Common.IO.TestUtil; using Ringtoets.HydraRing.IO.HydraulicBoundaryDatabase; using Ringtoets.HydraRing.IO.HydraulicLocationConfigurationDatabase; @@ -173,6 +171,7 @@ // Setup var mocks = new MockRepository(); var handler = mocks.StrictMock(); + handler.Stub(h => h.IsConfirmationRequired(null)).IgnoreArguments().Return(false); mocks.ReplayAll(); string path = Path.Combine(testDataPath, "withoutHLCD", "complete.sqlite"); @@ -197,6 +196,7 @@ // Setup var mocks = new MockRepository(); var handler = mocks.StrictMock(); + handler.Stub(h => h.IsConfirmationRequired(null)).IgnoreArguments().Return(false); mocks.ReplayAll(); string path = Path.Combine(testDataPath, "EmptyHLCDSchema", "complete.sqlite"); @@ -222,6 +222,7 @@ // Setup var mocks = new MockRepository(); var handler = mocks.StrictMock(); + handler.Stub(h => h.IsConfirmationRequired(null)).IgnoreArguments().Return(false); mocks.ReplayAll(); string path = Path.Combine(testDataPath, "InvalidHLCDSchema", "complete.sqlite"); @@ -247,6 +248,7 @@ // Setup var mocks = new MockRepository(); var handler = mocks.StrictMock(); + handler.Stub(h => h.IsConfirmationRequired(null)).IgnoreArguments().Return(false); mocks.ReplayAll(); string path = Path.Combine(testDataPath, "withoutSettings", "complete.sqlite"); @@ -274,22 +276,20 @@ var mocks = new MockRepository(); var handler = mocks.StrictMock(); + handler.Stub(h => h.IsConfirmationRequired(Arg.Is.NotNull)) + .WhenCalled(invocation => + { + AssertReadHydraulicBoundaryDatabase((ReadHydraulicBoundaryDatabase) invocation.Arguments[0]); + }) + .Return(false); handler.Expect(h => h.Update(Arg.Is.NotNull, Arg.Is.NotNull, Arg.Is.NotNull)) .WhenCalled(invocation => { Assert.AreSame(hydraulicBoundaryDatabase, invocation.Arguments[0]); - var readHydraulicBoundaryDatabase = (ReadHydraulicBoundaryDatabase) invocation.Arguments[1]; - Assert.AreEqual("Dutch coast South19-11-2015 12:0013", readHydraulicBoundaryDatabase.Version); - Assert.AreEqual((long) 13, readHydraulicBoundaryDatabase.TrackId); - Assert.AreEqual(18, readHydraulicBoundaryDatabase.Locations.Count()); - ReadHydraulicBoundaryLocation location = readHydraulicBoundaryDatabase.Locations.First(); - Assert.AreEqual(1, location.Id); - Assert.AreEqual("punt_flw_ 1", location.Name); - Assert.AreEqual(52697.5, location.CoordinateX); - Assert.AreEqual(427567.0, location.CoordinateY); + AssertReadHydraulicBoundaryDatabase((ReadHydraulicBoundaryDatabase) invocation.Arguments[1]); var readHydraulicLocationConfigurationDatabase = (ReadHydraulicLocationConfigurationDatabase) invocation.Arguments[2]; Assert.AreEqual(18, readHydraulicLocationConfigurationDatabase.LocationIds.Count); @@ -366,6 +366,49 @@ } [Test] + public void Import_CancelImportDuringDialogInteraction_GenerateCanceledLogMessageAndReturnsFalse() + { + // Setup + var mocks = new MockRepository(); + var handler = mocks.StrictMock(); + handler.Expect(h => h.IsConfirmationRequired(Arg.Is.NotNull)) + .WhenCalled(invocation => + { + AssertReadHydraulicBoundaryDatabase((ReadHydraulicBoundaryDatabase) invocation.Arguments[0]); + }) + .Return(true); + handler.Expect(h => h.InquireConfirmation()).Return(false); + mocks.ReplayAll(); + + string filePath = Path.Combine(testDataPath, "complete.sqlite"); + + var importer = new HydraulicBoundaryDatabaseImporter(new HydraulicBoundaryDatabase(), handler, filePath); + + var importResult = true; + + // Call + Action call = () => importResult = importer.Import(); + + // Assert + Tuple expectedLogMessage = Tuple.Create("Hydraulische belastingen database koppelen afgebroken. Geen gegevens gewijzigd.", LogLevelConstant.Info); + TestHelper.AssertLogMessageWithLevelIsGenerated(call, expectedLogMessage, 1); + Assert.IsFalse(importResult); + mocks.VerifyAll(); + } + + private static void AssertReadHydraulicBoundaryDatabase(ReadHydraulicBoundaryDatabase readHydraulicBoundaryDatabase) + { + Assert.AreEqual("Dutch coast South19-11-2015 12:0013", readHydraulicBoundaryDatabase.Version); + Assert.AreEqual((long) 13, readHydraulicBoundaryDatabase.TrackId); + Assert.AreEqual(18, readHydraulicBoundaryDatabase.Locations.Count()); + ReadHydraulicBoundaryLocation location = readHydraulicBoundaryDatabase.Locations.First(); + Assert.AreEqual(1, location.Id); + Assert.AreEqual("punt_flw_ 1", location.Name); + Assert.AreEqual(52697.5, location.CoordinateX); + Assert.AreEqual(427567.0, location.CoordinateY); + } + + [Test] [TestCase(1)] [TestCase(2)] [TestCase(3)] @@ -374,6 +417,7 @@ // Setup var mocks = new MockRepository(); var handler = mocks.StrictMock(); + handler.Stub(h => h.IsConfirmationRequired(null)).IgnoreArguments().Return(false); mocks.ReplayAll(); string filePath = Path.Combine(testDataPath, "complete.sqlite");