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(); }
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(); }
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(); }
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(); }
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(); }
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 }
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(); }
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(); }
/// <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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }