Index: Riskeer/Common/src/Riskeer.Common.IO/FileImporters/FailureMechanismSectionsImporter.cs =================================================================== diff -u -r07b3862293afdc4c605cfc444938462a668fad2d -rd8469c5b44661e4c6da4a03959b7ebd19b313596 --- Riskeer/Common/src/Riskeer.Common.IO/FileImporters/FailureMechanismSectionsImporter.cs (.../FailureMechanismSectionsImporter.cs) (revision 07b3862293afdc4c605cfc444938462a668fad2d) +++ Riskeer/Common/src/Riskeer.Common.IO/FileImporters/FailureMechanismSectionsImporter.cs (.../FailureMechanismSectionsImporter.cs) (revision d8469c5b44661e4c6da4a03959b7ebd19b313596) @@ -22,6 +22,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Core.Common.Base; using Core.Common.Base.Geometry; using Core.Common.Base.IO; using Core.Common.IO.Readers; @@ -51,6 +52,7 @@ private readonly ReferenceLine referenceLine; private readonly IFailureMechanismSectionUpdateStrategy failureMechanismSectionUpdateStrategy; private readonly IImporterMessageProvider messageProvider; + private List affectedObjects; /// /// Initializes a new instance of the class. @@ -133,11 +135,12 @@ protected override void DoPostImportUpdates() { - failureMechanismSectionUpdateStrategy.DoPostUpdateActions(); + affectedObjects.AddRange(failureMechanismSectionUpdateStrategy.DoPostUpdateActions()); - base.DoPostImportUpdates(); - var failureMechanismWithSectionResults = ImportTarget as IHasSectionResults; - failureMechanismWithSectionResults?.SectionResults.NotifyObservers(); + foreach (IObservable affectedObject in affectedObjects) + { + affectedObject.NotifyObservers(); + } } protected override void LogImportCanceledMessage() @@ -242,7 +245,7 @@ { IEnumerable snappedSections = SnapReadSectionsToReferenceLine(failureMechanismSections, referenceLine); - failureMechanismSectionUpdateStrategy.UpdateSectionsWithImportedData(snappedSections, FilePath); + affectedObjects = failureMechanismSectionUpdateStrategy.UpdateSectionsWithImportedData(snappedSections, FilePath).ToList(); } private static IEnumerable SnapReadSectionsToReferenceLine(IEnumerable failureMechanismSections, Index: Riskeer/Common/test/Riskeer.Common.IO.Test/FileImporters/FailureMechanismSectionsImporterTest.cs =================================================================== diff -u -r07b3862293afdc4c605cfc444938462a668fad2d -rd8469c5b44661e4c6da4a03959b7ebd19b313596 --- Riskeer/Common/test/Riskeer.Common.IO.Test/FileImporters/FailureMechanismSectionsImporterTest.cs (.../FailureMechanismSectionsImporterTest.cs) (revision 07b3862293afdc4c605cfc444938462a668fad2d) +++ Riskeer/Common/test/Riskeer.Common.IO.Test/FileImporters/FailureMechanismSectionsImporterTest.cs (.../FailureMechanismSectionsImporterTest.cs) (revision d8469c5b44661e4c6da4a03959b7ebd19b313596) @@ -145,7 +145,9 @@ Assert.AreEqual(sectionCount, sections.Count()); AssertSectionsAreValidForReferenceLine(sections, importReferenceLine); Assert.AreEqual(sectionsFilePath, invocation.Arguments[1]); - }); + }) + .Return(Enumerable.Empty()); + ; var messageProvider = mocks.Stub(); mocks.ReplayAll(); @@ -186,7 +188,8 @@ Assert.AreEqual(7, sections.Count()); AssertSectionsAreValidForReferenceLine(sections, importReferenceLine); Assert.AreEqual(sectionsFilePath, invocation.Arguments[1]); - }); + }) + .Return(Enumerable.Empty()); var messageProvider = mocks.Stub(); mocks.ReplayAll(); @@ -207,6 +210,9 @@ var mocks = new MockRepository(); var failurePath = mocks.Stub(); var updateStrategy = mocks.Stub(); + updateStrategy.Stub(us => us.UpdateSectionsWithImportedData(null, null)) + .IgnoreArguments() + .Return(Enumerable.Empty()); var messageProvider = mocks.StrictMock(); messageProvider.Expect(mp => mp.GetAddDataToModelProgressText()).Return(expectedAddDataToModelProgressText); mocks.ReplayAll(); @@ -607,7 +613,9 @@ var updateStrategy = mocks.StrictMock(); updateStrategy.Expect(us => us.UpdateSectionsWithImportedData(null, null)) .IgnoreArguments() - .WhenCalled(invocation => { CollectionAssert.IsNotEmpty((IEnumerable) invocation.Arguments[0]); }); + .WhenCalled(invocation => { CollectionAssert.IsNotEmpty((IEnumerable) invocation.Arguments[0]); }) + .Return(Enumerable.Empty()); + ; var messageProvider = mocks.StrictMock(); messageProvider.Expect(mp => mp.GetAddDataToModelProgressText()).Return(expectedAddDataToModelProgressText); mocks.ReplayAll(); @@ -661,7 +669,9 @@ Assert.AreEqual(62, sections.Count()); AssertSectionsAreValidForReferenceLine(sections, importReferenceLine); Assert.AreEqual(sectionsFilePath, invocation.Arguments[1]); - }); + }) + .Return(Enumerable.Empty()); + ; var messageProvider = mocks.Stub(); mocks.ReplayAll(); @@ -685,11 +695,18 @@ public void DoPostImport_AfterImport_CallUpdateStrategyAndObserversNotified() { // Setup + var failurePath = new TestFailurePath(); + var mocks = new MockRepository(); var updateStrategy = mocks.StrictMock(); updateStrategy.Expect(us => us.UpdateSectionsWithImportedData(null, null)) - .IgnoreArguments(); - updateStrategy.Expect(us => us.DoPostUpdateActions()); + .IgnoreArguments() + .Return(new[] + { + failurePath + }); + updateStrategy.Expect(us => us.DoPostUpdateActions()) + .Return(Enumerable.Empty()); var messageProvider = mocks.Stub(); var observable = mocks.StrictMock(); observable.Expect(o => o.UpdateObserver()); @@ -702,7 +719,6 @@ ReferenceLine importReferenceLine = ImportReferenceLine(referenceLineFilePath); - var failurePath = new TestFailurePath(); var importer = new FailureMechanismSectionsImporter(failurePath, importReferenceLine, sectionsFilePath, updateStrategy, messageProvider); importer.Import();