public void Import_MissingNameValue_AbortImportWithErrorMessage() { // Setup var mocks = new MockRepository(); var failureMechanism = mocks.Stub <IFailureMechanism>(); var updateStrategy = mocks.StrictMock <IFailureMechanismSectionUpdateStrategy>(); var messageProvider = mocks.StrictMock <IImporterMessageProvider>(); mocks.ReplayAll(); string sectionsFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, Path.Combine("FailureMechanismSections", "vakindeling_Empty_Name_Value.shp")); var importer = new FailureMechanismSectionsImporter(failureMechanism, new ReferenceLine(), sectionsFilePath, updateStrategy, messageProvider); // Call var importSuccessful = true; void Call() => importSuccessful = importer.Import(); // Assert var expectedMessage = $"Fout bij het lezen van bestand '{sectionsFilePath}': voor een of meerdere vakken is geen naam opgegeven."; TestHelper.AssertLogMessageIsGenerated(Call, expectedMessage, 1); Assert.IsFalse(importSuccessful); mocks.VerifyAll(); }
/// <summary> /// Imports <see cref="FailureMechanismSection"/> data for a given enumeration of <see cref="IFailureMechanism{T}"/>. /// </summary> /// <param name="assessmentSection">The <see cref="AssessmentSection"/> that contains the <see cref="IFailureMechanism{T}"/> instances.</param> /// <param name="targetFailureMechanisms">The <see cref="IFailureMechanism{T}"/> instances to import on.</param> /// <remarks> /// <para>This will import the same 283 failure mechanism sections on all failure mechanisms.</para> /// <para>Does not import using <see cref="FileImportActivity"/>.</para> /// </remarks> public static void ImportFailureMechanismSections(AssessmentSection assessmentSection, IEnumerable <IFailureMechanism <FailureMechanismSectionResult> > targetFailureMechanisms) { using (var embeddedResourceFileWriter = new EmbeddedResourceFileWriter(typeof(DataImportHelper).Assembly, true, "traject_6-3_vakken.shp", "traject_6-3_vakken.dbf", "traject_6-3_vakken.prj", "traject_6-3_vakken.shx")) { IFailureMechanism <FailureMechanismSectionResult>[] failureMechanisms = targetFailureMechanisms.ToArray(); for (var i = 0; i < failureMechanisms.Length; i++) { IFailureMechanism <FailureMechanismSectionResult> failureMechanism = failureMechanisms[i]; if (i == 0) { string filePath = Path.Combine(embeddedResourceFileWriter.TargetFolderPath, "traject_6-3_vakken.shp"); var importer = new FailureMechanismSectionsImporter( failureMechanism, assessmentSection.ReferenceLine, filePath, new FailureMechanismSectionReplaceStrategy(failureMechanism), new ImportMessageProvider()); importer.Import(); } else { // Copy same FailureMechanismSection instances to other failure mechanisms FailureMechanismTestHelper.SetSections(failureMechanism, failureMechanisms[0].Sections.Select(DeepCloneSection).ToArray()); } } } }
public void Import_InvalidArtificialFileBecauseSomePointsNotOnReferenceLine_AbortImportWithErrorMessage() { // Setup var mocks = new MockRepository(); var failureMechanism = mocks.Stub <IFailureMechanism>(); var updateStrategy = mocks.StrictMock <IFailureMechanismSectionUpdateStrategy>(); var messageProvider = mocks.StrictMock <IImporterMessageProvider>(); messageProvider.Expect(mp => mp.GetUpdateDataFailedLogMessageText(sectionsTypeDescriptor)).Return(expectedUpdateDataFailedText); mocks.ReplayAll(); string referenceLineFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, Path.Combine("ReferenceLine", "Artificial_referencelijn_testA.shp")); string sectionsFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, Path.Combine("FailureMechanismSections", "Artificial_referencelijn_testA_InvalidVakken_PointsTooFarFromReferenceLine.shp")); ReferenceLine importReferenceLine = ImportReferenceLine(referenceLineFilePath); var importer = new FailureMechanismSectionsImporter(failureMechanism, importReferenceLine, sectionsFilePath, updateStrategy, messageProvider); // Call var importSuccessful = true; void Call() => importSuccessful = importer.Import(); // Assert string expectedMessage = string.Format(expectedUpdateDataFailedText, "De opgetelde lengte van de vakken moet overeenkomen met de trajectlengte"); TestHelper.AssertLogMessageIsGenerated(Call, expectedMessage, 1); Assert.IsFalse(importSuccessful); mocks.VerifyAll(); }
public void Import_InvalidArtificialFileBecauseUnchainedSections_AbortImportWithErrorMessage() { // Setup var mocks = new MockRepository(); var failureMechanism = mocks.Stub <IFailureMechanism>(); var updateStrategy = mocks.StrictMock <IFailureMechanismSectionUpdateStrategy>(); var messageProvider = mocks.StrictMock <IImporterMessageProvider>(); messageProvider.Expect(mp => mp.GetUpdateDataFailedLogMessageText(sectionsTypeDescriptor)).Return(expectedUpdateDataFailedText); mocks.ReplayAll(); string referenceLineFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, Path.Combine("ReferenceLine", "Artificial_referencelijn_testA.shp")); string sectionsFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, Path.Combine("FailureMechanismSections", "Artificial_referencelijn_testA_InvalidVakken_UnchainedSections.shp")); ReferenceLine importReferenceLine = ImportReferenceLine(referenceLineFilePath); var importer = new FailureMechanismSectionsImporter(failureMechanism, importReferenceLine, sectionsFilePath, updateStrategy, messageProvider); // Call var importSuccessful = true; void Call() => importSuccessful = importer.Import(); // Assert string expectedMessage = string.Format(expectedUpdateDataFailedText, "Het bestand moet vakken bevatten die allen op elkaar aansluiten"); TestHelper.AssertLogMessageIsGenerated(Call, expectedMessage, 1); Assert.IsFalse(importSuccessful); mocks.VerifyAll(); }
public void Import_FileDoesNotExist_AbortImportWithErrorMessage() { // Setup var mocks = new MockRepository(); var failureMechanism = mocks.Stub <IFailureMechanism>(); var updateStrategy = mocks.StrictMock <IFailureMechanismSectionUpdateStrategy>(); var messageProvider = mocks.StrictMock <IImporterMessageProvider>(); messageProvider.Expect(mp => mp.GetUpdateDataFailedLogMessageText(sectionsTypeDescriptor)).Return(expectedUpdateDataFailedText); mocks.ReplayAll(); string referenceLineFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, Path.Combine("ReferenceLine", "traject_1-1.shp")); string sectionsFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, "I_dont_exist.shp"); ReferenceLine importReferenceLine = ImportReferenceLine(referenceLineFilePath); var importer = new FailureMechanismSectionsImporter(failureMechanism, importReferenceLine, sectionsFilePath, updateStrategy, messageProvider); // Call var importSuccessful = true; void Call() => importSuccessful = importer.Import(); // Assert string expectedMessage = string.Format( expectedUpdateDataFailedText, $@"Fout bij het lezen van bestand '{sectionsFilePath}': het bestand bestaat niet."); TestHelper.AssertLogMessageIsGenerated(Call, expectedMessage, 1); Assert.IsFalse(importSuccessful); mocks.VerifyAll(); }
public void Import_ReuseOfCanceledImportToValidTargetWithValidFile_TrueAndExpectedImportedData() { // Setup string referenceLineFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, Path.Combine("ReferenceLine", "traject_1-1.shp")); string sectionsFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, Path.Combine("FailureMechanismSections", "traject_1-1_vakken.shp")); ReferenceLine importReferenceLine = ImportReferenceLine(referenceLineFilePath); var mocks = new MockRepository(); var failureMechanism = mocks.Stub <IFailureMechanism>(); var updateStrategy = mocks.StrictMock <IFailureMechanismSectionUpdateStrategy>(); updateStrategy.Expect(us => us.UpdateSectionsWithImportedData(null, null)) .IgnoreArguments() .WhenCalled(invocation => { var sections = (IEnumerable <FailureMechanismSection>)invocation.Arguments[0]; Assert.AreEqual(62, sections.Count()); AssertSectionsAreValidForReferenceLine(sections, importReferenceLine); Assert.AreEqual(sectionsFilePath, invocation.Arguments[1]); }) .Return(Enumerable.Empty <IObservable>()); var messageProvider = mocks.Stub <IImporterMessageProvider>(); mocks.ReplayAll(); var importer = new FailureMechanismSectionsImporter(failureMechanism, importReferenceLine, sectionsFilePath, updateStrategy, messageProvider); importer.SetProgressChanged((description, step, steps) => importer.Cancel()); Assert.IsFalse(importer.Import()); importer.SetProgressChanged(null); // Call var importSuccessful = false; void Call() => importSuccessful = importer.Import(); // Assert TestHelper.AssertLogMessageIsGenerated(Call, $"Gegevens zijn geïmporteerd vanuit bestand '{sectionsFilePath}'.", 1); Assert.IsTrue(importSuccessful); mocks.VerifyAll(); }
public void DoPostImport_AfterImport_CallUpdateStrategyAndObserversNotified() { // Setup var updateSectionsWithImportedDataObservable = new TestObservable(); var doPostUpdateActionsObservable = new TestObservable(); var mocks = new MockRepository(); var updateStrategy = mocks.StrictMock <IFailureMechanismSectionUpdateStrategy>(); updateStrategy.Expect(us => us.UpdateSectionsWithImportedData(null, null)) .IgnoreArguments() .Return(new[] { updateSectionsWithImportedDataObservable }); updateStrategy.Expect(us => us.DoPostUpdateActions()) .Return(new[] { doPostUpdateActionsObservable }); var messageProvider = mocks.Stub <IImporterMessageProvider>(); var updateSectionsWithImportedDataObserver = mocks.StrictMock <IObserver>(); updateSectionsWithImportedDataObserver.Expect(o => o.UpdateObserver()); var doPostUpdateActionsObserver = mocks.StrictMock <IObserver>(); doPostUpdateActionsObserver.Expect(o => o.UpdateObserver()); mocks.ReplayAll(); string referenceLineFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, Path.Combine("ReferenceLine", "traject_1-1.shp")); string sectionsFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, Path.Combine("FailureMechanismSections", "traject_1-1_vakken.shp")); ReferenceLine importReferenceLine = ImportReferenceLine(referenceLineFilePath); var failureMechanism = new TestFailureMechanism(); var importer = new FailureMechanismSectionsImporter(failureMechanism, importReferenceLine, sectionsFilePath, updateStrategy, messageProvider); importer.Import(); updateSectionsWithImportedDataObservable.Attach(updateSectionsWithImportedDataObserver); doPostUpdateActionsObservable.Attach(doPostUpdateActionsObserver); // Call importer.DoPostImport(); // Assert mocks.VerifyAll(); }
public void Import_CancelOfImportWhenAddingDataToModel_ContinuesImportAndLogs() { // Setup var mocks = new MockRepository(); var failureMechanism = mocks.Stub <IFailureMechanism>(); var updateStrategy = mocks.StrictMock <IFailureMechanismSectionUpdateStrategy>(); updateStrategy.Expect(us => us.UpdateSectionsWithImportedData(null, null)) .IgnoreArguments() .WhenCalled(invocation => { CollectionAssert.IsNotEmpty((IEnumerable <FailureMechanismSection>)invocation.Arguments[0]); }) .Return(Enumerable.Empty <IObservable>()); var messageProvider = mocks.StrictMock <IImporterMessageProvider>(); messageProvider.Expect(mp => mp.GetAddDataToModelProgressText()).Return(expectedAddDataToModelProgressText); mocks.ReplayAll(); string referenceLineFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, Path.Combine("ReferenceLine", "traject_1-1.shp")); string sectionsFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, Path.Combine("FailureMechanismSections", "traject_1-1_vakken.shp")); ReferenceLine importReferenceLine = ImportReferenceLine(referenceLineFilePath); var importer = new FailureMechanismSectionsImporter(failureMechanism, importReferenceLine, sectionsFilePath, updateStrategy, messageProvider); importer.SetProgressChanged((description, step, steps) => { if (description.Contains(expectedAddDataToModelProgressText)) { importer.Cancel(); } }); var importSuccessful = true; // Call void Call() => importSuccessful = importer.Import(); // Assert TestHelper.AssertLogMessageIsGenerated(Call, "Huidige actie was niet meer te annuleren en is daarom voortgezet.", 2); Assert.IsTrue(importSuccessful); mocks.VerifyAll(); }
public void Import_ValidImport_GenerateExpectedProgressMessages() { // Setup var mocks = new MockRepository(); var failureMechanism = mocks.Stub <IFailureMechanism>(); var updateStrategy = mocks.Stub <IFailureMechanismSectionUpdateStrategy>(); updateStrategy.Stub(us => us.UpdateSectionsWithImportedData(null, null)) .IgnoreArguments() .Return(Enumerable.Empty <IObservable>()); var messageProvider = mocks.StrictMock <IImporterMessageProvider>(); messageProvider.Expect(mp => mp.GetAddDataToModelProgressText()).Return(expectedAddDataToModelProgressText); mocks.ReplayAll(); string referenceLineFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, Path.Combine("ReferenceLine", "Artificial_referencelijn_testA.shp")); string sectionsFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, Path.Combine("FailureMechanismSections", "Artificial_referencelijn_testA_ValidVakken.shp")); ReferenceLine importReferenceLine = ImportReferenceLine(referenceLineFilePath); var progressChangeNotifications = new List <ProgressNotification>(); var importer = new FailureMechanismSectionsImporter(failureMechanism, importReferenceLine, sectionsFilePath, updateStrategy, messageProvider); importer.SetProgressChanged((description, step, steps) => progressChangeNotifications.Add(new ProgressNotification(description, step, steps))); // Call bool importSuccessful = importer.Import(); // Assert Assert.IsTrue(importSuccessful); var expectedProgressMessages = new[] { new ProgressNotification("Inlezen vakindeling.", 1, 3), new ProgressNotification("Valideren ingelezen vakindeling.", 2, 3), new ProgressNotification(expectedAddDataToModelProgressText, 3, 3) }; ProgressNotificationTestHelper.AssertProgressNotificationsAreEqual(expectedProgressMessages, progressChangeNotifications); mocks.VerifyAll(); }
public void Import_ValidArtificialFileWithReversedSectionCoordinatesImperfectlyCorrespondingToReferenceLine_CallsUpdateStrategy( string affectedSection) { // Setup var fileName = $"Artificial_referencelijn_testA_ValidVakken_{affectedSection}.shp"; string referenceLineFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, Path.Combine("ReferenceLine", "Artificial_referencelijn_testA.shp")); string sectionsFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, Path.Combine("FailureMechanismSections", fileName)); ReferenceLine importReferenceLine = ImportReferenceLine(referenceLineFilePath); var mocks = new MockRepository(); var failureMechanism = mocks.Stub <IFailureMechanism>(); var updateStrategy = mocks.StrictMock <IFailureMechanismSectionUpdateStrategy>(); updateStrategy.Expect(us => us.UpdateSectionsWithImportedData(null, null)) .IgnoreArguments() .WhenCalled(invocation => { var sections = (IEnumerable <FailureMechanismSection>)invocation.Arguments[0]; Assert.AreEqual(7, sections.Count()); AssertSectionsAreValidForReferenceLine(sections, importReferenceLine); Assert.AreEqual(sectionsFilePath, invocation.Arguments[1]); }) .Return(Enumerable.Empty <IObservable>()); var messageProvider = mocks.Stub <IImporterMessageProvider>(); mocks.ReplayAll(); var importer = new FailureMechanismSectionsImporter(failureMechanism, importReferenceLine, sectionsFilePath, updateStrategy, messageProvider); // Call bool importSuccessful = importer.Import(); // Assert Assert.IsTrue(importSuccessful); mocks.VerifyAll(); }
public void Import_CancelOfImportWhenValidatingImportedSections_CancelsImportAndLogs() { // Setup var mocks = new MockRepository(); var failureMechanism = mocks.Stub <IFailureMechanism>(); var updateStrategy = mocks.StrictMock <IFailureMechanismSectionUpdateStrategy>(); var messageProvider = mocks.StrictMock <IImporterMessageProvider>(); messageProvider.Expect(mp => mp.GetCancelledLogMessageText(sectionsTypeDescriptor)).Return(expectedCancelledText); mocks.ReplayAll(); string referenceLineFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, Path.Combine("ReferenceLine", "traject_1-1.shp")); string sectionsFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Common.IO, Path.Combine("FailureMechanismSections", "traject_1-1_vakken.shp")); ReferenceLine importReferenceLine = ImportReferenceLine(referenceLineFilePath); var importer = new FailureMechanismSectionsImporter(failureMechanism, importReferenceLine, sectionsFilePath, updateStrategy, messageProvider); importer.SetProgressChanged((description, step, steps) => { if (description.Contains("Valideren ingelezen vakindeling.")) { importer.Cancel(); } }); var importSuccessful = true; // Call void Call() => importSuccessful = importer.Import(); // Assert TestHelper.AssertLogMessageIsGenerated(Call, expectedCancelledText, 1); Assert.IsFalse(importSuccessful); mocks.VerifyAll(); }