Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/FailureMechanismContributionViewInfoTest.cs =================================================================== diff -u -r4ee9bf9a46317d760d9d8fdf95b9024571fc04fe -reffd6e0c3416420a4f5fbb0575b9a3369caf70fe --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/FailureMechanismContributionViewInfoTest.cs (.../FailureMechanismContributionViewInfoTest.cs) (revision 4ee9bf9a46317d760d9d8fdf95b9024571fc04fe) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/FailureMechanismContributionViewInfoTest.cs (.../FailureMechanismContributionViewInfoTest.cs) (revision effd6e0c3416420a4f5fbb0575b9a3369caf70fe) @@ -20,6 +20,8 @@ // All rights reserved. using System.Linq; +using Core.Common.Gui; +using Core.Common.Gui.Commands; using Core.Common.Gui.Plugin; using Core.Common.TestUtil; using NUnit.Framework; @@ -216,5 +218,43 @@ Assert.IsFalse(closeForData); mocks.VerifyAll(); } + + [Test] + public void AfterCreate_WithGuiSet_SetsAssessmentSection() + { + // Setup + var contribution = new FailureMechanismContribution(Enumerable.Empty(), 100.0, 789123); + + var assessmentSection = mocks.Stub(); + assessmentSection.Stub(section => section.GetFailureMechanisms()) + .Return(Enumerable.Empty()); + assessmentSection.Stub(section => section.Composition) + .Return(AssessmentSectionComposition.Dike); + assessmentSection.Stub(section => section.FailureMechanismContribution) + .Return(contribution); + + IGui guiStub = mocks.Stub(); + guiStub.Stub(g => g.ProjectOpened += null).IgnoreArguments(); + guiStub.Stub(g => g.ProjectOpened -= null).IgnoreArguments(); + guiStub.Stub(g => g.ViewCommands).Return(mocks.Stub()); + + mocks.ReplayAll(); + + var context = new FailureMechanismContributionContext(contribution, assessmentSection); + var view = new FailureMechanismContributionView(); + + using (var guiPlugin = new RingtoetsGuiPlugin()) + { + info = guiPlugin.GetViewInfos().First(tni => tni.ViewType == typeof(FailureMechanismContributionView)); + guiPlugin.Gui = guiStub; + + // Call + info.AfterCreate(view, context); + + // Assert + Assert.AreSame(view.AssessmentSection, assessmentSection); + } + mocks.VerifyAll(); + } } } \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs =================================================================== diff -u -rbae4f8741e1a0155753e3b3734de500712ee4182 -reffd6e0c3416420a4f5fbb0575b9a3369caf70fe --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision bae4f8741e1a0155753e3b3734de500712ee4182) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision effd6e0c3416420a4f5fbb0575b9a3369caf70fe) @@ -241,11 +241,17 @@ private bool ClosePipingFailureMechanismViewForData(PipingFailureMechanismView view, object o) { var assessmentSection = o as IAssessmentSection; - var isAssessmentSectionRemoved = assessmentSection != null && ReferenceEquals(((PipingFailureMechanismContext) view.Data).Parent, assessmentSection); + var pipingFailureMechanism = o as PipingFailureMechanism; - var isPipingFailureMechanismRemoved = o is PipingFailureMechanism; + var viewPipingFailureMechanismContext = (PipingFailureMechanismContext)view.Data; + var viewPipingFailureMechanism = viewPipingFailureMechanismContext.WrappedData; - return isAssessmentSectionRemoved || isPipingFailureMechanismRemoved; + if (assessmentSection != null) + { + return ReferenceEquals(viewPipingFailureMechanismContext.Parent, assessmentSection); + } + + return ReferenceEquals(viewPipingFailureMechanism, pipingFailureMechanism); } # endregion @@ -255,19 +261,16 @@ private static bool ClosePipingCalculationsViewForData(PipingCalculationsView view, object o) { var assessmentSection = o as IAssessmentSection; + var pipingFailureMechanism = o as PipingFailureMechanism; + if (assessmentSection != null) { - var pipingFailureMechanism = assessmentSection.GetFailureMechanisms() - .OfType() - .FirstOrDefault(); - - if (pipingFailureMechanism != null) - { - return view.Data == pipingFailureMechanism.CalculationsGroup; - } + pipingFailureMechanism = assessmentSection.GetFailureMechanisms() + .OfType() + .FirstOrDefault(); } - return false; + return pipingFailureMechanism != null && ReferenceEquals(view.Data, pipingFailureMechanism.CalculationsGroup); } #endregion endregion Index: Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/ViewInfos/PipingCalculationsViewInfoTest.cs =================================================================== diff -u -rfff12e249602fb700b2854c14a3b7cdd0b73c023 -reffd6e0c3416420a4f5fbb0575b9a3369caf70fe --- Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/ViewInfos/PipingCalculationsViewInfoTest.cs (.../PipingCalculationsViewInfoTest.cs) (revision fff12e249602fb700b2854c14a3b7cdd0b73c023) +++ Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/ViewInfos/PipingCalculationsViewInfoTest.cs (.../PipingCalculationsViewInfoTest.cs) (revision effd6e0c3416420a4f5fbb0575b9a3369caf70fe) @@ -163,6 +163,42 @@ } [Test] + public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanism_ReturnsFalse() + { + // Setup + var view = new PipingCalculationsView(); + var failureMechanism = new PipingFailureMechanism(); + + view.Data = new CalculationGroup(); + + mocks.ReplayAll(); + + // Call + var closeForData = info.CloseForData(view, failureMechanism); + + // Assert + Assert.IsFalse(closeForData); + } + + [Test] + public void CloseForData_ViewCorrespondingToRemovedFailureMechanism_ReturnsTrue() + { + // Setup + var view = new PipingCalculationsView(); + var failureMechanism = new PipingFailureMechanism(); + + view.Data = failureMechanism.CalculationsGroup; + + mocks.ReplayAll(); + + // Call + var closeForData = info.CloseForData(view, failureMechanism); + + // Assert + Assert.IsTrue(closeForData); + } + + [Test] public void AfterCreate_Always_SetsSpecificPropertiesToView() { // Setup Index: Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/ViewInfos/PipingFailureMechanismViewInfoTest.cs =================================================================== diff -u -ra0c17eeffbe1fc611d12cc9f2f646b769686545e -reffd6e0c3416420a4f5fbb0575b9a3369caf70fe --- Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/ViewInfos/PipingFailureMechanismViewInfoTest.cs (.../PipingFailureMechanismViewInfoTest.cs) (revision a0c17eeffbe1fc611d12cc9f2f646b769686545e) +++ Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/ViewInfos/PipingFailureMechanismViewInfoTest.cs (.../PipingFailureMechanismViewInfoTest.cs) (revision effd6e0c3416420a4f5fbb0575b9a3369caf70fe) @@ -90,6 +90,49 @@ } [Test] + public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanism_ReturnsFalse() + { + // Setup + var view = new PipingFailureMechanismView(); + var pipingFailureMechanismMock = new PipingFailureMechanism(); + var otherPipingFailureMechanismMock = new PipingFailureMechanism(); + + var assessmentSectionMock = mocks.Stub(); + var pipingFailureMechanismContext = mocks.StrictMock(pipingFailureMechanismMock, assessmentSectionMock); + + mocks.ReplayAll(); + + view.Data = pipingFailureMechanismContext; + + // Call + var closeForData = info.CloseForData(view, otherPipingFailureMechanismMock); + + // Assert + Assert.IsFalse(closeForData); + } + + [Test] + public void CloseForData_ViewCorrespondingToRemovedFailureMechanism_ReturnsTrue() + { + // Setup + var view = new PipingFailureMechanismView(); + var pipingFailureMechanism = new PipingFailureMechanism(); + + var assessmentSectionMock = mocks.Stub(); + var pipingFailureMechanismContext = new PipingFailureMechanismContext(pipingFailureMechanism, assessmentSectionMock); + + mocks.ReplayAll(); + + view.Data = pipingFailureMechanismContext; + + // Call + var closeForData = info.CloseForData(view, pipingFailureMechanism); + + // Assert + Assert.IsTrue(closeForData); + } + + [Test] [TestCase(true)] [TestCase(false)] public void AdditionalDataCheck_Always_ReturnTrueOnlyIfFailureMechanismRelevant(bool isRelevant)