Exemple #1
0
        public void Import_CancelOfImportWhilePerformingStep_CancelsImportAndLogs(int stepNumber)
        {
            // Setup
            var mocks   = new MockRepository();
            var handler = mocks.StrictMock <IHydraulicBoundaryDatabaseUpdateHandler>();

            handler.Stub(h => h.IsConfirmationRequired(null, null)).IgnoreArguments().Return(false);
            mocks.ReplayAll();

            var importer = new HydraulicBoundaryDatabaseImporter(new HydraulicBoundaryDatabase(), handler, validFilePath);

            importer.SetProgressChanged((description, currentStep, steps) =>
            {
                if (currentStep == stepNumber)
                {
                    importer.Cancel();
                }
            });

            // Precondition
            Assert.IsTrue(File.Exists(validFilePath));

            // Call
            var    importResult = true;
            Action call         = () => importResult = importer.Import();

            // Assert
            const string expectedMessage = "Hydraulische belastingen database koppelen afgebroken. Geen gegevens gewijzigd.";

            TestHelper.AssertLogMessageWithLevelIsGenerated(call, Tuple.Create(expectedMessage, LogLevelConstant.Info), 1);
            Assert.IsFalse(importResult);
            mocks.VerifyAll();
        }
Exemple #2
0
        public void Import_CancelImportDuringDialogInteraction_GenerateCanceledLogMessageAndReturnsFalse()
        {
            // Setup
            var mocks   = new MockRepository();
            var handler = mocks.StrictMock <IHydraulicBoundaryDatabaseUpdateHandler>();

            handler.Expect(h => h.IsConfirmationRequired(Arg <HydraulicBoundaryDatabase> .Is.NotNull,
                                                         Arg <ReadHydraulicBoundaryDatabase> .Is.NotNull))
            .WhenCalled(invocation =>
            {
                AssertReadHydraulicBoundaryDatabase((ReadHydraulicBoundaryDatabase)invocation.Arguments[1]);
            })
            .Return(true);
            handler.Expect(h => h.InquireConfirmation()).Return(false);
            mocks.ReplayAll();

            var importer = new HydraulicBoundaryDatabaseImporter(new HydraulicBoundaryDatabase(), handler, validFilePath);

            var importResult = true;

            // Call
            Action call = () => importResult = importer.Import();

            // Assert
            const string expectedMessage = "Hydraulische belastingen database koppelen afgebroken. Geen gegevens gewijzigd.";

            TestHelper.AssertLogMessageWithLevelIsGenerated(call, Tuple.Create(expectedMessage, LogLevelConstant.Info), 1);
            Assert.IsFalse(importResult);
            mocks.VerifyAll();
        }
Exemple #3
0
        public void Import_CancelImportDuringAddReadDataToDataModel_ContinuesImportAndLogs()
        {
            // Setup
            var mocks   = new MockRepository();
            var handler = mocks.Stub <IHydraulicBoundaryDatabaseUpdateHandler>();

            handler.Stub(h => h.IsConfirmationRequired(null, null)).IgnoreArguments().Return(false);
            handler.Stub(h => h.Update(null, null, null, null, null, null)).IgnoreArguments().Return(Enumerable.Empty <IObservable>());
            mocks.ReplayAll();

            var importer = new HydraulicBoundaryDatabaseImporter(new HydraulicBoundaryDatabase(), handler, validFilePath);

            importer.SetProgressChanged((description, step, steps) =>
            {
                if (step == totalNumberOfSteps)
                {
                    importer.Cancel();
                }
            });

            var importResult = true;

            // Call
            importer.Import();
            Action call = () => importResult = importer.Import();

            // Assert
            const string expectedMessage = "Huidige actie was niet meer te annuleren en is daarom voortgezet.";

            TestHelper.AssertLogMessageWithLevelIsGenerated(call, Tuple.Create(expectedMessage, LogLevelConstant.Warn), 2);
            Assert.IsTrue(importResult);
            mocks.VerifyAll();
        }
