Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs =================================================================== diff -u -ra102fea862becd91b612d707102eea3fa41a8c67 -r2eb13d54b332fd4bdea7d44b35a509cd843c70f7 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs (.../PipingFailureMechanismNodePresenter.cs) (revision a102fea862becd91b612d707102eea3fa41a8c67) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs (.../PipingFailureMechanismNodePresenter.cs) (revision 2eb13d54b332fd4bdea7d44b35a509cd843c70f7) @@ -130,6 +130,7 @@ foreach (var calc in failureMechanism.Calculations) { calc.ClearOutput(); + calc.NotifyObservers(); } }); Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationInputsNodePresenterTest.cs =================================================================== diff -u -ra102fea862becd91b612d707102eea3fa41a8c67 -r2eb13d54b332fd4bdea7d44b35a509cd843c70f7 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationInputsNodePresenterTest.cs (.../PipingCalculationInputsNodePresenterTest.cs) (revision a102fea862becd91b612d707102eea3fa41a8c67) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationInputsNodePresenterTest.cs (.../PipingCalculationInputsNodePresenterTest.cs) (revision 2eb13d54b332fd4bdea7d44b35a509cd843c70f7) @@ -587,5 +587,30 @@ Assert.IsNotNull(pipingData.Output); mockRepository.VerifyAll(); } + + [Test] + public void GivenPipingDataWithOutput_WhenClearingOutputFromContextMenu_ThenPipingDataOutputClearedAndNotified() + { + // Given + int clearOutputItemPosition = 2; + var pipingData = new PipingData(); + var observer = mockRepository.StrictMock(); + observer.Expect(o => o.UpdateObserver()); + pipingData.Output = new TestPipingOutput(); + pipingData.Attach(observer); + + mockRepository.ReplayAll(); + + var nodePresenter = new PipingCalculationInputsNodePresenter(); + var contextMenuAdapter = nodePresenter.GetContextMenu(null, new PipingCalculationInputs { PipingData = pipingData }); + + // When + contextMenuAdapter.Items[clearOutputItemPosition].PerformClick(); + + // Then + Assert.IsFalse(pipingData.HasOutput); + + mockRepository.VerifyAll(); + } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingFailureMechanismNodePresenterTest.cs =================================================================== diff -u -ra102fea862becd91b612d707102eea3fa41a8c67 -r2eb13d54b332fd4bdea7d44b35a509cd843c70f7 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingFailureMechanismNodePresenterTest.cs (.../PipingFailureMechanismNodePresenterTest.cs) (revision a102fea862becd91b612d707102eea3fa41a8c67) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingFailureMechanismNodePresenterTest.cs (.../PipingFailureMechanismNodePresenterTest.cs) (revision 2eb13d54b332fd4bdea7d44b35a509cd843c70f7) @@ -480,5 +480,41 @@ Assert.IsFalse(removalSuccesful); Assert.AreSame(expectedFailureMechanism, project.PipingFailureMechanism); } + + [Test] + public void GivenMultiplePipingDataWithOutput_WhenClearingOutputFromContextMenu_ThenPipingDataOutputCleared() + { + // Given + int clearOutputItemPosition = 2; + + var mocks = new MockRepository(); + var observer = mocks.StrictMock(); + observer.Expect(o => o.UpdateObserver()).Repeat.Twice(); + + var dataMock = mocks.StrictMock(); + dataMock.Calculations.Add(new PipingData + { + Output = new TestPipingOutput() + }); + dataMock.Calculations.Add(new PipingData + { + Output = new TestPipingOutput() + }); + dataMock.Calculations.ElementAt(0).Attach(observer); + dataMock.Calculations.ElementAt(1).Attach(observer); + + var nodePresenter = new PipingFailureMechanismNodePresenter(); + var contextMenuAdapter = nodePresenter.GetContextMenu(null, dataMock); + + mocks.ReplayAll(); + + // When + contextMenuAdapter.Items[clearOutputItemPosition].PerformClick(); + + // Then + CollectionAssert.IsEmpty(dataMock.Calculations.Where(c => c.HasOutput)); + + mocks.VerifyAll(); + } } } \ No newline at end of file