Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs =================================================================== diff -u -rb9aee18e119ced5921af7786384d682fa295632b -r150d8f27b753381ac4d918c74795b9ed3fc8ba1b --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs (.../FailureMechanismContributionView.cs) (revision b9aee18e119ced5921af7786384d682fa295632b) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs (.../FailureMechanismContributionView.cs) (revision 150d8f27b753381ac4d918c74795b9ed3fc8ba1b) @@ -99,8 +99,13 @@ { Observable = assessmentSection.FailureMechanismContribution }; - assessmentSectionObserver = new Observer(UpdateView) + assessmentSectionObserver = new Observer(() => { + DetachFromFailureMechanisms(); + UpdateView(); + AttachToFailureMechanisms(); + }) + { Observable = assessmentSection }; Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismContributionViewTest.cs =================================================================== diff -u -rb9aee18e119ced5921af7786384d682fa295632b -r150d8f27b753381ac4d918c74795b9ed3fc8ba1b --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismContributionViewTest.cs (.../FailureMechanismContributionViewTest.cs) (revision b9aee18e119ced5921af7786384d682fa295632b) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismContributionViewTest.cs (.../FailureMechanismContributionViewTest.cs) (revision 150d8f27b753381ac4d918c74795b9ed3fc8ba1b) @@ -692,6 +692,47 @@ mocks.VerifyAll(); } + [Test] + public void GivenView_WhenAssessmentSectionNotified_ThenFailureMechanismObserversResubscribed() + { + // Given + var mocks = new MockRepository(); + var viewCommands = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism1 = new TestFailureMechanism(); + var failureMechanism2 = new TestFailureMechanism(); + var failureMechanisms = new List + { + failureMechanism1 + }; + var assessmentSection = new AssessmentSectionStub(failureMechanisms); + + using (var view = new FailureMechanismContributionView(assessmentSection, viewCommands)) + { + ShowFormWithView(view); + + failureMechanisms.Remove(failureMechanism1); + failureMechanisms.Add(failureMechanism2); + assessmentSection.NotifyObservers(); + + var dataGridView = (DataGridView)new ControlTester(dataGridViewControlName).TheObject; + var invalidated = false; + dataGridView.Invalidated += (sender, args) => invalidated = true; + + // Precondition + Assert.IsFalse(invalidated); + + // When + failureMechanism1.NotifyObservers(); + + // Then + Assert.IsFalse(invalidated); + } + + mocks.VerifyAll(); + } + private static IEnumerable GetCellFormattingStates() { yield return new TestCaseData(true, CellStyle.Disabled);