Exemple #4
0
        public void Import_ValidFiles_ExpectedProgressNotifications()
        {
            // Setup
            var mocks   = new MockRepository();
            var handler = mocks.Stub <IHydraulicBoundaryDatabaseUpdateHandler>();

            handler.Stub(h => h.IsConfirmationRequired(null, null)).IgnoreArguments().Return(false);
            handler.Stub(h => h.Update(null, null, null, null, null, null)).IgnoreArguments().Return(Enumerable.Empty <IObservable>());
            mocks.ReplayAll();

            var progressChangeNotifications = new List <ProgressNotification>();

            var importer = new HydraulicBoundaryDatabaseImporter(new HydraulicBoundaryDatabase(), handler, validFilePath);

            importer.SetProgressChanged((description, step, steps) => progressChangeNotifications.Add(new ProgressNotification(description, step, steps)));

            // Call
            bool importResult = importer.Import();

            // Assert
            Assert.IsTrue(importResult);
            var expectedProgressNotifications = new[]
            {
                new ProgressNotification("Inlezen van het hydraulische belastingen bestand.", 1, totalNumberOfSteps),
                new ProgressNotification("Inlezen van het hydraulische locatie configuratie bestand.", 2, totalNumberOfSteps),
                new ProgressNotification("Inlezen van het rekeninstellingen bestand.", 3, totalNumberOfSteps),
                new ProgressNotification("Geïmporteerde data toevoegen aan het traject.", 4, totalNumberOfSteps)
            };

            ProgressNotificationTestHelper.AssertProgressNotificationsAreEqual(expectedProgressNotifications, progressChangeNotifications);
            mocks.VerifyAll();
        }
Exemple #5
0
        public void Constructor_ExpectedValues()
        {
            // Setup
            var mocks         = new MockRepository();
            var updateHandler = mocks.Stub <IHydraulicBoundaryDatabaseUpdateHandler>();

            mocks.ReplayAll();

            // Call
            var importer = new HydraulicBoundaryDatabaseImporter(new HydraulicBoundaryDatabase(), updateHandler, "");

            // Assert
            Assert.IsInstanceOf <FileImporterBase <HydraulicBoundaryDatabase> >(importer);
            mocks.VerifyAll();
        }
Exemple #6
0
        public void DoPostImportUpdates_HydraulicBoundaryDatabaseIsSetAndAnswerDialogToContinue_NotifyObserversOfTargetAndClearedObjects()
        {
            // Setup
            var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase();

            var mocks = new MockRepository();
            var hydraulicBoundaryDatabaseObserver = mocks.Stub <IObserver>();

            hydraulicBoundaryDatabaseObserver.Expect(o => o.UpdateObserver());

            var observable1 = mocks.StrictMock <IObservable>();

            observable1.Expect(o => o.NotifyObservers());
            var observable2 = mocks.StrictMock <IObservable>();

            observable2.Expect(o => o.NotifyObservers());

            var handler = mocks.StrictMock <IHydraulicBoundaryDatabaseUpdateHandler>();

            handler.Expect(h => h.IsConfirmationRequired(null, null)).IgnoreArguments().Return(false);
            handler.Expect(h => h.Update(Arg <HydraulicBoundaryDatabase> .Is.NotNull,
                                         Arg <ReadHydraulicBoundaryDatabase> .Is.NotNull,
                                         Arg <ReadHydraulicLocationConfigurationDatabase> .Is.NotNull,
                                         Arg <IEnumerable <long> > .Is.NotNull,
                                         Arg <string> .Is.NotNull,
                                         Arg <string> .Is.NotNull))
            .Return(new[]
            {
                observable1,
                observable2
            });
            handler.Expect(h => h.DoPostUpdateActions());
            mocks.ReplayAll();

            hydraulicBoundaryDatabase.Attach(hydraulicBoundaryDatabaseObserver);

            var importer = new HydraulicBoundaryDatabaseImporter(hydraulicBoundaryDatabase, handler, validFilePath);

            // Precondition
            Assert.IsTrue(importer.Import());

            // Call
            importer.DoPostImport();

            // Assert
            mocks.VerifyAll(); // Expect NotifyObservers on updated observables
        }
