Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismResultView.cs =================================================================== diff -u -r602252658dcfe6cacca8ea7257323e560b9d1418 -r39fd57c75e24d3a6170b010861ed6ab47d1f2f42 --- Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismResultView.cs (.../FailureMechanismResultView.cs) (revision 602252658dcfe6cacca8ea7257323e560b9d1418) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismResultView.cs (.../FailureMechanismResultView.cs) (revision 39fd57c75e24d3a6170b010861ed6ab47d1f2f42) @@ -1,4 +1,4 @@ -// Copyright (C) Stichting Deltares 2017. All rights reserved. +// Copyright (C) Stichting Deltares 2017. All rights reserved. // // This file is part of Ringtoets. // @@ -167,6 +167,13 @@ } /// + /// Determines if the failure mechanism has section assembly results that are manually overwritten. + /// + /// true if the failure mechanism has section assembly results that are manually overwritten, + /// false otherwise. + protected abstract bool HasManualAssemblyResults(); + + /// /// Updates the data source of the data grid view with the current known failure mechanism section results. /// private void UpdateDataGridViewDataSource() @@ -201,6 +208,11 @@ { FailureMechanismAssemblyResultControl.SetError(e.Message); } + + if (HasManualAssemblyResults()) + { + FailureMechanismAssemblyResultControl.SetWarning("Toetsoordeel is (deels) gebaseerd op handmatig overschreven toetsoordelen."); + } } private void InitializeFailureMechanismAssemblyResultPanel() Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismResultViewTest.cs =================================================================== diff -u -r6db413e69ecbda9e1be48e269f8fa1a16fff1275 -r39fd57c75e24d3a6170b010861ed6ab47d1f2f42 --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismResultViewTest.cs (.../FailureMechanismResultViewTest.cs) (revision 6db413e69ecbda9e1be48e269f8fa1a16fff1275) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Views/FailureMechanismResultViewTest.cs (.../FailureMechanismResultViewTest.cs) (revision 39fd57c75e24d3a6170b010861ed6ab47d1f2f42) @@ -353,6 +353,65 @@ } [Test] + public void GivenFailureMechanismResultsView_WhenHasManualAssemblyResultsTrueDuringUpdate_ThenWarningSet() + { + // Given + TestFailureMechanismSectionResult sectionResult = FailureMechanismSectionResultTestFactory.CreateFailureMechanismSectionResult(); + + var sectionResults = new ObservableList + { + sectionResult + }; + + using (TestFailureMechanismResultView view = ShowFailureMechanismResultsView(sectionResults)) + { + // Precondition + TestAssemblyResultControl resultControl = GetFailureMechanismAssemblyCategoryGroupControl(); + ErrorProvider warningProvider = GetWarningProvider(resultControl); + Assert.IsEmpty(warningProvider.GetError(resultControl)); + + // When + view.HasManualSectionAssemblyResults = true; + sectionResult.NotifyObservers(); + + // Then + Assert.AreEqual("Toetsoordeel is (deels) gebaseerd op handmatig overschreven toetsoordelen.", warningProvider.GetError(resultControl)); + } + } + + [Test] + public void GivenFailureMechanismResultsView_WhenExceptionThrownAndHasManualAssemblyResultsTrueDuringUpdate_ThenMessagesSet() + { + // Given + TestFailureMechanismSectionResult sectionResult = FailureMechanismSectionResultTestFactory.CreateFailureMechanismSectionResult(); + + var sectionResults = new ObservableList + { + sectionResult + }; + + using (TestFailureMechanismResultView view = ShowFailureMechanismResultsView(sectionResults)) + { + // Precondition + TestAssemblyResultControl resultControl = GetFailureMechanismAssemblyCategoryGroupControl(); + ErrorProvider errorProvider = GetErrorProvider(resultControl); + Assert.IsEmpty(errorProvider.GetError(resultControl)); + + ErrorProvider warningProvider = GetWarningProvider(resultControl); + Assert.IsEmpty(warningProvider.GetError(resultControl)); + + // When + view.HasManualSectionAssemblyResults = true; + view.ThrowExceptionOnUpdate = true; + sectionResult.NotifyObservers(); + + // Then + Assert.AreEqual("Message", errorProvider.GetError(resultControl)); + Assert.AreEqual("Toetsoordeel is (deels) gebaseerd op handmatig overschreven toetsoordelen.", warningProvider.GetError(resultControl)); + } + } + + [Test] public void GivenFailureMechanismResultsView_WhenFailureMechanismAssemblyControlUpdated_ThenDataCleared() { // Given @@ -377,7 +436,7 @@ } [Test] - public void GivenFailureMechanismResultsViewWithFailureMechanismAssemblyError_WhenNoExceptionThrownDuringUpdate_ThenErrorCleared() + public void GivenFailureMechanismResultsViewWithMessages_WhenNoExceptionThrownAndManualSectionAssemblyResultsFalseDuringUpdate_ThenMessagesCleared() { // Given TestFailureMechanismSectionResult sectionResult = FailureMechanismSectionResultTestFactory.CreateFailureMechanismSectionResult(); @@ -390,19 +449,25 @@ using (TestFailureMechanismResultView view = ShowFailureMechanismResultsView(sectionResults)) { view.ThrowExceptionOnUpdate = true; + view.HasManualSectionAssemblyResults = true; sectionResult.NotifyObservers(); // Precondition TestAssemblyResultControl resultControl = GetFailureMechanismAssemblyCategoryGroupControl(); ErrorProvider errorProvider = GetErrorProvider(resultControl); Assert.AreEqual("Message", errorProvider.GetError(resultControl)); + ErrorProvider warningProvider = GetWarningProvider(resultControl); + Assert.AreEqual("Toetsoordeel is (deels) gebaseerd op handmatig overschreven toetsoordelen.", warningProvider.GetError(resultControl)); + // When view.ThrowExceptionOnUpdate = false; + view.HasManualSectionAssemblyResults = false; sectionResult.NotifyObservers(); // Then Assert.IsEmpty(errorProvider.GetError(resultControl)); + Assert.IsEmpty(warningProvider.GetError(resultControl)); } } @@ -490,6 +555,11 @@ return TypeUtils.GetField(resultControl, "errorProvider"); } + private static ErrorProvider GetWarningProvider(TestAssemblyResultControl resultControl) + { + return TypeUtils.GetField(resultControl, "warningProvider"); + } + private static TestAssemblyResultControl GetFailureMechanismAssemblyCategoryGroupControl() { return (TestAssemblyResultControl) new ControlTester("AssemblyResultControl").TheObject; @@ -517,6 +587,8 @@ public bool AssemblyResultControlUpdated { get; set; } + public bool HasManualSectionAssemblyResults { private get; set; } + protected override FailureMechanismSectionResultRow CreateFailureMechanismSectionResultRow( FailureMechanismSectionResult sectionResult) { @@ -537,6 +609,11 @@ AssemblyResultControlUpdated = true; } + + protected override bool HasManualAssemblyResults() + { + return HasManualSectionAssemblyResults; + } } private class TestAssemblyResultControl : AssemblyResultControl {}