Exemple #7
0
        public void Import_WithValidFileAndHlcdWithoutScenarioInformation_UpdatesHydraulicBoundaryDatabaseWithImportedData(
            string filePath, bool usePreprocessorClosure)
        {
            // Setup
            string hlcdFilePath = Path.Combine(Path.GetDirectoryName(filePath), "hlcd.sqlite");
            var    hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase();

            var mocks   = new MockRepository();
            var handler = mocks.StrictMock <IHydraulicBoundaryDatabaseUpdateHandler>();

            handler.Expect(h => h.IsConfirmationRequired(null, null))
            .IgnoreArguments()
            .Return(false);

            handler.Expect(h => h.Update(Arg <HydraulicBoundaryDatabase> .Is.Same(hydraulicBoundaryDatabase),
                                         Arg <ReadHydraulicBoundaryDatabase> .Is.NotNull,
                                         Arg <ReadHydraulicLocationConfigurationDatabase> .Is.NotNull,
                                         Arg <IEnumerable <long> > .Is.NotNull,
                                         Arg <string> .Is.Equal(filePath),
                                         Arg <string> .Is.Equal(hlcdFilePath)))
            .WhenCalled(invocation =>
            {
                AssertReadHydraulicBoundaryDatabase((ReadHydraulicBoundaryDatabase)invocation.Arguments[1]);

                var readHydraulicLocationConfigurationDatabase = (ReadHydraulicLocationConfigurationDatabase)invocation.Arguments[2];
                Assert.AreEqual(18, readHydraulicLocationConfigurationDatabase.LocationIdMappings.Count());
                Assert.IsNull(readHydraulicLocationConfigurationDatabase.ReadHydraulicLocationConfigurationDatabaseSettings);
                Assert.AreEqual(usePreprocessorClosure, readHydraulicLocationConfigurationDatabase.UsePreprocessorClosure);

                var excludedLocationIds = (IEnumerable <long>)invocation.Arguments[3];
                Assert.AreEqual(1, excludedLocationIds.Count());
            })
            .Return(Enumerable.Empty <IObservable>());
            mocks.ReplayAll();

            var importer = new HydraulicBoundaryDatabaseImporter(hydraulicBoundaryDatabase, handler, filePath);

            // Call
            var    importResult = false;
            Action call         = () => importResult = importer.Import();

            // Assert
            TestHelper.AssertLogMessageIsGenerated(call, $"Gegevens zijn geïmporteerd vanuit bestand '{filePath}'.", 1);
            Assert.IsTrue(importResult);
            mocks.VerifyAll();
        }
Exemple #8
0
        public void Import_WithValidFileAndConfirmationRequired_InquiresAndUpdatesHydraulicBoundaryDatabase(bool confirmationRequired)
        {
            // Setup
            var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase();

            var mocks   = new MockRepository();
            var handler = mocks.StrictMock <IHydraulicBoundaryDatabaseUpdateHandler>();

            handler.Expect(h => h.IsConfirmationRequired(Arg <HydraulicBoundaryDatabase> .Is.Same(hydraulicBoundaryDatabase),
                                                         Arg <ReadHydraulicBoundaryDatabase> .Is.NotNull))
            .WhenCalled(invocation =>
            {
                AssertReadHydraulicBoundaryDatabase((ReadHydraulicBoundaryDatabase)invocation.Arguments[1]);
            })
            .Return(confirmationRequired);

            if (confirmationRequired)
            {
                handler.Expect(h => h.InquireConfirmation()).Return(true);
            }

            handler.Expect(h => h.Update(Arg <HydraulicBoundaryDatabase> .Is.NotNull,
                                         Arg <ReadHydraulicBoundaryDatabase> .Is.NotNull,
                                         Arg <ReadHydraulicLocationConfigurationDatabase> .Is.NotNull,
                                         Arg <IEnumerable <long> > .Is.NotNull,
                                         Arg <string> .Is.NotNull,
                                         Arg <string> .Is.NotNull))
            .Return(Enumerable.Empty <IObservable>());
            mocks.ReplayAll();

            var importer = new HydraulicBoundaryDatabaseImporter(hydraulicBoundaryDatabase, handler, validFilePath);

            // Call
            var    importResult = false;
            Action call         = () => importResult = importer.Import();

            // Assert
            TestHelper.AssertLogMessageIsGenerated(call, $"Gegevens zijn geïmporteerd vanuit bestand '{validFilePath}'.", 1);
            Assert.IsTrue(importResult);
            mocks.VerifyAll();
        }
Exemple #9
0
        /// <summary>
        /// Imports the <see cref="HydraulicBoundaryDatabase"/> for the given <see cref="AssessmentSection"/>.
        /// </summary>
        /// <param name="assessmentSection">The <see cref="AssessmentSection"/> to import on.</param>
        /// <param name="filePath">The filePath to import from.</param>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="assessmentSection"/>
        /// is <c>null</c>.</exception>
        public static void ImportHydraulicBoundaryDatabase(AssessmentSection assessmentSection, string filePath)
        {
            if (assessmentSection == null)
            {
                throw new ArgumentNullException(nameof(assessmentSection));
            }

            var mocks        = new MockRepository();
            var viewCommands = mocks.Stub <IViewCommands>();

            mocks.ReplayAll();

            var hydraulicBoundaryDatabaseImporter = new HydraulicBoundaryDatabaseImporter(assessmentSection.HydraulicBoundaryDatabase,
                                                                                          new HydraulicBoundaryDatabaseUpdateHandler(
                                                                                              assessmentSection,
                                                                                              new DuneLocationsReplacementHandler(viewCommands, assessmentSection.DuneErosion)),
                                                                                          filePath);

            hydraulicBoundaryDatabaseImporter.Import();
            mocks.VerifyAll();
        }
Exemple #10
0
        public void Import_FileDoesNotExist_CancelImportWithErrorMessage()
        {
            // Setup
            var mocks   = new MockRepository();
            var handler = mocks.StrictMock <IHydraulicBoundaryDatabaseUpdateHandler>();

            mocks.ReplayAll();

            string path = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Integration.IO, "I_dont_exist");

            var importer = new HydraulicBoundaryDatabaseImporter(new HydraulicBoundaryDatabase(), handler, path);

            // Call
            var    importSuccessful = true;
            Action call             = () => importSuccessful = importer.Import();

            // Assert
            string expectedMessage = $"Fout bij het lezen van bestand '{path}': het bestand bestaat niet.";

            AssertImportFailed(call, expectedMessage, ref importSuccessful);
            mocks.VerifyAll();
        }
Exemple #11
0
        public void Import_EmptySchema_CancelImportWithErrorMessage()
        {
            // Setup
            var mocks   = new MockRepository();
            var handler = mocks.StrictMock <IHydraulicBoundaryDatabaseUpdateHandler>();

            mocks.ReplayAll();

            string path = Path.Combine(testDataPath, "empty.sqlite");

            var importer = new HydraulicBoundaryDatabaseImporter(new HydraulicBoundaryDatabase(), handler, path);

            // Call
            var    importSuccessful = true;
            Action call             = () => importSuccessful = importer.Import();

            // Assert
            string expectedMessage = $"Fout bij het lezen van bestand '{path}': kon geen locaties verkrijgen van de database.";

            AssertImportFailed(call, expectedMessage, ref importSuccessful);
            mocks.VerifyAll();
        }
Exemple #12
0
        public void Import_FilePathIsDirectory_CancelImportWithErrorMessage()
        {
            // Setup
            var mocks   = new MockRepository();
            var handler = mocks.StrictMock <IHydraulicBoundaryDatabaseUpdateHandler>();

            mocks.ReplayAll();

            string path = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Integration.IO, Path.DirectorySeparatorChar.ToString());

            var importer = new HydraulicBoundaryDatabaseImporter(new HydraulicBoundaryDatabase(), handler, path);

            // Call
            var    importSuccessful = true;
            Action call             = () => importSuccessful = importer.Import();

            // Assert
            string expectedMessage = $"Fout bij het lezen van bestand '{path}': bestandspad mag niet verwijzen naar een lege bestandsnaam.";

            AssertImportFailed(call, expectedMessage, ref importSuccessful);
            mocks.VerifyAll();
        }
Exemple #13
0
        public void Import_InvalidSchema_CancelImportWithErrorMessage()
        {
            // Setup
            var mocks   = new MockRepository();
            var handler = mocks.StrictMock <IHydraulicBoundaryDatabaseUpdateHandler>();

            mocks.ReplayAll();

            string path = Path.Combine(testDataPath, "corruptschema.sqlite");

            var importer = new HydraulicBoundaryDatabaseImporter(new HydraulicBoundaryDatabase(), handler, path);

            // Call
            var    importSuccessful = true;
            Action call             = () => importSuccessful = importer.Import();

            // Assert
            string expectedMessage = $"Fout bij het lezen van bestand '{path}': kritieke fout opgetreden bij het uitlezen van waardes uit kolommen in de database.";

            AssertImportFailed(call, expectedMessage, ref importSuccessful);
            mocks.VerifyAll();
        }
Exemple #14
0
        public void Import_ExistingFileWithoutHlcd_CancelImportWithErrorMessage()
        {
            // Setup
            var mocks   = new MockRepository();
            var handler = mocks.StrictMock <IHydraulicBoundaryDatabaseUpdateHandler>();

            handler.Stub(h => h.IsConfirmationRequired(null, null)).IgnoreArguments().Return(false);
            mocks.ReplayAll();

            string path = Path.Combine(testDataPath, "withoutHLCD", "complete.sqlite");

            var importer = new HydraulicBoundaryDatabaseImporter(new HydraulicBoundaryDatabase(), handler, path);

            // Call
            var    importSuccessful = true;
            Action call             = () => importSuccessful = importer.Import();

            // Assert
            string expectedMessage = $"Fout bij het lezen van bestand '{path}': het bijbehorende HLCD bestand is niet gevonden in dezelfde map als het HRD bestand.";

            AssertImportFailed(call, expectedMessage, ref importSuccessful);
            mocks.VerifyAll();
        }
Exemple #15
0
        public void Import_ExistingFileWithInvalidSettings_CancelImportWithErrorMessage()
        {
            // Setup
            var mocks   = new MockRepository();
            var handler = mocks.StrictMock <IHydraulicBoundaryDatabaseUpdateHandler>();

            handler.Stub(h => h.IsConfirmationRequired(null, null)).IgnoreArguments().Return(false);
            mocks.ReplayAll();

            string path = Path.Combine(testDataPath, "invalidSettings", "complete.sqlite");

            var importer = new HydraulicBoundaryDatabaseImporter(new HydraulicBoundaryDatabase(), handler, path);

            // Call
            var    importSuccessful = true;
            Action call             = () => importSuccessful = importer.Import();

            // Assert
            string expectedMessage = $"Fout bij het lezen van bestand '{path}': de rekeninstellingen database heeft niet het juiste schema.";

            AssertImportFailed(call, expectedMessage, ref importSuccessful);
            mocks.VerifyAll();
        }
Exemple #16
0
        public void Import_ExistingFileWithInvalidHlcdSchema_CancelImportWithErrorMessage()
        {
            // Setup
            var mocks   = new MockRepository();
            var handler = mocks.StrictMock <IHydraulicBoundaryDatabaseUpdateHandler>();

            handler.Stub(h => h.IsConfirmationRequired(null, null)).IgnoreArguments().Return(false);
            mocks.ReplayAll();

            string path         = Path.Combine(testDataPath, "InvalidHLCDSchema", "complete.sqlite");
            string hlcdFilePath = Path.Combine(Path.GetDirectoryName(path), "hlcd.sqlite");

            var importer = new HydraulicBoundaryDatabaseImporter(new HydraulicBoundaryDatabase(), handler, path);

            // Call
            var    importSuccessful = true;
            Action call             = () => importSuccessful = importer.Import();

            // Assert
            string expectedMessage = $"Fout bij het lezen van bestand '{hlcdFilePath}': kritieke fout opgetreden bij het uitlezen van waardes uit kolommen in de database.";

            AssertImportFailed(call, expectedMessage, ref importSuccessful);
            mocks.VerifyAll();
        }
Exemple #17
0
        public void Import_ExistingFileAndHlcdWithInvalidNumberOfScenarioInformationEntries_CancelImportWithErrorMessage(string testFolder)
        {
            // Setup
            var mocks   = new MockRepository();
            var handler = mocks.StrictMock <IHydraulicBoundaryDatabaseUpdateHandler>();

            handler.Stub(h => h.IsConfirmationRequired(null, null)).IgnoreArguments().Return(false);
            mocks.ReplayAll();

            string path         = Path.Combine(testDataPath, testFolder, "complete.sqlite");
            string hlcdFilePath = Path.Combine(Path.GetDirectoryName(path), "hlcd.sqlite");

            var importer = new HydraulicBoundaryDatabaseImporter(new HydraulicBoundaryDatabase(), handler, path);

            // Call
            var    importSuccessful = true;
            Action call             = () => importSuccessful = importer.Import();

            // Assert
            string expectedMessage = $"Fout bij het lezen van bestand '{hlcdFilePath}': de tabel 'ScenarioInformation' in het HLCD bestand moet exact 1 rij bevatten.";

            AssertImportFailed(call, expectedMessage, ref importSuccessful);
            mocks.VerifyAll();
        }